0.安装的环境说明
本次安装的php的图解如下,Nginx和php在同一个服务器上,MySQL单独一个服务器。前面已经说了如何去搭建Nginx服务,如何配置虚拟主机,MySQL也在之前的博文说到安装。以后再整理一份完整的LNMP搭建的博客。
检查Nginx和MySQL的安装情况,确认两者都已经安装了,并且能够正常运行。下面安装php需要的类库工具。
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
编译成功的话,会出现以下的提示。如果失败了,请根据具体的提示解答。
其中,下面说明部分的编译参数说明
参数 | 说明 |
--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的模版文件,可以看到有两个文件。
在这里我们使用后面的那个,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
检查端口,9000的端口是否已经启动,启动了的话,那就可以了。
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 }
完整的配置如下图:
检查并启动Nginx
6.测试LNMP是否起效。
(1)测试php解析
进入到www的站点,添加一个文件index.php
echo "<?php phpinfo(); ?>" >html/www/index.php
在浏览器上输入网址验证,得到下图的页面就是OK了。也可以在linux用links工具: links www.pcm.com/index.php
(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就搭建成功了。
如果出现错误的提示如下,那就是数据库那里没有给到权限。
登陆数据库服务器,然后添加一个root账号,允许192.168.31.10主机访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.31.10' IDENTIFIED BY 'pcm123456'; flush privileges ;
原文地址:http://blog.51cto.com/superpcm/2092800