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原創發布,轉載請注明出處,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227059.html
標籤:PHP
上一篇:DDD之3物體和值物件
