首页主机资讯Debian上LNMP的最佳实践

Debian上LNMP的最佳实践

时间2026-01-15 17:58:03发布访客分类主机资讯浏览421
导读:Debian 上 LNMP 最佳实践 一 基础安装与最小可用配置 更新系统并安装基础工具:sudo apt update && sudo apt full-upgrade -y && sudo apt in...

Debian 上 LNMP 最佳实践

一 基础安装与最小可用配置

  • 更新系统并安装基础工具:sudo apt update & & sudo apt full-upgrade -y & & sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
  • 安装与启用 Nginx:sudo apt install -y nginx & & sudo systemctl enable --now nginx
  • 安装 MariaDB 并加固:sudo apt install -y mariadb-server & & sudo mysql_secure_installation
  • 安装 PHP-FPM 与常用扩展(以 Debian 12 常见版本为例,路径随版本变化):sudo apt install -y php-fpm php-mysql php-opcache php-cli php-gd php-curl php-mbstring
  • 配置 Nginx 处理 PHP(示例,/etc/nginx/sites-available/default):
    • 在 server 块中添加:
      • location ~ .php$ {
        • include snippets/fastcgi-php.conf;
        • fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 路径按实际版本调整
        • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        • include fastcgi_params;
      • }
    • 检查并重载:sudo nginx -t & & sudo systemctl reload nginx
  • 创建测试页:echo “” | sudo tee /var/www/html/info.php,访问确认后在生产环境删除该文件。

二 性能优化要点

  • Nginx
    • 核心:worker_processes auto;events { worker_connections 16384; use epoll; multi_accept on; }
    • 连接与缓冲:keepalive_timeout 65;keepalive_requests 100000;sendfile on;tcp_nodelay on;server_tokens off
    • 压缩:gzip on;gzip_vary on;gzip_comp_level 6;gzip_types text/plain text/css application/json application/javascript text/xml application/xml+rss image/svg+xml
    • 静态资源缓存:location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { expires 1y; add_header Cache-Control “public, immutable”; }
    • 可选缓存:proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=STATIC:10m max_size=1g inactive=60m use_temp_path=off;
  • PHP-FPM(/etc/php/*/fpm/pool.d/www.conf)
    • 进程模型:pm dynamic;pm.max_children 50;pm.start_servers 5;pm.min_spare_servers 5;pm.max_spare_servers 35
    • 请求控制:pm.max_requests 500;request_terminate_timeout 300
    • 监听与权限:listen = /run/php/php8.2-fpm.sock;listen.owner = www-data;listen.group = www-data;listen.mode = 0660
    • 安全与性能:catch_workers_output yes;php_admin_value[memory_limit] = 128M
    • OPcache(/etc/php/*/fpm/php.ini):opcache.enable=1;opcache.memory_consumption=256;opcache.interned_strings_buffer=16;opcache.max_accelerated_files=10000;opcache.validate_timestamps=0(生产建议关闭,配合部署脚本触发opcache_reset);opcache.jit=tracing;opcache.jit_buffer_size=128M
  • MariaDB(/etc/mysql/mariadb.conf.d/50-server.cnf)
    • 内存与缓存:innodb_buffer_pool_size = 物理内存的50%–70%(如 8GB 机器可设 4G–6G
    • 连接与会话:max_connections 200–500(按并发与内存评估);skip-name-resolve(避免 DNS 反向解析)
    • 日志与诊断:slow_query_log 1;long_query_time 1;log_queries_not_using_indexes 0
    • 其他:innodb_flush_log_at_trx_commit 1(强一致);sync_binlog 1;tmp_table_size / max_heap_table_size 64M–256M
  • Linux 系统
    • 文件句柄与进程限制:/etc/security/limits.conf 增加 www-data soft nofile 65535;hard nofile 65535
    • 内核网络(/etc/sysctl.conf):net.core.somaxconn 65535;net.ipv4.ip_local_port_range 1024 65535;net.ipv4.tcp_fin_timeout 30;net.ipv4.tcp_slow_start_after_idle 0;net.ipv4.tcp_fastopen 3;net.core.netdev_max_backlog 65535;net.ipv4.tcp_syncookies 1;net.nf_conntrack_max 2097152(如启用 conntrack)。

三 安全加固清单

  • 系统与软件:保持 Debian 安全更新 与 Nginx、MariaDB、PHP 的及时升级;最小化安装与运行服务
  • 防火墙:使用 ufwnftables 仅开放 22/80/443;sudo ufw allow 22,80,443/tcp & & sudo ufw enable
  • SSH:禁用 root 远程登录;使用 SSH 密钥 认证;可更改默认端口并限制登录用户
  • 数据库:仅监听 127.0.0.1(bind-address);执行 mysql_secure_installation;为应用创建最小权限专用账户
  • PHP:expose_php Off;display_errors Off;disable_functions 禁用危险函数(如 exec、shell_exec、passthru、proc_open 等);open_basedir 限制目录
  • Nginx:server_tokens off;限制上传大小(client_max_body_size);对管理路径与敏感文件(如 .env、.git)返回 403
  • 机密与合规:密钥/证书妥善保管;启用 HTTPS/TLS;定期审计日志与可疑请求。

四 稳定性与运维

  • 进程管理:使用 systemd 管理 Nginx、MariaDB、PHP-FPM;设置开机自启;变更前执行配置语法检查(如 sudo nginx -t)
  • 监控与告警:部署 Prometheus + Grafana 监控 Nginx、PHP-FPM、MariaDB 关键指标;设置磁盘、内存、连接数阈值告警
  • 日志与诊断:集中采集并轮转 Nginx access/error、MariaDB slow、PHP-FPM error;定期分析慢查询与 5xx 错误
  • 备份与恢复:定期备份 /var/www、数据库与配置文件;验证恢复流程;保留 至少 7–30 天 的可用备份
  • 高可用与扩展:引入 负载均衡多实例/主从复制 提升吞吐与容灾能力;灰度发布与回滚机制。

五 部署与验证清单

  • 域名与证书:正确配置 server_name;使用 Let’s Encrypt 签发并自动续期证书(certbot)
  • 文件与权限:/var/www 属主 www-data:www-data;上传目录禁止执行;.ht* 访问拒绝
  • 连接与超时:Nginx fastcgi_read_timeout 300;PHP-FPM request_terminate_timeout 300;MariaDB wait_timeout 合理设置
  • 压测与基线:使用 ab/wrk 进行基线压测;逐步调优 worker_connections、pm.max_children、innodb_buffer_pool_size 等
  • 回滚预案:保留上一版配置与发布包;变更窗口与回滚步骤文档化;异常自动降级与告警联动。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian上LNMP的最佳实践
本文地址: https://pptw.com/jishu/780268.html
如何优化Debian上的LNMP响应时间 Debian SSH如何实现多用户管理

游客 回复需填写必要信息