标签:
搭建lnmp环境时,需要先安装mysql,再安装php,而nginx安装顺序无所谓,nginx与php之间的联系需要手动配置
一.php下载和配置“安装环境“
[root@huh ~]# cd /usr/local/src/
[root@huh src]# wget http://cn2.php.net/distributions/php-5.4.37.tar.bz2
[root@huh src]# tar jxvf php-5.4.37.tar.bz2
[root@huh src]# cd php-5.4.37
[root@huh php-5.4.37]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --enable-zend-multibyte --disable-ipv6 --with-pear --with-curl --with-openssl
注:1.--prefix 指定安装路径
2.--with-config-file-path 设置php.ini的搜索路径
3.--with-fpm-user fpm运行的用户,默认为nobody
4.--with-fpm-group fpm运行的组,默认为nobody
5.--with-mysql 指定mysql的安装路径
6.--with-mysql-sock 指定mysql监听的mysql.sock程序在哪
7.--with-libxml-dir 用于指定安装libxml2库文件的位置。
期间,会有报错情况:
#错误1:
configure: error: jpeglib.h not found.
#解决办法:
[root@huh php-5.4.37]# yum install libjpeg-turbo-devel
#错误2:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
需要我们先安装epel的源,然后去安装
下载安装epel:
[root@huh php-5.4.37]# wget www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
[root@huh php-5.4.37]# rpm -ivh epel-release-6-8_32.noarch.rpm
安装libmcrypt:
[root@huh php-5.4.37]# yum install -y libmcrypt-devel
若还有其它错误,原因也是某些包没有安装,可以百度解决。
二.创建用户php-fpm
[root@huh php-5.4.37]# useradd -s /sbin/nologin php-fpm
三.php编译和安装
[root@huh php-5.4.37]# make [root@huh php-5.4.37]# echo $? 0 [root@huh php-5.4.37]# make install [root@huh php-5.4.37]# echo $? 0
四. 拷贝配置文件,启动脚本,php-fpm.conf配置文件
拷贝配置文件:
[root@huh php-5.4.37]# cp php.ini-production /usr/local/php/etc/php.ini
拷贝启动脚本:
[root@huh php-5.4.37]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@huh php-5.4.37]# chmod 755 /etc/init.d/php-fpm
拷贝php-fpm.conf配置文件
[root@huh php-5.4.37]# cd /usr/local/php/etc/ [root@huh etc]# mv php-fpm.conf.default php-fpm.conf
五.将php服务添加到系统服务,并设为开机自启,启动程序
[root@huh etc]# chkconfig --add php-fpm [root@huh etc]# chkconfig php-fpm on
[root@huh etc]# /usr/local/php/sbin/php-fpm -t
[29-Jan-2016 04:30:26] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful
[root@huh etc]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@huh etc]# /etc/init.d/php-fpm reload
Reload service php-fpm done
注:/usr/local/php/sbin/php-fpm -t 可以检查php配置有没有错误
查看php-fpm进程好和监听端口号:
[root@huh etc]# ps aux |grep php-fpm root 16343 0.0 0.2 29748 2976 ? Ss 04:33 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) php-fpm 16344 0.0 0.2 29748 2648 ? S 04:33 0:00 php-fpm: pool www php-fpm 16345 0.0 0.2 29748 2648 ? S 04:33 0:00 php-fpm: pool www root 16349 0.0 0.0 6048 780 pts/0 S+ 04:34 0:00 grep --color php-fpm [root@huh etc]# [root@huh etc]# netstat -lnp |grep ‘php-fpm‘ tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 16343/php-fpm
六.php-fpm.conf配置文件
/usr/local/php/etc/php-fpm.conf配置文件和/usr/local/php/etc/php.ini不太一样:
1./usr/local/php/etc/php-fpm.conf是管理php-fpm服务的相关配置
2./usr/local/php/etc/php.ini是php的全局配置文件
我们更改php-fpm.conf,更改后的php-fpm.conf配置文件:
[global] #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 pid = /usr/local/php/var/run/php-fpm.pid #错误日志,默认在安装目录中的var/log/php-fpm.log error_log = /usr/local/php/var/log/php-fpm.log #www是一个pool的一个名字 [www] #fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: ‘ip:port‘, ‘port‘, ‘/path/to/unix/socket‘. 每个进程池都需要设置. listen = /tmp/www.sock #启动进程的用户和组 user = php-fpm group = php-fpm #设置让nobody也能访问www.sock listen.owner = nobody listen.group = nobody pm = dynamic #子进程最大数 pm.max_children = 50 #启动时的进程数 pm.start_servers = 20 #保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程 pm.min_spare_servers = 5 #保证空闲进程数最大值,如果空闲进程大于此值,此进行清理 pm.max_spare_servers = 35 #设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 ‘0‘ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0. pm.max_requests = 500 #设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。 rlimit_files = 1024
;
标签:
原文地址:http://www.cnblogs.com/ruo-yu/p/5166638.html