本文目錄一覽:
- 1、如何修改 php-fpm的運行用戶?
- 2、啟動php-fpm時是怎麼載入php.ini
- 3、php-fpm 找不到 php-cgi.sock 怎麼辦
- 4、在編譯 php 時,為了使用 php 內置的 fpm 功能,應該使用什麼參數
如何修改 php-fpm的運行用戶?
第一種:一個php-fpm主進程
這種方式比較簡單,也只需要一個php-fpm自啟動文件。
首先我們查看一下原php-fpm.conf的這個配置文件,分為兩個部分,一個是global塊,另外一個是自定義的塊,配置文件裡面稱為pool池,默認叫「www」。在global池的上方,有一行注釋了的「include=etc/fpm.d/*.conf」配置項,再通過www池的配置,我們可知可以通過不同的池來配置不同的用戶,來達到多個用戶運行php-fpm的目的,步驟如下:
4、刪除前面的global塊,或者注釋掉。
5、修改[www]為其他,比如你[blog]。
6、配置[blog]池,主要修改兩個地方:
6.1:第一處為運行的用戶和用戶組。
即將
12user = www3group = www4。
修改為
12user=nobody #具體用哪個用戶視自己情況而定,我只做個示例3group=nobody4。
6.2:修改監聽的埠或者socket:
即將:
12listen = 127.0.0.1:90003。
修改為:
12listen = /var/socket/php-fpm/blog.socket #php-fpm需要自己創建,當然也可以直接放在php-fpm目錄下3。
修改成其他埠也是可以的,比如:listen = 127.0.0.1:9001。
7、到主配置文件 php-fpm.conf將「include=…」前面的注釋去掉,讓它去讀取fpm.d目錄下的配置文件。
8、到此第一種方案就修改完畢了,重新啟動測試一下:
12service php-fpm reload3。
第二種:兩個php-fpm主進程。
這種方法需要獨立的配置文件和獨立的自啟動文件:
1、複製一份php-fpm.conf主配置文件。
12cp php-fpm.conf php-fpm-blog.conf3。
2、修改主配置文件。
12vim php-fpm-blog.conf3。
2.1:修改[global]下pid和error_log文件的路徑。
修改 pid=run/php-fpm.pid 為 pid=run/php-fpm-blog.pid 。
修改 error_log = /log/php-fpm.log 為 error_log = /log/php-fpm-blog.log。
2.2:修改池的名稱[www]為[blog],不過這個可以不用修改了,因為這裡和原來的進程是獨立的。
2.3:修改用戶和用戶組。
2.4:監聽埠或socket文件。
以上兩部可以按照第一種方案進行修改,這裡就不再重複。
3、進入/etc/init.d目錄,複製一份自啟動文件。
12cp php-fpm php-fpm23。
4、修改自啟動文件php-fpm2:
4.1:修改配置文件路徑。
12php_fpm-CONF=${prefix}/etc/php-fpm.conf3。
為
12php_fpm-CONF=${prefix}/etc/php-fpm-blog.conf3。
這個路徑就是剛才的主配置文件。
4.2:修改PID文件路徑:
12php_fpm_PID=${prefix}/var/run/php-fpm.pid3。
為:
12php_fpm_PID=${prefix}/var/run/php-fpm-blog.pid3。
這個路徑要和主配置文件中的pid路徑一致。
5、修改完畢後添加自動啟動。
12chkconfig –add php-fpm23chkconfig –level 2345 php-fpm2 on4。
6、啟動服務。
啟動php-fpm時是怎麼載入php.ini
php.ini:決定php語言運行的環境,支持擴展的模塊,開發環境的配置
php-fpm.conf:進程式控制制管理器配置文件,控制php-cgi的進程數,常駐內存,提高web服務的響應速率,php-cgi運行時會載入這兩個配置文件。
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。
它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
php-fpm 找不到 php-cgi.sock 怎麼辦
php-fpm有兩種listen方式,一種是通過埠來操作,一種是sock文件。
在nginx的server配置當中,如果設置為fastcgi_pass unix:/tmp/php-cgi.sock的話,有可能會出現502錯誤,這是以為nginx此項沒有找到php-cgi.sock文件或者許可權問題導致的,我們也可以改成fastcgi_pass:127.0.0.1:9000來修正這個錯誤 。
當我們用php-fpm來管理我們的php啟動時,按照如下的配置,就會自動生成/tmp/php-cgi.sock文件,然後再訪問的話就不回出現502 Gateway錯誤了。配置如下:
[global]
pid = /var/run/php-fpm.pid
error_log = /var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi.sock
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
註:將php.ini里的cgi.fix_pathinfo設置為0,不然會有漏洞~如過還有不懂的,你可以在後盾人,看看教材自己學習一下,有空多看看,就明白了,希望能幫到你,給個採納吧
在編譯 php 時,為了使用 php 內置的 fpm 功能,應該使用什麼參數
php5.3.3以後源碼中已經內嵌了php-fpm,不用象以前的php版本一樣專門打補丁了,只需要在configure的時候添加編譯參數即可。關於php-fpm的編譯參數有–enable-fpm–with-fpm-user=www–with-fpm-group=www–with-libevent-dir=libevent位置。但是,php5.3.3以後的php-fpm不再支持php-fpm以前具有的/usr/local/php/sbin/php-fpm(start|stop|reload)等命令,需要使用信號控制:master進程可以理解以下信號:INT,TERM立刻終止QUIT平滑終止USR1重新打開日誌文件USR2平滑重載所有worker進程並重新載入配置和二進位模塊有了以上信號,php-fpm進程重啟就方便多了。例子:php-fpm關閉:代碼示例:kill-INT`cat/usr/local/php/var/run/php-fpm.pid`php-fpm重啟:代碼示例:kill-USR2`cat/usr/local/php/var/run/php-fpm.pid`說明:cat部分是php-fpm的進程號,可能是我用的5.4的問題。沒有用php-fpm.pid,就沒有這個文件。可以用psaux|grepphp-fpm,使用第一個進程的進程號,測試可行。
原創文章,作者:BZFV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135992.html