002.php安裝(lnmp)

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

;

相關文章
相關標籤/搜索