一、CentOS PHP版本選擇策略
__toString()
魔術方法的返回值類型)。mod_proxy_fcgi
模塊,Nginx需通過PHP-FPM與PHP通信。二、CentOS PHP安裝與基礎配置
sudo yum install epel-release -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y # CentOS 7
# sudo yum install http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y # CentOS 8
sudo yum-config-manager --enable remi-php74 # 啟用PHP 7.4倉庫
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-opcache -y
/etc/php.ini
文件,調整關鍵參數以適應服務器環境:
memory_limit = 256M
(根據應用需求調整,避免過大導致內存溢出);max_execution_time = 300
(腳本最大執行時間,單位秒,適合上傳或處理大量數據的場景);upload_max_filesize = 50M
、post_max_size = 50M
(允許上傳的文件大小,需與前端表單enctype="multipart/form-data"
配合);date.timezone = Asia/Shanghai
(避免時間相關函數報錯)。/etc/php-fpm.d/www.conf
文件,調整進程池參數以提升并發處理能力:
pm = dynamic
(動態調整進程數,適合大多數場景);pm.max_children = 50
(根據服務器內存計算,公式:(可用內存 - 1G) / 單個進程內存
,如1GB內存可設為30-40);pm.min_spare_servers = 5
、pm.max_spare_servers = 35
(保持一定數量的空閑進程,避免頻繁創建/銷毀);request_terminate_timeout = 30s
(防止單個腳本長時間占用資源)。sudo systemctl restart php-fpm
sudo systemctl restart httpd # Apache
# sudo systemctl restart nginx # Nginx
php -v
三、CentOS PHP性能優化配置
/etc/php.ini
文件,添加以下配置:[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # OPcache緩存大?。∕B),根據內存調整
opcache.interned_strings_buffer=8 # 內部字符串緩存大小
opcache.max_accelerated_files=4000 # 緩存的腳本文件數量
opcache.revalidate_freq=60 # 腳本重新驗證時間(秒),避免頻繁檢查文件修改
pm.max_children
(如服務器內存為2GB,可設為50-60)、pm.start_servers
(如設為10,啟動時的進程數)等參數,避免進程過多導致服務器崩潰。server
塊中添加PHP處理配置,確保fastcgi_pass
指向PHP-FPM的socket或端口:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
mod_proxy_fcgi
模塊,在VirtualHost
中添加PHP處理配置:<FilesMatch \.php$>
SetHandler "proxy:fcgi://unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
top
、htop
、vmstat
等工具監控服務器資源使用情況(CPU、內存、磁盤IO),根據實際情況調整PHP-FPM進程數、OPcache緩存大小等參數。