1. 安裝PHP及必要擴展
在Debian上配置PHP的第一步是安裝核心組件與常用擴展。使用apt包管理器更新系統并安裝PHP(以PHP 8.2為例)、PHP-FPM(FastCGI進程管理器)及常用擴展(如MySQL數據庫支持、GD圖像處理、cURL網絡請求、mbstring多字節字符串處理等):
sudo apt update && sudo apt upgrade -y
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-gd php8.2-curl php8.2-mbstring php8.2-xml php8.2-zip -y
擴展的選擇需根據應用需求調整(如需要Redis緩存則安裝php8.2-redis)。
2. 配置PHP-FPM(優化并發處理)
PHP-FPM是Debian下處理PHP請求的高效方式(尤其搭配Nginx),需調整進程池參數以提升并發能力。編輯PHP-FPM配置文件(路徑隨PHP版本變化,如/etc/php/8.2/fpm/pool.d/www.conf):
dynamic(動態調整進程數),并根據服務器內存調整進程數量(以下配置適用于2GB內存服務器):pm = dynamic
pm.max_children = 100 # 最大子進程數(避免內存耗盡)
pm.start_servers = 20 # 啟動時的子進程數
pm.min_spare_servers = 10 # 最小空閑進程數(快速響應突發請求)
pm.max_spare_servers = 30 # 最大空閑進程數(避免過多閑置進程占用內存)
pm.max_requests = 3000 # 每個子進程處理的最大請求數(防止內存泄漏)
listen指令:listen = /run/php/php8.2-fpm.sock
listen.owner = www-data # 與Web服務器用戶一致
listen.group = www-data
修改后重啟PHP-FPM服務:
sudo systemctl restart php8.2-fpm
```。
**3. 優化PHP核心配置(php.ini)**
調整`php.ini`文件(路徑可通過`php --ini`查看,如`/etc/php/8.2/fpm/php.ini`)以提升性能與安全性:
- **內存與執行時間**:根據應用需求設置內存限制(如256MB)和腳本執行時間(如300秒,適用于復雜請求):
```ini
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 50M
post_max_size = 50M
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
date.timezone = Asia/Shanghai # 設置時區(避免警告)
修改后重啟PHP-FPM(或Apache/Nginx)使配置生效。
4. 啟用OPcache(提升腳本執行速度)
OPcache是PHP內置的字節碼緩存擴展,可顯著減少腳本解析時間(提升20%-50%性能)。安裝并啟用OPcache:
sudo apt install php8.2-opcache -y
編輯php.ini文件,添加以下配置:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # 緩存內存大?。∕B,根據服務器內存調整)
opcache.interned_strings_buffer=8 # 內部字符串緩存大小
opcache.max_accelerated_files=4000 # 緩存的腳本文件數量
opcache.revalidate_freq=60 # 腳本更新檢查頻率(秒,0表示每次請求都檢查)
opcache.validate_timestamps=1 # 生產環境設為0(禁用實時檢查,提升性能)
重啟PHP-FPM服務使OPcache生效。
5. 配置Web服務器(Nginx/Apache)
根據選擇的Web服務器調整配置,以支持PHP-FPM處理動態請求:
編輯Nginx站點配置文件(如/etc/nginx/sites-available/default),添加以下location塊處理.php文件:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf; # 包含FastCGI參數
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 與PHP-FPM監聽地址一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止訪問.htaccess文件(Apache遺留配置)
location ~ /\.ht {
deny all;
}
}
重啟Nginx服務:
sudo systemctl restart nginx
若使用Apache,需啟用PHP-FPM模塊并調整配置:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm # 啟用PHP-FPM配置
編輯虛擬主機配置文件(如/etc/apache2/sites-available/000-default.conf),添加以下FilesMatch塊:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
</FilesMatch>
重啟Apache服務:
sudo systemctl restart apache2
```。
**6. 安全增強措施**
- **禁用危險函數**:編輯`php.ini`文件,禁用可能被惡意利用的函數(如`exec`、`system`、`shell_exec`):
```ini
disable_functions = exec, system, shell_exec, passthru, proc_open
apt更新PHP至最新穩定版(如Debian 12默認倉庫提供PHP 8.2,可通過backports倉庫升級至更高版本),以修復安全漏洞。/var/www/html/config)的訪問,避免泄露配置文件。7. 監控與維護
htop、top等工具監控服務器CPU、內存使用情況,調整PHP-FPM進程數(pm.max_children)以避免資源耗盡。/var/log/php_errors.log)和Web服務器錯誤日志(如Nginx的/var/log/nginx/error.log),及時排查問題。opcache_reset()函數或重啟PHP-FPM),避免緩存過期數據影響性能。