lnmp超详细编译安装教程

linux采用的是centos,软件包统一放在/usr/local/src目录下.由于 centos源比较老,而且更新起来也比较慢,此处建议你换成163源。提示:如果你真打算采用这种编译安装php的话,请至少安排半天时间来完成。如果是在虚拟机里测试的话,建议调大内存以让时间更短,我本机给了虚拟机2G内存。在安装完成后可以再设置小点内存跑.安装的时候请按顺序安装。

更改yum源

#更换到163源
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS6-Base-163.repo CentOS-Base.repo #先更新一下
yum clean all
yum makecache
yum update(这步比较慢,建议先不要运行)

准备lnmp安装环境

先采用yum包安装一些依赖的东西

yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers make cmake libtool* git tree

下载一些软件都放在/usr/local/src下

安装libiconv

cd /usr/local/src
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14/
./configure --prefix=/usr/local
make && make install

在我make && make install的时候出现错误了error: ‘gets’ undeclared here (not in a function)。如果你不要遇到遇到,如果遇到请做如下修改:(国外的这文章记录了http://www.itkb.ro/kb/linux/patch-libiconv-pentru-glibc-216)

cd libiconv-1.14/srclib

编辑stdio.in.h文件,搜索这句话

_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

把这句删除换成如下几句

#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif

然后

cd ..
make && make install

下载并安装libmcrypt

cd /usr/local/src
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make
make install
cd libltdl/
./configure --enable-ltdl-install
make
make install

下载并安装mbash 网址:http://mhash.sourceforge.net/,下载下来之后用winscp这种工具传到linux的/usr/local/src目录下

cd /usr/local/src
tar -jxvf mhash-0.9.9.9.tar.bz2
cd mhash-0.9.9.9
./configure
make
make install

下载并安装mcript

cd /usr/local/src
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/ #注意一下这步运行下,不然下面可能报错
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ./configure
make
make install
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

安装mysql(mysql5.6.13)

先检查一下mysql是否已经存在了,如果存在就删除mysql

rpm -qa | grep mysql
#我的显示如下(如果没有任何显示就表示没有mysql呢)
mysql-libs-5.1.73-3.el6_5.i686
#如果存在就卸载mysql
rpm -e mysql-libs-5.1.73-3.el6_5.i686 --nodeps
#此时再运行
rpm -qa | grep mysql
#发现没有任何显示

添加一个mysql用户(nologin用户并且没有家目录)

useradd -M -s /sbin/nologin mysql

初次编译mysql的时候时间比较长,请耐心等待吧

cd /usr/local/src
tar -zxf mysql-5.6.13.tar.gz
cd mysql-5.6.13
#注意下面是cmake .注意点
cmake .
make && make install
#复制mysql配置文件
cp support-files/my-default.cnf /etc/my.cnf
#创建系统数据库表
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql
#更改权限
cd /usr/local/mysql
chown -R root:mysql .
chown -R mysql:mysql data #把mysql添加到系统服务中去
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#启动mysql启动的时候,一直不动的话按下enter.,就行了
/usr/local/mysql/bin/mysqld_safe --user=mysql &
#查看mysql是否启动
netstat -tunpl | grep 3306
#或者pstree,看到有mysqld进程也行
#修改mysql密码
/usr/local/mysql/bin/mysqladmin -u root password "xxxxx"
#进入mysql中删除空密码和匿名用户
/usr/local/mysql/bin/mysql -u root -p
select host,user,password from mysql.user;
delete from mysql.user where password="" or user="";
flush privileges;
#也可以在mysql修改用户密码(只是说明一下)
set password form 'root'@'localhost' = password('123456');
#关闭mysql的时候可以使用
/usr/local/mysql/bin/mysqladmin -u root -p shutdown #把mysql添加到开机启动
vim /etc/rc.local
#在最后再加一行
/usr/local/mysql/bin/mysqld_safe --user=mysql & #最后做一个软链接方便使用mysql ln -s /usr/local/mysql/bin/mysql /usr/bin/

nginx安装(此处我本人安装了基于nginx改版的tengine,nginx的安装跟这基本完全一样,你完全可以参照并完整安装)

nginx安装前编译安装pcre zlib openssl[openssl安装用./config]

pcre安装

cd /usr/local/src
tar -jxf pcre-8.31.tar.bz2
cd pcre-8.31
./configure
make && make install

zlib安装

cd /usr/local/src
tar -zxf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make && make install

openssl安装

cd /usr/local/src
tar -zxf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config
make && make install

//注意这时我安装tengine了,如果你用nginx,完全参照安装就行

cd /usr/local/src
useradd -M -s /sbin/nologin nginx
#如果是nginx,请把这里换成nginx
tar -zxf tengine-2.0.1.tar.gz
cd tengine-2.0.1
#注意的是with-pcre这些都指向/usr/local/src这种目录,这非常奇怪
./configure --with-pcre=/usr/local/src/pcre-8.31 --with-http_ssl_module --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c --with-http_concat_module=shared(注:如果是nginx的话不需要 --with-http_concat_module=shared) make && make install
#做软链接方便nginx启动
ln -s /usr/local/nginx/sbin/nginx /usr/bin/
#修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
把#user nobody 改成 user nginx;
#测试一下nginx配置文件
nginx -t
#启动nginx
nginx #说一下nginx启动的一些事情
#一般来说在nginx的配置文件修改后进行如下操作,nginx -t检测一下配置文件是否正确,如果正确的话
#再使用nginx -s reload 使nginx平滑启动 #把nginx添加到开机启动
vim /etc/rc.local
#在最后新加一行
/usr/local/nginx/sbin/nginx
#查看nginx是否启动
netstat -tunpl | grep 80
pstree 看下有没有nginx就行了

安装php

cd /usr/local/src
useradd -M -s /sbin/nologin php
tar -jxf php-5.5.12.tar.bz2
cd php-5.5.12 ./configure --enable-opcache --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring=all --with-pdo-mysql --enable-sockets --enable-mbstring --enable-fpm --with-curl --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-gd --with-mcrypt --with-libxml-dir=/usr --enable-xml --with-openssl --with-iconv=/usr/local/iconv make ZEND_EXTRA_LIBS='-liconv'
make install cp php.ini-development /usr/local/php/etc/php.ini #配置php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf

user = nobody
group = nobody
改为
user = php
group = php
#启动php-fpm
/usr/local/php/sbin/php-fpm
#把php-fpm添加到开机启动
vim /etc/rc.local
#最后一行加上
/usr/local/php/sbin/php-fpm
#修改nginx配置文件使之支持php
vim /usr/local/nginx/conf/nginx.conf
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
修改为
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} #也顺便把gzip给开启下吧
gzip on前面的#去掉 修改完配置之后
nginx -s reload

ok,现在来测试一下环境

cd /usr/local/nginx
cd html
vim test.php
写上
<?php
phpinfo();

然后访问一下localhost/test.php,正常的话,就一切正常了

如果出问题的话,请看nginx有没有启动,php-fpm有没有启动

注明几个问题如果修改php配置文件的时候,需要重启php-fpm就可以了

#先关闭php-fpm

pkill php-fpm 

#然后运行

/usr/local/php/sbin/php-fpm

#就可以了可以看到php-fpm就启动了pstree可以看到这个进程
pstree

为了更方便的使用php和php-fpm,我做了两个链链接

ln -s /usr/local/php/sbin/php-fpm /usr/bin/
ln -s /usr/local/php/bin/php /usr/bin/

lnmp安装就彻底完成了,有什么问题可以联系我。[这里没没讲到如何优化一些配置的问题,以后可以会写文章分析]

在些也特别说明一下nginx如何支持path_info这种形式。配置文件中可以这样写。当然可能对你不需要

    location ~ ^(.+\.php)(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
 

lnmp编译安装的更多相关文章

  1. LNMP编译安装教程

    LNMP编译安装教程 此次安装在Centos上,我采用的CentOS的版本是:CentOS release 6.5 (Final) 可以通过以下命令查看:lsb_release -a 一.准备工作: ...

  2. LNMP编译安装(centos7+nginx1.9+mysql5.6+php5.5)

    LNMP编译安装 # 需先配置IP # 软件包的路径 /usr/local/src yum install -y libjpeg-devel libpng-devel freetype-devel c ...

  3. linux lnmp编译安装

    关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled ...

  4. LNMP编译安装基于centos7.2

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

  5. CentOS6.8 x64+Nginx1.3.8/Apache-httpd 2.4.3+PHP5.4.8(php-fpm)+MySQL5.5.28+CoreSeek4.1源码编译安装

    系统为CentOS6.8 x64服务器版精简安装. 准备工作 部署安装目录 /usr/local/* /var/lib/* /var/lib64/* 下载源文件 #cd /usr/local/src ...

  6. centos下编译安装lnmp

    centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...

  7. 在树莓派1B上编译安装lnmp服务器

    最近一周给部门内部搭建考试系统,选择使用PHPEMS.这是个开源的系统,唯一缺点是PHP的版本比较低,只能使用5.2或5.3.而我的树莓派系统更新后使用apt-get安装得到的PHP版本为5.4.由于 ...

  8. CentOS编译安装LNMP环境

    这里是教大家如何在centos下利用源码编译安装LNMP环境. 工具/原料 centos服务器一台 自用电脑一台 准备篇 配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 配置防火墙,开 ...

  9. LNMP之编译安装PHP出现的问题

    2010年以前,互联网公司最常用的Web服务组合就是LAMP(即Linux.Apache.MySQL.PHP),近几年随着Nginx Web服务的逐渐流行,又出现了新的Web服务环境组合--LNMP ...

随机推荐

  1. Python入门3

    字典 字典四种创建方法: 1. dic = dict() print(dic) # 相当于 dic1 = {} print(dic1) # 输出 {} {} 2. dic = dict(one=1, ...

  2. 【java】org.apache.commons.lang3功能示例

    org.apache.commons.lang3功能示例 package com.simple.test; import java.util.Date; import java.util.Iterat ...

  3. EL总结

    El: 1.el表达式语言(是什么) 2.el是书写到jsp页面 3.el语法格式${ } 4.el算数运算(+,-,*,/,%), 逻辑运算(&&,||,!), 关系运算(>, ...

  4. JS常用工具函数

    /** * Created by gaojun-pd on 2016/10/27. */ var Util = { /** * 1.判断非空 * 2.获取字符串真实长度 汉字算两位 * 3.判断参数类 ...

  5. 在.htaccess文件中写RewriteRule无效的问题的解决

    近来在Apache Rewrite 拟静态配置时,遇到个问题.写的如下: RewriteEngine onRewriteRule ^/t_(.*)/$ /test.php?id=$1 保存在httpd ...

  6. Django 之 models的 F() 和 Q() 函数

    前提: app名称为core,models.py 如下: #coding: utf8 import datetime from django.db import models class Order( ...

  7. 让reddit/r/programming炸锅的一个帖子,还是挺有意思的

    这是原帖 http://www.reddit.com/r/programming/comments/358tnp/five_programming_problems_every_software_en ...

  8. Magic xpa 2.5发布 Magic xpa 2.5 Release Notes

    Magic xpa 2.5發佈 Magic xpa 2.5 Release Notes Magic xpa 2.5 Release NotesNew Features, Feature Enhance ...

  9. 用MyEclipse自动生成SessionFactory文件

    1.Hibernate1->MyEclipse->Capabilities->Install Hibernate Facet.如图所示. 2.选择Hibernate的版本. 3.创建 ...

  10. 初识Lucene.net

    最近想提高下自己的能力,也是由于自己的项目中需要用到Lucene,所以开始接触这门富有挑战又充满新奇的技术.. 刚刚开始,只是写了个小小的demo,用了用lucene,确实很好   创建索引 Data ...