搭建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
;