PHP在Ubuntu上的高效部署指南
sudo apt update && sudo apt upgrade -y
sudo apt install nginx -ysudo apt install apache2 -ysudo apt install php8.1 php8.1-cli php8.1-fpm php8.1-mysql php8.1-gd php8.1-mbstring php8.1-curl -y
sudo apt install php8.1-opcache -y/etc/php/8.1/fpm/php.ini,添加/修改以下参数:[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # 缓存内存大小(MB)
opcache.max_accelerated_files=4000 # 缓存文件数量
opcache.revalidate_freq=60 # 文件修改后重新验证间隔(秒)
sudo systemctl restart php8.1-fpm/etc/php/8.1/fpm/pool.d/www.conf,关键参数设置:pm = dynamic # 动态进程管理模式(推荐)
pm.max_children = 50 # 最大子进程数(根据服务器内存调整,如4GB内存可设为50)
pm.start_servers = 10 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 20 # 最大空闲子进程数
pm.max_requests = 1000 # 每个子进程处理1000个请求后重启(防止内存泄漏)
sudo systemctl restart php8.1-fpm/etc/nginx/sites-available/yourapp),添加PHP解析规则,将.php请求转发至PHP-FPM。server {
listen 80;
server_name yourdomain.com; # 替换为域名/IP
root /var/www/yourapp; # 应用根目录
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.1-fpm.sock; # 与PHP-FPM通信(Unix套接字)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 脚本路径
include fastcgi_params; # 包含通用FastCGI参数
}
# 禁止访问.htaccess文件(Apache遗留配置)
location ~ /\.ht {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/sudo nginx -t(无错误则继续)sudo systemctl reload nginx.php文件处理。sudo a2enmod php8.1 # 启用PHP模块
sudo systemctl restart apache2
sudo apt install redis-server php8.1-redis -ysudo apt install memcached php8.1-memcached -y.env文件设置CACHE_DRIVER=redis)php.ini中的关键参数,避免因资源不足导致脚本终止。memory_limit = 256M # 脚本最大内存(根据应用调整)
upload_max_filesize = 50M # 最大上传文件大小
post_max_size = 50M # 最大POST数据量
max_execution_time = 300 # 脚本最大执行时间(秒)
/etc/nginx/nginx.conf,在http块中添加:gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1024; # 只压缩大于1KB的文件
gzip_comp_level 6; # 压缩级别(1-9,越高压缩率越高但CPU消耗越大)
php.ini中的disable_functions参数:disable_functions = exec, system, passthru, shell_exec, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source
open_basedir限制PHP脚本可访问的目录,防止越权访问系统文件。open_basedir = /var/www/yourapp:/tmp # 仅允许访问应用目录和临时目录
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com # 替换为域名
sudo systemctl reload nginx
sudo ufw allow 'Nginx Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙
/var/www/yourapp),设置正确的文件权限(避免权限过高导致安全风险)。sudo chown -R www-data:www-data /var/www/yourapp # 设置所有者(Nginx默认用户)
sudo chmod -R 755 /var/www/yourapp # 设置目录权限(755:所有者可读写执行,其他用户可读执行)
/var/log/nginx/error.log/var/log/php8.1-fpm.logsudo apt update && sudo apt upgrade -y
通过以上步骤,可在Ubuntu上实现PHP的高效、安全部署,兼顾性能与稳定性。部署后需根据实际业务需求调整配置(如增加缓存节点、优化数据库查询),进一步提升应用体验。