- 首页 >
- 问答 >
-
云计算 >
- 如何优化Ubuntu LNMP服务器配置
如何优化Ubuntu LNMP服务器配置
小樊
41
2025-11-16 15:14:11
Ubuntu LNMP 服务器配置优化指南
一 基线检查与快速加固
- 保持系统与应用为最新版本:sudo apt update && sudo apt upgrade -y。
- 安装与验证组件:安装 Nginx、MySQL/MariaDB、PHP-FPM,确认版本与套接字路径(如 /var/run/php/php8.1-fpm.sock),执行 sudo nginx -t 校验配置并重启服务。
- 目录与权限:Web 根目录建议 /var/www/html,权限 chown -R www-data:www-data /var/www/html,权限 755。
- 防火墙与 HTTPS:启用 sudo ufw allow ‘Nginx Full’;使用 Certbot 获取免费证书:sudo apt install certbot python3-certbot-nginx -y && sudo certbot --nginx -d your_domain.com。
- 日志与排错:关注 /var/log/nginx/error.log 与 /var/log/php8.1-fpm.log;遇到 502 Bad Gateway 优先检查 PHP-FPM 是否运行及 fastcgi_pass 路径是否正确。
二 Nginx 优化
- 进程与连接:设置 worker_processes auto; 与 events { worker_connections 1024; },按 CPU 与内存调优;开启长连接 keepalive_timeout 65; keepalive_requests 100;。
- 静态资源缓存:对图片、CSS、JS 设置长期缓存与强缓存头,示例:
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control “public, no-transform”; }。
- 启用压缩与高效传输:开启 gzip on;,并启用 sendfile on; tcp_nodelay on;。
- 反向代理/页面缓存(可选):定义缓存区与策略,示例:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
在 server/location 中使用 proxy_cache my_cache; 并设置 proxy_cache_valid。
- 安全与观测:关闭版本信息 server_tokens off;,合理设置 client_max_body_size,并定期分析访问与错误日志。
三 PHP-FPM 与 OPcache 优化
- 进程模型与关键参数(/etc/php/8.1/fpm/pool.d/www.conf):使用 pm = dynamic,按内存估算 pm.max_children,并配置 pm.start_servers / pm.min_spare_servers / pm.max_spare_servers;可按需设置 pm.max_requests 以回收进程。
- OPcache 加速:在 php.ini 启用并调优,示例:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.jit=on
opcache.jit_buffer_size=128M
- 上传与脚本限制:根据业务调整 upload_max_filesize、post_max_size、memory_limit、max_execution_time,避免过大请求拖慢 FPM。
- 变更生效:修改后执行 sudo systemctl reload php8.1-fpm 与 sudo nginx -s reload。
四 MySQL MariaDB 优化
- 内存与连接:将 innodb_buffer_pool_size 设为可用内存的较大比例(常见为50%–70%,视总内存与应用而定),结合业务设置 max_connections。
- 查询与索引:为高频查询字段建立合适索引,避免 **SELECT ***,使用 EXPLAIN 分析慢查询;开启并定期分析慢查询日志。
- 架构扩展:读多写少场景可引入 主从复制 分担读压力;使用 GTID 可简化复制管理。
- 持续调优:借助 mysqltuner 定期给出参数建议,并结合监控指标滚动优化。
五 系统级与高并发调优
- 文件描述符与进程限制:提升 ulimit -n 65535,并在服务单元或 limits.conf 中持久化;Nginx 可设置 worker_rlimit_nofile 65535;。
- 内核网络参数(/etc/sysctl.conf 或 sysctl -w):
net.core.somaxconn=65535
net.ipv4.ip_local_port_range=1024 65535
net.ipv4.tcp_fin_timeout=30
net.core.netdev_max_backlog=65535
net.ipv4.tcp_syncookies=1
注:如启用 nf_conntrack,需同步调大相关最大值,避免连接跟踪瓶颈。
- 存储与虚拟内存:优先使用 SSD;根据负载调整 vm.swappiness,减少不必要的换页。
- 监控与压测:部署 Prometheus + Grafana 或 Zabbix 观测 CPU/内存/连接/慢查询;使用 ab 进行基线压测(如 ab -n 1000 -c 100 http://your_server_ip/),在变更前后对比 RPS、P95/P99 延迟与错误率,逐步迭代参数。