搭建lnmp环境时,须要先安装mysql,再安装php,而nginx安装顺序无所谓,nginx与php之间的联系须要手动配置php
一.php下载和配置“安装环境“mysql
[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 \
--enable-sockets
注:1.--prefix 指定安装路径nginx
2.--with-config-file-path 设置php.ini的搜索路径sql
3.--with-fpm-user fpm运行的用户,默认为nobody api
4.--with-fpm-group fpm运行的组,默认为nobodycurl
5.--with-mysql 指定mysql的安装路径socket
6.--with-mysql-sock 指定mysql监听的mysql.sock程序在哪tcp
7.--with-libxml-dir 用于指定安装libxml2库文件的位置。php-fpm
期间,会有报错状况:url
#错误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
;