选择合适的PHP版本
始终使用最新的稳定版PHP(如PHP 8.3),新版本通常包含性能改进、安全修复及对新特性的支持。可通过sudo add-apt-repository ppa:ondrej/php添加Ondřej Surý的PPA仓库,再通过apt安装最新版本,确保版本持续更新。
使用PHP-FPM替代mod_php
PHP-FPM(FastCGI Process Manager)比传统的mod_php更高效,能更好地管理进程生命周期、减少内存消耗。安装命令为sudo apt install php8.3-fpm(版本号根据需求调整),配置文件位于/etc/php/8.3/fpm/pool.d/www.conf,需调整pm.max_children(最大子进程数,根据服务器内存计算)、pm.start_servers(启动时的进程数)、pm.min_spare_servers/pm.max_spare_servers(空闲进程范围)等参数优化性能。
启用并配置OPcache
OPcache通过缓存编译后的PHP字节码,显著减少脚本重复编译的开销。安装扩展sudo apt install php-opcache,在php.ini中启用:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=64M # 根据服务器内存调整(如64M-256M)
opcache.max_accelerated_files=4000 # 根据项目文件数调整(如项目有1000个文件,设为10000)
opcache.revalidate_freq=2 # 文件修改后重新编译的间隔(秒)
重启PHP-FPM使配置生效:sudo systemctl restart php8.3-fpm。
优化Web服务器配置
/etc/nginx/sites-available/default),添加PHP处理逻辑:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
调整worker_processes(设为CPU核心数)、worker_connections(每个工作进程的最大连接数,如1024)、keepalive_timeout(长连接超时时间,如65秒)等参数。mod_proxy_fcgi和mod_rewrite模块,配置fastcgi_pass指向PHP-FPM的socket文件(如unix:/var/run/php/php8.3-fpm.sock),并禁用不必要的模块(如mod_php)。强化安全配置
sudo apt update && sudo apt upgrade,确保PHP、Web服务器及依赖库为最新版本,修复已知漏洞。exec、system):disable_functions=exec,system,passthru,shell_exec;限制文件访问范围:open_basedir=/var/www/html:/tmp;关闭错误信息显示:display_errors=Off(生产环境),并将错误日志写入非Web可访问目录(如/var/log/php_errors.log);隐藏PHP版本:expose_php=Off。www-data用户及组(sudo chown -R www-data:www-data /var/www/html),设置合理权限(如chmod -R 755 /var/www/html),避免敏感文件(如config.php)被直接访问。listen 443 ssl;及证书路径),强制跳转HTTP到HTTPS,加密数据传输。使用缓存技术提升性能
sudo apt install redis-server memcached),并通过扩展(如php-redis、php-memcached)集成到PHP中,缓存数据库查询结果、会话数据或常用计算结果,减少数据库负载。优化代码与数据库
prepare方法)防止SQL注入。SELECT *,只查询所需字段;使用JOIN代替子查询);定期清理无用数据(如过期日志、临时表)。监控与维护
top、htop、sar等工具监控CPU、内存、磁盘使用情况;通过vmstat查看系统整体性能。log_errors=On,error_log=/var/log/php_errors.log)、Web服务器访问日志(如Nginx的access.log),定期分析异常请求(如大量404错误、POST请求)。sudo apt clean)、临时文件(/tmp目录),备份重要数据(如数据库、项目文件),确保数据安全。