LNMP中php-fpm的配置文件

    首先咱們要區分"/usr/local/php2/etc/php-fpm.conf"文件和"/usr/local/php2/etc/php.ini"文件這二者的區別。php

    /usr/local/php2/etc/php-fpm.conf是php-fpm這個服務使用的文件,管理php-fpm服務的相關配置;/usr/local/php2/etc/php.ini是php的全局配置文件
html


這節學習php-fpm的配置nginx

編輯php-fpm配置文件
vim

[root@LnmpLinux ~]# vim /usr/local/php2/etc/php-fpm.conf安全

發現內容很亂,咱們給他整理一下,用咱們已經整理好的配置寫進去;socket

先清空配置內容,從新寫入ide

[root@LnmpLinux ~]# > /usr/local/php2/etc/php-fpm.confphp-fpm

[root@LnmpLinux ~]# vim /usr/local/php2/etc/php-fpm.conf性能



[global]學習

pid = /usr/local/php2/var/run/php-fpm.pid

error_log = /usr/local/php2/var/log/php-fpm.log

[www]

listen = /tmp/www.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024


內容解析:

[www]裏面是咱們的pool(池),用ps aux |grep php-fpm能夠查看pool;不一樣的pool顯示不一樣的名字,咱們的php-fpm能夠啓用多個pool,可針對不一樣網站域名,使用不一樣的pool;不一樣的pool意味着去監聽不一樣的socket或不一樣的ip+port(端口),咱們平時用的最多的是*.sock,默認的是127.0.0.1:9000


(1)listen = /tmp/www.sock 

     監聽的形式是socket,名字能夠自定義,好比這個文件的名字www.sock;

(2)user = php-fpm

        group = php-fpm

     這個名字也能夠自定義

(3)pm = dynamic (動態管理,主要針對下面的信息)

(4)

    pm.max_children = 50         # 子進程最大50個;

    pm.start_servers = 20        # 最開始有20個啓動;

    pm.min_spare_servers = 5     # 空閒最少有5個;

    pm.max_spare_servers = 35    # 空閒最多有35個;

    pm.max_requests = 500        # 一個子進程在它生命週期內,一共處理多少請求後自動銷燬;

    rlimit_files = 1024          # 每一個進程使用文件描述符的限制。

(5)若是把pm = dynamic改爲pm = static,那麼只有pm.max_children = 50 生效,

其餘的都不生效,建議默認使用dynamic,能夠動態分享資源。



問題:若是要創建多個pool怎麼辦?

答:只要複製[www]下的信息,粘貼在[www]所在pool的下面另起一段,

    能夠更名爲[www1],同時對應的sock也要更改成/tmp/www1.sock。

舉例:

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = /tmp/www.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50                                            原有的pool

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024


[www1]

listen = /tmp/www1.sock

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50                                           新增的pool

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

(以上配置爲假設)


咱們繼續向下配置

檢查有無錯誤

[root@LnmpLinux ~]# /usr/local/php2/sbin/php-fpm -t

重啓php-fpm

[root@LnmpLinux ~]# /etc/init.d/php-fpm restart

[root@LnmpLinux ~]# ps aux |grep php-fpm

就能看到pool的信息,以及默認啓動20個

若是過段時間沒有請求,那麼他就會一點點損耗,愈來愈少,最後銷燬。


咱們能夠把不一樣的域名對應不一樣的pool(池),首先咱們在/usr/local/nginx/conf/vhosts下面寫多個域名,假如新增一個域名爲111.conf的域名,並設定其對應的pool爲www

內容以下:

[root@LnmpLinux vhosts]# vim 111.conf

server

{

    listen 80;

    server_name www.111.com;

    index index.html index.htm index.php;

    root /data/www;                                                   # 指向Discuz論壇目錄下


    location ~ \.php$ {

        include fastcgi_params;

        fastcgi_pass unix:/tmp/www.sock;                  # 指向的pool(池)

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME  /data/www$fastcgi_script_name;   # 指向Discuz論壇目錄下

    }

}

以上是讓咱們瞭解不一樣的域名對應不一樣的Pool的形式和寫法,那麼我這樣劃分的好處是什麼呢?

    第一點,好處是咱們能夠把權限分開,假如網站有漏洞,不當心被***,得到了咱們的用戶名和權限,***者只能用當前Pool的權限,從而提升安全性;

    第二點,假如[www]這個pool的請求量太大,down掉了,進程不夠用,若是都是使用一個pool的話,一個網站掛掉了,那麼其餘網站也跟着掛掉了,會受到牽連。

    因此這樣劃分的好處是能夠避免多個網站同時出問題。


咱們也能夠在php-fpm配置裏作一些性能追蹤的操做:

假如咱們工做中遇到,訪問網站,可是加載速度很是慢,咱們能夠在[www]池的最後面加上

slowlog = /tmp/www_slow.log      <--(名字能夠自定義,但不一樣的pool指向不一樣的slowlog)

request_slowlog_timeout = 1

寫好以上兩行,能夠經過slowlog排查網站慢的緣由


Apache能夠設置open_basedir,一樣php-fpm也能夠設置:

在slowlog兩行下面補充加上:

php_admin_value[open_basedir]=/data/www/:/tmp/

(這一行是安全選項)

相關文章
相關標籤/搜索