0.安装的环境说明

    本次安装的php的图解如下,Nginx和php在同一个服务器上,MySQL单独一个服务器。前面已经说了如何去搭建Nginx服务,如何配置虚拟主机,MySQL也在之前的博文说到安装。以后再整理一份完整的LNMP搭建的博客。

blob.png

    检查Nginx和MySQL的安装情况,确认两者都已经安装了,并且能够正常运行。下面安装php需要的类库工具。

blob.pngblob.png


1.安装前的准备

    本次安装php是为了搭建lnmp环境,其中Nginx+php在同一个主机,MySQL单独一个主机。在前面已经把Nginx和MySQL搭建好了,这里在Nginx服务器上安装php。本次安装php的版本是5.6,在安装之前需要确认安装一些的库文件。

    (1)安装php所需的lib库

rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
rpm -qa freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

    注:每个lib一般都会存在一个以"devel"命名的包,安装这个"devel"的包,对应的lib也会安装好了,所以这里只需要检查安装devel的包的情况。

    如果没有安装,请使用yum来安装

yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
yum install -y freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

    如无意外,上面的这些包除了libiconv-devel没有成功安装之外,都能够正常安装,如果这些包安装出错的请根据提示信息自行百度,libiconv-devel需要自行编译安装。从网上下载的源码包为“libiconv-1.15.tar.gz”,解压之后编译安装:

tar -xf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/usr/local/libiconv 
make 
make install

    (2)使用epelyum源来安装libmcrypt库、mhash加密拓展库和mcrypt加密拓展库

    在CentOS默认的yum源里面没有上面提到的这些库文件,因此需要实现配置epel第三方yum源,不然使用编译安装的办法会比较麻烦

 yum install epel-release    #可以直接用命令安装epel源
 wget -O /etc/yum.repos.d/epel.repo    #也可以直接下载epel的yum源文件

    安装对应的类库

yum install -y libmcrypt-devel    #动态加载的模块
yum install -y mhash              #基于离散数学原理的不可逆的PHP加密方式拓展库
yum install -y mcrypt             #实现加密解密的功能

2.开始安装PHP(FASTCGI)服务

    从php官网下载的版本是"php-5.6.31.tar.gz",当然也有更新版本的。解压之后编译安装。

tar -xf php-5.6.31.tar.gz
 ./configure --prefix=/usr/local/php5.6.31 --with-mysql --with-pdo-mysql  -with-mysqli  --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr/ --enable-xml --disable-rpath  --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization  --with-curl  --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets   --with-xmlrpc --enable-zip --enable-soap --enable-short-tags  --enable-static --with-xsl --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp --with-iconv=/usr/local/libiconv

    编译成功的话,会出现以下的提示。如果失败了,请根据具体的提示解答。

blob.png

    其中,下面说明部分的编译参数说明

参数说明
--prefix=/usr/local/php5.6.31指定安装的位置
--with-mysql --with-pdo-mysql  -with-mysqli安装php需要的mysql内容,如果是lnmp在同一主机上,用--with-mysql="mysql的安装路径"
--with-fpm-user=nginx指定php-fpm的进程用户为nginx,group的同理
--enable-fpm激活php-fpm方式服务
--with-iconv=/usr/local/libiconv指定iconv的路径(之前编译出错几次都是因为没有指定这个参数)

    安装php,这样php就安装成功了。

make
make install

3.配置php的配置文件php.ini

    在php的安装包解压路径下,找到php.ini的模版文件,可以看到有两个文件。

blob.png

    在这里我们使用后面的那个,production的。把这个文件复制到php目录下,然后改名为php.ini

cp php.ini-production /usr/local/php5.6.31/lib/php.ini

    配置php-fpm.conf,这里直接用php-fpm.conf.default模版

cd /usr/local/php5.6.31/etc/
cp php-fpm.conf.default php-fpm.conf

4.启动php服务(FastCGI方式)

    检查配置文件有没有错误,没有的话启动php

/usr/local/php5.6.31/sbin/php-fpm -t
/usr/local/php5.6.31/sbin/php-fpm

blob.png

    检查端口,9000的端口是否已经启动,启动了的话,那就可以了。

blob.png

5.配置Nginx支持php程序访问

    在之前的www.conf虚拟主机的配置文件里面加入php的解析 

 15      location ~ .*\.(php|php5)?$ {
 16         root html/www;
 17         fastcgi_pass 127.0.0.1:9000;
 18         fastcgi_index index.php;
 19         include fastcgi.conf;
 20     }

完整的配置如下图:

blob.png

    检查并启动Nginx

blob.png

6.测试LNMP是否起效。

    (1)测试php解析

    进入到www的站点,添加一个文件index.php

echo "<?php phpinfo(); ?>" >html/www/index.php

blob.png

    在浏览器上输入网址验证,得到下图的页面就是OK了。也可以在linux用links工具: links www.pcm.com/index.php

blob.png

    (2)测试php连接MySQL的情况

    同样在www的目录下新建一个test_mysql.php的文件,加入以下的内容:

<?php
	$link_id=mysql_connect('192.168.31.52','root','pcm123456') or mysql_error();
	if ($link_id){
		echo "mysqld successful by pcm!";
	}else{
		echo mysql_error();
	}
?>

    浏览器打开这个页面得到结果如下,这个表示成功了,到这里LNMP就搭建成功了。

blob.png

    如果出现错误的提示如下,那就是数据库那里没有给到权限。

blob.png

    登陆数据库服务器,然后添加一个root账号,允许192.168.31.10主机访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.31.10' IDENTIFIED BY 'pcm123456'; 
flush privileges ;