PHP做爲開源的服務器端腳本語言,在web應用方面很是普遍。若是你想下載某些開源應用,github上php開源軟件選擇每每比Java還多。最近,研究了linux下php的安裝,主要有如下體會。php
php.ini文件是php的核心配置文件且只能命名爲php.ini,它是對php應用程序全局起做用的設置文件,裏面選項很是多,包含php頁面使用內存大小限制,上傳下載文件大小限制,浮點型的精度等。linux
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。nginx
socket方式是長鏈接方式,適用於php和其餘服務在同一臺服務器上git
[www] user = nginx group = nginx listen = /run/php-fpm.sock
tcp方式是http請求方式,適用於集羣併發量高的多服務器上github
[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個進程再那裏等待,即便網站應用沒有一我的訪問也是同樣。web
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源中自動找到響應包。redis
yum install php-common yum install php-apcu yum install php-pecl-zip
php和web服務器nginx,apache還須要作一些關聯配置,在他們的配置文件裏面加入如下:mongodb
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新的東西。apache
本文由Websoft9原創發佈,轉載請註明出處。ubuntu