我們在之前介紹過php handler。
在我們虛擬主機裡,是使用fastcgi的讀寫方式,
如果在一般主機要追求更高的效能,則可以考慮使用php-fpm。
以下直接以設定範例說明(適用於 centos 6.x版):
<進行php-fpm的安裝>
1. 登入 whm>Configure PHP and suEXEC
設定
PHP 5 Handler: none
Apache suEXEC: off
Apache Ruid2: off
2.linux shell > vim /var/cpanel/easy/apache/rawopts/all_php5
加入下列兩行後存檔
--enable-fastcgi
--enable-fpm
3.回到 whm > easyapache
並作下列設定
(1). Select Apache 2.2.x
(2). Select PHP 5.4.x
(3). Disable Frontpage
(4). Disable Mod SuPHP
(5). Disable Mod Ruid2
(6). Select MPM Worker
(7). Disable MPM Prefork and MPM Event
rebuilding 完成後,在接下一步
4.回到linux shell裡處理 PHP-FPM 設定檔
cd /home/cpeasyapache/src/php-5.4.x/sapi/fpm/
cp init.d.php-fpm.in /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
5. vim /etc/init.d/php-fpm
將
prefix=@prefix@
exec_prefix=@exec_prefix@
php_fpm_BIN=@sbindir@/php-fpm
php_fpm_CONF=@sysconfdir@/php-fpm.conf
php_fpm_PID=@localstatedir@/run/php-fpm.pid
改為
prefix=
exec_prefix=
php_fpm_BIN=/usr/local/sbin/php-fpm
php_fpm_CONF=/usr/etc/php-fpm.conf
php_fpm_PID=/var/run/php-fpm.pid
(新路逕務必查證,才不會error)
<調整php-fpm.conf>
6.
cd /home/cpeasyapache/src/php-5.4.x/sapi/fpm/
cp php-fpm.conf.in /usr/etc/php-fpm.conf
7. vim /usr/etc/php-fpm.conf
設定
user = nobody
group = nobody
LoadModule fastcgi_module modules/mod_fastcgi.so
<IfModule mod_fastcgi.c>
FastCGIExternalServer /usr/local/sbin/php-fpm -host 127.0.0.1:9000
AddHandler php-fastcgi .php
#<LocationMatch "/status">
# SetHandler php-fastcgi-virt
# Action php-fastcgi-virt /usr/local/sbin/php-fpm.fcgi virtual
#</LocationMatch>
Action php-fastcgi /usr/local/sbin/php-fpm.fcgi
ScriptAlias /usr/local/sbin/php-fpm.fcgi /usr/local/sbin/php-fpm
<Directory /usr/local/sbin>
Options ExecCGI FollowSymLinks
SetHandler fastcgi-script
Order allow,deny
Allow from all
</Directory>
</IfModule>
wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
tar -xzf mod_fastcgi-2.4.6.tar.gz
cd mod_fastcgi-2.4.6
cp Makefile.AP2 Makefile
12. 最後設定開機啟動 php-fpm
chkconfig php-fpm on
我們曾在 php handler 介紹過相關的php型態。
其中有提到 fastcgi的崩潰狀況,
使用fastcgi可能因此導致server loading問題。
最近有讀者來詢問,該如何處理這個狀況呢?
在本篇裡,我們另外給大家另一個思維:
首先要先觀察,這個loading問題是無時無刻發生,
還是透過壓力累積(間歇性)後才會發生的呢?
如果是間歇式的,建議在排程裡加上清除php的語法,或許就能解決:
1.登入linux shell,並執行 crontab -e。(我們是用centos為範本)
2. 在其中一行裡,擺上這個語法:
0 */1 * * * /usr/bin/pkill -f -x /usr/bin/php -P 1
3.排程的時間也可以自訂,讓server自動去進行 kill php 的動作。
如果是無時無刻的發生呢?
1.這樣透過排程,進行kill php 的效果可能不是最佳。
2.需改以top指令觀察,看看是cpu,memory還是(hd,io),
哪一個部份去咬住了主機資源,在對症調整系統,程式,或升級硬體,
才會有效果。
(本篇教學由unethost.com客服撰寫)
延伸閱讀:如何備份Cpanel後台安裝的套裝程式?
安裝上述的軟體,我們提供虛擬主機試用,七天滿意保證,
功能完整使用不受限制,歡迎點我申請。
我們曾在:
如何讓 cpanel 空間有獨立的 phpmyadmin (無痛安裝phpmyadmin)
介紹過使用phpmyadmin管理mysql。
今天有cpanel的獨立主機用戶,
phpmyadmin上傳後,出現了錯誤訊息:
Fatal error: Call to undefined function __() in
如何透過網頁error message找出解法?
1. google搜索看看,查一下是否php環境設定引起?
2. 除php版本問題之外, 根據多篇文章的提示,
大多數都是沒有安裝到 mbstring 引起的。
3. 但是透過 php.ini 查看後,發現server是有安裝mbstring。
遇到網路上找不出解答的情況?
1. 當網路上找不到解答,可以考慮直接查看log檔。
2. 像我們自己就有額外的測試方式,
比方說把主機調整到我們自己的優化設定。
根據本次的狀況,我們先把php handler調成fastcgi,
因為這可能是資料夾權限的問題,改為fastcgi可以先避開。
順利解決:
果不其然,將php handler 切成 fastcgi後,順利解決了。
(本篇教學由unethost.com客服撰寫)
延伸閱讀:如何備份Cpanel後台安裝的套裝程式?
安裝上述的軟體,我們提供虛擬主機試用,七天滿意保證,
功能完整使用不受限制,歡迎點我申請。
何時會需要修改php.ini的參數呢?一個很常見的例子,就是register_globals 。在php 4之前,這個常常是On的。但是為了安全性,php 5開始,及很多新的php套裝程式,都必須是Off才能安裝。
1) 將客製化的php.ini ( custom php.ini )移到 public_html/cgi-bin/這個資料夾下
2) 在 cgi-bin 這個資料下, 生成 php.fcgi 這個檔案,並寫入下方的內容
#!/bin/sh
export PHP_FCGI_CHILDREN=1
export PHP_FCGI_MAX_REQUESTS=10
exec /usr/local/cpanel/cgi-sys/php5
3) chmod +x php.fcgi
4) 上傳 .htaccess 到 public_html資料夾,並加入下方的內容
AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/php.fcgi
5) 在php.conf中,加入path
在 /usr/local/apache/conf/php.conf 這個檔案中,加入下方的內容
Action php5-fastcgi /cgi-bin/php.fcgi
AddType application/x-httpd-php .php
6)萃取apache的conf檔,並且重新啟動之
/usr/local/cpanel/bin/apache_conf_distiller –update
/scripts/rebuildhttpdconf
/etc/init.d/httpd restart
後記:
經過我們實際上的實驗,(4)這個步驟修改.htaccess檔在某些情況下,必須省略。例如,要修改的網站,本身的空間裡有附加(attach) 子網域(subdomain) 的時候。