一、基础环境搭建:选择稳定的Web服务器组合
在Ubuntu上运行PHP,首先需要搭建可靠的Web服务器环境。常见选择有两种:
sudo apt install lamp-server^(自动安装Apache、MySQL、PHP及常用扩展)。sudo apt install nginx mysql-server php-fpm php-mysql。/var/www/html目录下创建info.php文件(内容为<?php phpinfo(); ?>),通过浏览器访问服务器IP即可查看PHP信息页面。二、PHP-FPM配置:优化进程管理与资源分配
PHP-FPM(FastCGI Process Manager)是PHP的高性能处理引擎,能有效提升PHP脚本的执行效率和资源利用率。配置要点如下:
sudo apt install php-fpm安装(版本需与PHP主版本一致,如PHP 8.3则安装php8.3-fpm)。/etc/php/{version}/fpm/pool.d/www.conf),重点设置以下参数:
pm:进程管理模式,推荐dynamic(动态调整进程数)或static(固定进程数);pm.max_children:最大子进程数,根据服务器内存计算(如1GB内存可设置为20-30,公式:内存大小(MB)/单个PHP进程占用内存(MB),单个进程约占用30-50MB);pm.start_servers:启动时的子进程数,建议设置为pm.max_children的1/4-1/2;pm.min_spare_servers/pm.max_spare_servers:空闲进程的最小/最大数量,避免频繁创建/销毁进程。listen指令修改为Unix socket(性能更高)或IP端口(如listen = /var/run/php/php8.3-fpm.sock或listen = 127.0.0.1:9000)。sudo systemctl restart php8.3-fpm。三、Web服务器集成:确保PHP请求正确转发
根据选择的Web服务器,需配置PHP请求的转发规则:
sudo a2enmod php8.3 # 启用PHP模块(版本需匹配)
sudo systemctl restart apache2
Apache会自动识别.php文件并通过PHP-FPM处理。/etc/nginx/sites-available/default)中添加PHP处理块:location ~ \.php$ {
include snippets/fastcgi-php.conf; # 包含FastCGI配置
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; # 与PHP-FPM的listen一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 传递脚本路径
include fastcgi_params; # 包含通用FastCGI参数
}
测试Nginx配置(sudo nginx -t)无误后,重启服务:sudo systemctl restart nginx。四、性能优化:提升PHP运行效率
sudo apt install php-opcache # 安装OPcache扩展
echo "zend_extension=opcache.so" | sudo tee /etc/php/{version}/mods-available/opcache.ini # 启用扩展
sudo phpenmod opcache # 激活扩展
sudo systemctl restart apache2/nginx # 重启Web服务器
进一步优化OPcache参数(在php.ini中设置):opcache.enable=1
opcache.memory_consumption=128 # 缓存内存大小(MB)
opcache.max_accelerated_files=10000 # 缓存文件数量
opcache.validate_timestamps=1 # 开发环境设为1(实时检查文件修改),生产环境设为0(禁用检查)
php.ini(路径为/etc/php/{version}/apache2/php.ini或/etc/php/{version}/fpm/php.ini),优化以下参数:memory_limit=256M # 单个PHP脚本最大内存(根据应用需求调整)
max_execution_time=30 # 脚本最大执行时间(秒)
upload_max_filesize=10M # 上传文件大小限制
post_max_size=12M # POST数据大小限制(需大于upload_max_filesize)
sudo apt install redis php-redis,然后在应用代码中集成Redis客户端。五、安全加固:防范常见攻击
sudo apt update && sudo apt upgrade,安装最新的安全补丁,修复已知漏洞。php.ini中设置disable_functions,禁用可能被恶意利用的函数:disable_functions=exec,system,passthru,shell_exec,exec,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
open_basedir限制PHP脚本可访问的目录,防止越权访问:open_basedir=/var/www/html:/tmp # 仅允许访问网站目录和临时目录
sudo apt install certbot python3-certbot-nginx # Nginx示例
sudo certbot --nginx -d yourdomain.com # 替换为你的域名
sudo chown -R www-data:www-data /var/www/html # 将目录所有者设为Web服务器用户(Apache为www-data,Nginx为www-data)
sudo chmod -R 755 /var/www/html # 设置目录权限为755(所有者可读写执行,其他用户可读执行)
upload_max_filesize和post_max_size限制上传文件大小,避免大文件占用过多资源;同时,在应用层验证上传文件类型(如仅允许图片格式),防止恶意文件上传。六、监控与维护:确保长期稳定运行
php.ini中的error_log参数,指定错误日志路径(如error_log = /var/log/php_errors.log);使用logrotate工具自动化日志轮转(Ubuntu默认已安装),编辑/etc/logrotate.d/php文件,设置日志保留时间和压缩规则。top、htop、vmstat等工具监控系统资源(CPU、内存、磁盘IO)的使用情况,及时发现性能瓶颈;对于生产环境,可使用New Relic、Blackfire等专业监控工具,深入分析PHP应用性能。rsync、tar等工具手动备份,或使用自动化备份工具(如Duplicity、Restic);备份文件需存储在异地(如云存储),防止本地磁盘故障导致数据丢失。/tmp目录)和PHP会话文件(路径为/var/lib/php/sessions),释放磁盘空间:sudo apt autoremove # 清理无用软件包
sudo apt clean # 清理APT缓存
sudo rm -rf /tmp/* # 清理/tmp目录(谨慎操作,确保无重要文件)