溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

LNMP中php-fpm的配置文件

發(fā)布時(shí)間:2020-07-28 14:22:07 來(lái)源:網(wǎng)絡(luò) 閱讀:374 作者:聽(tīng)丶飛鳥(niǎo)說(shuō) 欄目:web開(kāi)發(fā)

    首先我們要區(qū)分"/usr/local/php2/etc/php-fpm.conf"文件和"/usr/local/php2/etc/php.ini"文件這兩者的區(qū)別。

    /usr/local/php2/etc/php-fpm.conf是php-fpm這個(gè)服務(wù)使用的文件,管理php-fpm服務(wù)的相關(guān)配置;/usr/local/php2/etc/php.ini是php的全局配置文件。


這節(jié)學(xué)習(xí)php-fpm的配置

編輯php-fpm配置文件

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

發(fā)現(xiàn)內(nèi)容很亂,我們給他整理一下,用我們已經(jīng)整理好的配置寫(xiě)進(jìn)去;

先清空配置內(nèi)容,重新寫(xiě)入

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

[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


內(nèi)容解析:

[www]里面是我們的pool(池),用ps aux |grep php-fpm可以查看pool;不同的pool顯示不同的名字,我們的php-fpm可以啟用多個(gè)pool,可針對(duì)不同網(wǎng)站域名,使用不同的pool;不同的pool意味著去監(jiān)聽(tīng)不同的socket或不同的ip+port(端口),我們平時(shí)用的最多的是*.sock,默認(rèn)的是127.0.0.1:9000


(1)listen = /tmp/www.sock 

     監(jiān)聽(tīng)的形式是socket,名字可以自定義,比如這個(gè)文件的名字www.sock;

(2)user = php-fpm

        group = php-fpm

     這個(gè)名字也可以自定義

(3)pm = dynamic (動(dòng)態(tài)管理,主要針對(duì)下面的信息)

(4)

    pm.max_children = 50         # 子進(jìn)程最大50個(gè);

    pm.start_servers = 20        # 最開(kāi)始有20個(gè)啟動(dòng);

    pm.min_spare_servers = 5     # 空閑最少有5個(gè);

    pm.max_spare_servers = 35    # 空閑最多有35個(gè);

    pm.max_requests = 500        # 一個(gè)子進(jìn)程在它生命周期內(nèi),一共處理多少請(qǐng)求后自動(dòng)銷毀;

    rlimit_files = 1024          # 每個(gè)進(jìn)程使用文件描述符的限制。

(5)如果把pm = dynamic改成pm = static,那么只有pm.max_children = 50 生效,

其他的都不生效,建議默認(rèn)使用dynamic,可以動(dòng)態(tài)分享資源。



問(wèn)題:如果要建立多個(gè)pool怎么辦?

答:只要復(fù)制[www]下的信息,粘貼在[www]所在pool的下面另起一段,

    可以改名為[www1],同時(shí)對(duì)應(yīng)的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

(以上配置為假設(shè))


我們繼續(xù)向下配置

檢查有無(wú)錯(cuò)誤

[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的信息,以及默認(rèn)啟動(dòng)20個(gè)

如果過(guò)段時(shí)間沒(méi)有請(qǐng)求,那么他就會(huì)一點(diǎn)點(diǎn)損耗,越來(lái)越少,最后銷毀。


我們可以把不同的域名對(duì)應(yīng)不同的pool(池),首先我們?cè)?usr/local/nginx/conf/vhosts下面寫(xiě)多個(gè)域名,假如新增一個(gè)域名為111.conf的域名,并設(shè)定其對(duì)應(yīng)的pool為www,

內(nèi)容如下:

[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論壇目錄下

    }

}

問(wèn)以上是讓我們了解不同的域名對(duì)應(yīng)不同的Pool的形式和寫(xiě)法,那么我這樣劃分的好處是什么呢?

    第一點(diǎn),好處是我們可以把權(quán)限分開(kāi),假如網(wǎng)站有漏洞,不小心被***,獲得了我們的用戶名和權(quán)限,***者只能用當(dāng)前Pool的權(quán)限,從而提高安全性;

    第二點(diǎn),假如[www]這個(gè)pool的請(qǐng)求量太大,down掉了,進(jìn)程不夠用,如果都是使用一個(gè)pool的話,一個(gè)網(wǎng)站掛掉了,那么其他網(wǎng)站也跟著掛掉了,會(huì)受到牽連。

    所以這樣劃分的好處是可以避免多個(gè)網(wǎng)站同時(shí)出問(wèn)題。


我們也可以在php-fpm配置里做一些性能追蹤的操作:

假如我們工作中遇到,訪問(wèn)網(wǎng)站,但是加載速度非常慢,我們可以在[www]池的最后面加上

slowlog = /tmp/www_slow.log      <--(名字可以自定義,但不同的pool指向不同的slowlog)

request_slowlog_timeout = 1

寫(xiě)好以上兩行,可以通過(guò)slowlog排查網(wǎng)站慢的原因。


Apache可以設(shè)置open_basedir,同樣php-fpm也可以設(shè)置:

在slowlog兩行下面補(bǔ)充加上:

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

(這一行是安全選項(xiàng))

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI