LNMP:nginx + php + mysql 手动安装的详细方法,lnmpnginx


nginx读音“Engine X”,接下来我们说的LNMP套装(也有人称为LEMP,取Engine之意),也即Linux + Nginx + MySQL + PHP,安装起来需要注意的环节较多。

ps:尽管网上有许多傻瓜式的LNEP一键安装包,但是我还是强烈建议用纯手工的办法体验一次LNEP的安装,出于学习的目的,这个安装流程会衍生许多Linux下的知识点,而这些知识点都是对我们很有用的。

一. 首先是编译安装Nginx

1.1 第一步是先把nginx需要的环境给搭上:

好在这些东西用yum都能很容易做到:

#yum install gcc-c++

#yum install -y pcre pcre-devel

#yum install -y zlib zlib-devel

#yum install -y openssl openssl-devel

1.2 下载nginx安装包

找到合适的安装包后,用鼠标右键点下载链接,复制下它的地址,然后粘贴到puTTY之类的控制台里面,

先创建一个目录统一存放这些临时安装包,比如

#mkdir src

#cd src

#wget -c https://nginx.org/download/nginx-1.11.1.tar.gz (我这里目前最新是1.11.1版本,以后可能会变,总之以实际为准)

#tar -zxvf nginx-1.11.1.tar.gz (解开压缩包)

#cd nginx-1.11.1

./configure (首先制作配置文件,后面不带任何参数即为默认配置,这一步必须要保证没有任何错误发生,否则接下来无法make编译)

刷刷刷刷屏幕会滚动半天,检测没有任何问题后,接下来开始编译:

#make

#make install

因为是默认配置,所以一般来说也不会出现什么问题,除非之前的环境没有搭建好。

装好后,可以用:

#whereis nginx (查看nginx装在了什么位置)

至此,编译安装结束。

1.3 启动、停止、重启nginx

#/usr/local/nginx/sbin/nginx (启动nginx)

#/usr/local/nginx/sbin/nginx -s quit (停止nginx,此方式停止步骤是待nginx进程处理任务完毕进行停止。)

#/usr/local/nginx/sbin/nginx -s stop (停止nginx,此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。)

#/usr/local/nginx/sbin/nginx -s reload (重启nginx)

这一步有时候会出现问题,说是找不到nginx.pid之类的,我们可以用这个办法去解决:

#/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (强制nginx以指定设置文件启动)

1.4 开机自启动

即在rc.local增加启动代码就可以了。

#vim /etc/rc.local

增加一行 /usr/local/nginx/sbin/nginx

设置执行权限:

#chmod 755 rc.local

1.5 测试nginx是否安装成功?

跟Apache一样,直接到浏览器输入https://ip即可,例如https://127.0.0.1

如果安装成功将会显示一个很简单的“Welcome to nginx!”欢迎页面。

接下来我们安装PHP,但在安装之前我强烈建议先装Mysql, 否则将会产生一系列莫名其妙的问题!

二. 编译安装PHP

2.1 卸载PHP

在安装PHP之前,需要先卸载之前安装的旧版PHP,很多CentOS服务器上都预装了PHP5.X,版本过于老旧,所以第一步是彻底把这些老顽固清理出去。

第一步是常规卸载:

#yum remove php

这么做其实并不干净,因为输入php -v,还是能显示php的版本号,所以并没有真正删除干净。

继续:

#rpm -qa|grep php (用这个命令去抓取与PHP相关的东西)

提示如下:

php-pdo-5.1.6-27.el5_5.3

php-mysql-5.1.6-27.el5_5.3

php-xml-5.1.6-27.el5_5.3

php-cli-5.1.6-27.el5_5.3

php-common-5.1.6-27.el5_5.3

正确的卸载顺序是:

#rpm -e php-mysql-5.1.6-27.el5_5.3

#rpm -e php-pdo-5.1.6-27.el5_5.3

#rpm -e php-xml-5.1.6-27.el5_5.3

#rpm -e php-cli-5.1.6-27.el5_5.3

#rpm -e php-gd-5.1.6-27.el5_5.3

#rpm -e php-common-5.1.6-27.el5_5.3

再用#php -v

查看版本信息已经没有提示。

2.2 编译安装PHP

2.2.1 这个流程跟刚才装nginx差不多,第一步也是去官网找下载链接:https://php.net/downloads.php

#cd /src (回到我们放源码的目录)

#wget -c https://php.net/get/php-7.1.11.tar.gz/from/a/mirror(注意要选.gz为后缀的版本)

#tar xzvf php-7.1.11.tar.gz

#cd php-7.1.11

然后安装各种扩展库:

#yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel MySQL pcre-devel

#yum -y install curl-devel

#yum -y install libxslt-devel

以上几个扩展库可以使用yum直接安装,不麻烦,但是 libmcrypt、mcrypt、mhash这三个就有点让人头疼了:

第1步,需要去下载安装包:

这是我抓到的绝对地址,不排除以后会变,但貌似从2008年开始这东西就没更新过,所以应该一直能用。

复制代码第2步,先安装Libmcrypt

#tar -zxvf libmcrypt-2.5.8.tar.gz

#cd libmcrypt-2.5.8

#./configure

#make

#make install 说明:libmcript默认安装在/usr/local

第3步,安装mhash

#tar -zxvf mhash-0.9.9.9.tar.gz

#cd mhash-0.9.9.9

#./configure

#make

#make install

第4步,安装mcrypt

#tar -zxvf mcrypt-2.6.8.tar.gz

#cd mcrypt-2.6.8

#LD_LIBRARY_PATH=/usr/local/lib ./configure

#make

#make install

至此,PHP需要的扩展环境基本上就搭好了,下面开始正式编译安装:

大家还记得前面见过多次的那个./configure命令吗,

之前的所有安装包括nginx,都是不带任何参数的,但是php就不一样了,他需要一个极长的安装参数行,

注意以下指令是一个很长的整行,需要一次性粘贴到puTTY里面,中间不能断行,否则会报错。

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-pdo-mysql --with-mysqli --with-gd --with-zlib --with-mcrypt --enable-fpm --enable-soap--enable-mbstring=all--enable-sockets

稍微解释一下这条配置行的含义,只讲几个比较重要的:

--prefix=/usr/local/php : 表示将php安装到/usr/local/php目录

--with-config-file-path=/usr/local/php/etc : 表示将php配置文件存放在/usr/local/php/etc

-with-pdo-mysql : 需要安装mysql原生模块

--with-mysqli : 需要安装mysql 增强模块

--enable-fpm : 需要安装fpm模块,这个很重要,需要它才能打通nginx

剩下的都是一些基本库,比如说gd,zlib、mbstring之类,就不再一 一解释了。

输入这条超长的指令后,屏幕开始滚动,时间在半分钟左右,跟之前那些比起来,算是比较长的,并且要求中途不能有任何错误发生,如果有错误产生,那么根本没办法执行接下来的make指令,这个环节有可能会产生很多问题,不是那么容易解决的,但99%都是因为扩展没有安装好,总之,在我的服务器上,经过上述的各种安装包,我是可以保证无错误产生的,至于在你的机器上如何,这个因为初始环境不同,并不好下结论,总之尽量把扩展都安装齐全,系统缺少什么他都会报告出来,根据关键字去顺藤摸瓜并想办法安装上就是了。

如果没有任何问题,即不报error之类(warning不算),那么我们就可以开始编译了,很简单就一条指令:

#make && make install

然后屏幕开始翻滚,这个过程非常漫长,大概会在半个小时之后完成。

屏幕滚完(编译完)之后,我们开始编辑设置文件:

1.修改php.ini

cd /usr/local/php

vim php.ini

找到:cgi.fix_pathinfo

改为:

cgi.fix_pathinfo=0

存盘退出。

2. 然后修改php-fpm.conf

cd /usr/local/php/etc

vim php-fpm.conf

找到:pid = run/php-fpm.pid

把前面的;号去掉(取消注释)就行了。

存盘退出。

3. 修改www.conf

cd /usr/local/etc/php-fpm.d (注意这个文件并不在php目录下)

vim www.conf

修改:

user = www

group = www

listen = 127.0.0.1:9000

存盘退出。

4. 修改nginx.conf (修改这个相当于就把nginx和php-fpm连通了)

cd /usr/local/nginx/conf

vim nginx.conf (nginx在运行着的时候,会出现权限冲突,不管他,直接按E,强制修改)

找到:

server {

listen 80;

server_namelocalhost;

#charset koi8-r;

#access_loglogs/host.access.logmain;

location / {

root html;

indexindex.html index.htm;

}

然后在下面添加:

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

存盘退出。

另外还要在系统中添加一个组和一个账号,执行以下命令:

#groupadd www

#useradd -g www www

至此文件修改结束。

第五步:启动php-fpm和nginx

1. 首先启动php-fpm

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

2. 然后启动nginx

#/usr/local/nginx/sbin/nginx

如果没有报错,就可以进行下一步了,这个地方报错的可能性也比较大,多半都是因为上面4个文件没有设置好导致,

网上的教程关于这四个文件的设置也是五花八门各种各样的都有,让人无所适从,实在乱套了,也没关系,

几乎每个设置文件的目录下都有一个默认设置文件备份,改得太乱大不了重新恢复到原始状态再重新折腾即可,例如:

#cp nginx.conf.default nginx.conf (这样就恢复原样了)

第六步:

即使上一步没有任何报错,也不见得php文件就能顺利运行,因此我们还需要进行有效的测试:

1. 去nginx的主目录下创建一个php测试文件

cd /usr/local/nginx/html

vim test.php

内容只有一行:

存盘退出。

然后去浏览器里输入https://ip/test.php

如果安装成功,会出现一个内容很丰富的PHP探针页面,否则直接报错,服务器会报500或404错误。至于为什么报错,不太好说,以上任何一个环节出问题都有可能导致,但关注点主要还是在那四个文件的修改上面.另外一点就是前面的编译安装,千万不要有“妥协”的心态,比如某个扩展没装好,干脆就跳过它,直接不装了进入到下一步的话,也很难说会不会出问题。

相关内容