1. 程式人生 > 實用技巧 >淺析php環境配置

淺析php環境配置

PHP作為開源的伺服器端指令碼語言,在web應用方面非常廣泛。如果你想下載某些開源應用,github上php開源軟體選擇往往比Java還多。最近,研究了linux下php的安裝,主要有以下體會。

PHP-INI

php.ini檔案是php的核心配置檔案且只能命名為php.ini,它是對php應用程式全域性起作用的設定檔案,裡面選項非常多,包含php頁面使用記憶體大小限制,上傳下載檔案大小限制,浮點型的精度等。

FPM-PHP

fpm-php(FastCGI ProcessManager)本來是php的第三方包,在php5.3.3後成為了php的核心成員,不需要單獨下載安裝。FastCGI誕生之前,web端轉發一個php請求後,需要重新載入php.ini,通過fpm-php建立master程序,收到多個php請求,建立子程序來共享master程序載入的php.ini資訊。安裝fpm-php後,啟動php實際上通過啟動的fpm-php.service來實現。fpm-php和web之間的通訊可以通過兩種方式實現,socket和tcp方式,通過/etc/php-fpm.d/www.conf的配置來配置。兩種方式的差異主要在listen的配置不一樣。一個是php-fpm.sock,一個是伺服器的ip:9000。

socket方式是長連線方式,適用於php和其他服務在同一臺伺服器上

[www]
user = nginx
group = nginx
listen = /run/php-fpm.sock

tcp方式是http請求方式,適用於叢集併發量高的多伺服器上

[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000

再談程序如何分配,以下面配置來說,start_servers=10說明php服務就啟動10個worker子程序一直處於等待中,min_spare_servers=5是指最小活動程序。php啟動時開啟8個程序,如果沒有收到web請求,fpm-php就會釋放一些,最終達到5個程序。但是最大不能超過max_spare_servers = 35。至於max_children=50,那是靜態配置方式,不變的,是一種浪費資源的方式,一直啟動50個程序再那裡等待,即使網站應用沒有一個人訪問也是一樣。

pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35

擴充套件包

僅安裝php往往不能滿足應用軟體的需求,還需要其他很多擴充套件包來支援php應用。例如,【odbc,common,ima,mongodb,xml等】,但是需要注意的是安裝的時候下面這些包是基於pecl的【apcu,imagick,goeip,mcrypt,redis,zip,memcache】。尤其,zip包特別需要指定pecl,否則擴充套件包安裝不成功,其他pecl包可以從remi源中自動找到響應包。

yum install php-common
yum install php-apcu
yum install php-pecl-zip

web伺服器相關配置

php和web伺服器nginx,apache還需要做一些關聯配置,在他們的配置檔案裡面加入以下:

nginx:
location ~ .*\.php$
{
    fastcgi_pass  unix:/run/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;
    try_files $uri = 404;
}

apache:
<FilesMatch \.php$>
  SetHandler "proxy:unix:/run/php-fpm.sock|fcgi://localhost"
</FilesMatch>

但是,ubuntu系統下PHP應用使用apache伺服器的情況下,需要配置,否則相反apache伺服器報錯無法啟動。以上對php的配置理解,今後隨著對它研究的加深,還會寫一些關於php新的東西。

本文由Websoft9原創釋出,轉載請註明出處。