部署LNMP
在Nginx中,我们使用的是php-fpm来对php页面解析,PHP-FPM其实是PHP源代码的一个补丁,指在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,再编译安装PHP后才可以使用。
从PHP5.3.3开始,PHP中直接整合了PHP-FPM,所以从PHP5.3.3版本以后,不需要下载PHP-FPM补丁包了
安装依赖:
[root@wzy ~]# yum -y install gcc autoconf freetype gd libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel freetype-devel libjpeg-devel bzip2 bzip2-devel openssl openssl-devel
安装libmcrypt
上传libmcrypt软件包和php软件包
[root@ wzy ~]# ls
anaconda-ks.cfg libmcrypt-2.5.7.tar.gz nginx-1.10.3.tar.gz php-5.6.36.tar.gz
[root@ wzy ~]# tar zxf libmcrypt-2.5.7.tar.gz
[root@ wzy ~]# cd libmcrypt-2.5.7/
[root@ wzy libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
解压PHP包
[root@ wzy ~]# tar -zxvf php-5.6.36.tar.gz -C /usr/local/src/
安装php
预编译
[root@ wzy ~]# cd /usr/local/src/php-5.6.36/
[root@ wzy php-5.6.36]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/usr/local/php5.6/etc/ --with-bz2 --enable-maintainer-zts
参数选项:
--prefix=/usr/local/php5.6 //安装位置
--with-mysql=mysqlnd //支持mysql
--with-pdo-mysql=mysqlnd //支持pdo模块
--with-mysqli=mysqlnd //支持mysqli模块
注:上面的三选项的作用:数据库与php不在一个服务器上,指定此种方式,安装数据库连接驱动
--enable-mbstring #多字节字符串的支持
--with-curl #支持CURL
--with-gd #支持gd库
--enable-fpm #支持构建fpm
--with-config-file-path #设置配置文件路径
--with-openssl #支持openssl模块
--enable-sockets #启用socket支持
--enable-sysvshm #启用系统共享内存支持
--enable-mbstring #多字节字串、像我们的中文就是多字节字串
--with-freetype-dir #支持freetype、就要装freetype-devel、跟字体相关的、字体解析工具
--with-jpeg-dir
--with-png-dir
注:上面的二选项的作用:处理jpeg、png图片的、php可以动态生成jpeg图片
--with-zlib #是个压缩库、在互联网传输时用来压缩传输的
--with-libxml-dir=/usr #这个libxml是用来解析xml的、指定/usr下
--enable-xml #支持xml的
--with-mhash #支持mhash
--with-mcrypt=/usr/local/libmcrypt #libmcrypt-devel这个程序包所指定的
--with-config-file-path=/usr/local/php5.6/etc #指定配置文件的存放路径的
--with-config-file-scan-dir=/etc/php.d #配置文件扫描路径
--with-bz2 #支持BZip2
编译
[root@ wzy php-5.6.36]# make
安装
[root@ wzy php-5.6.36]# make install
生成php.ini配置文件
[root@ wzy ~]# cp /usr/local/src/php-5.6.36/php.ini-production /usr/local/php5.6/etc/php.ini
修改fpm配置php-fpm.conf.default文件名称
[root@ wzy ~]# cd /usr/local/php5.6/etc/
[root@ wzy etc]# cp php-fpm.conf.default php-fpm.conf
修改默认运行账号
修改默认运行用户,组为www
[root@ wzy etc]# vim php-fpm.conf
user = www #nginx程序用户
group = www #nginx用户组
pid = run/php-fpm.pid
listen = 0.0.0.0:9000
pm.max_children =300 #fpm最大进程数
pm.start_servers =20 #fpm服务启动时开启进程数量
pm.min_spare_servers = 20 #fpm的最小空闲进程数量
pm.max_spare_servers = 100 #fpm的最大空闲进程数量
复制php-fpm启动脚本到init.d
[root@ wzy ~]# cp /usr/local/src/php-5.6.36/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
赋予执行权限
[root@ wzy ~]# chmod +x /etc/init.d/php-fpm
添加开机启动
[root@ wzy ~]# chkconfig --add php-fpm
[root@ wzy ~]# chkconfig php-fpm on
启动服务
[root@ wzy ~]# /etc/init.d/php-fpm start
查看端口监听状态
[root@wzy ~]# netstat -antpu | grep php-fpm
在nginx.conf文件的server中添加下面内容支持php
location / {
root /var/www/html;
index index.php index.html index.htm; #添加index.php
}
location ~ .*\.(php|php5)?$ {
root /var/www/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
创建index.php文件
[root@wzy]# vi /var/www/html/index.php
<?php
phpinfo();
?>
[root@wzy]# vi /var/www/html/test.php
<?php
$link=mysql_connect('192.168.10.6','test','123456'); #另一台虚拟机IP和MySQL中的用户和密码
if ($link)echo "connection success......";
mysql_close();
?>
创建mysql测试账号
192.168.10.6为源码安装mysql,创建授权test账号
[root@wzy2 ~]# mysql -uroot -p123456
mysql> grant all on *.* to test@'%' identified by '123456';
mysql> flush privileges;
测试
http://192.168.10.4
http://192.168.10.4/test.php