温馨提示×

Debian LNMP如何定制服务器

小樊
43
2026-01-01 10:36:19
栏目: 云计算

Debian LNMP 定制与优化指南

一 基础安装与集成

  • 更新系统并安装组件
    • 执行:sudo apt update && sudo apt upgrade -y
    • 安装:NginxMariaDB/MySQLPHP-FPM 及常用扩展(如:php-mysql php-curl php-gd php-mbstring php-xml php-zip
    • 示例:sudo apt install -y nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
  • 启动与开机自启
    • sudo systemctl start nginx && sudo systemctl enable nginx
    • sudo systemctl start mariadb && sudo systemctl enable mariadb
    • sudo systemctl start php7.4-fpm && sudo systemctl enable php7.4-fpm(请将 7.4 替换为实际版本)
  • MariaDB 安全初始化
    • 执行:sudo mysql_secure_installation
  • Nginx 与 PHP-FPM 集成
    • 站点示例(/etc/nginx/sites-available/default 或 /etc/nginx/conf.d/default.conf):
      server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.php index.html;
        server_name _;
      
        location / {
          try_files $uri $uri/ =404;
        }
      
        location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # 按实际版本调整
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
        }
      
        location ~ /\.ht {
          deny all;
        }
      }
      
    • 检查并重载:sudo nginx -t && sudo systemctl reload nginx
  • 防火墙放行
    • UFW:sudo ufw allow 'Nginx Full'
  • 验证
    • 创建测试文件:echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
    • 访问 http://服务器IP/info.php 应看到 PHP 信息页

二 站点与虚拟主机管理

  • 多站点建议采用“目录+软链”方式
    • 新建站点配置:sudo nano /etc/nginx/sites-available/example.com
    • 启用站点:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    • 重载 Nginx:sudo systemctl reload nginx
  • 目录与权限
    • 建议目录:/var/www/example.com
    • 权限:sudo chown -R www-data:www-data /var/www/example.com && sudo chmod -R 755 /var/www/example.com
  • 伪静态与框架
    • 通用前端控制器(适合 Laravel、Symfony 等):
      location / {
        try_files $uri $uri/ /index.php?$query_string;
      }
      
    • 按需添加 WordPressDiscuz 等伪静态规则或 include 专用配置文件

三 性能与安全优化

  • Nginx
    • 核心参数(/etc/nginx/nginx.conf):
      worker_processes auto;
      worker_rlimit_nofile 65535;
      events {
        worker_connections 4096;
        use epoll;
        multi_accept on;
      }
      http {
        sendfile on;
        tcp_nodelay on;
        keepalive_timeout 65;
        keepalive_requests 100000;
        gzip on;
        gzip_vary on;
        gzip_comp_level 6;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
        server_tokens off;
        client_max_body_size 50M;
      }
      
  • PHP
    • php.ini 关键项:
      • cgi.fix_pathinfo=0
      • expose_php = Off
      • display_errors = Off
      • opcache.enable=1
      • opcache.memory_consumption=256
      • opcache.interned_strings_buffer=64
      • opcache.max_accelerated_files=10000
      • opcache.validate_timestamps=1(生产建议配合文件时间戳管理改为 0)
    • FPM 进程池(/etc/php/7.4/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
      • listen.backlog = 1024
  • MariaDB/MySQL
    • my.cnf 关键项(示例为 2GB 内存机器,按实际调整):
      • innodb_buffer_pool_size=1G
      • max_connections=200
      • slow_query_log=1
      • long_query_time=2
  • 系统与网络
    • 文件句柄:sudo sh -c 'echo "* soft nofile 65535" >> /etc/security/limits.conf'
    • 内核参数(/etc/sysctl.conf):
      • net.core.somaxconn=65535
      • net.ipv4.ip_local_port_range=1024 65535
      • net.ipv4.tcp_fin_timeout=30
      • net.ipv4.tcp_tw_reuse=1
  • 安全加固
    • 防火墙仅开放 80/443(必要时限制 3306 仅内网)
    • SSH:禁用 root 登录、使用密钥登录、改端口
    • 数据库:仅本地监听或限定网段、最小权限账户、定期备份

四 自动化与证书管理

  • 证书签发与自动续期
    • 安装 Certbot:sudo apt install -y certbot python3-certbot-nginx
    • 签发并自动配置 Nginx:sudo certbot --nginx -d example.com -d www.example.com
    • 自动续期测试:sudo certbot renew --dry-run
  • Composer(PHP 依赖管理)
    • 安装:curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer

五 常见问题与排错

  • 502 Bad Gateway
    • 检查 PHP-FPM 是否运行:systemctl status php7.4-fpm
    • 核对 Nginx 中 fastcgi_pass 路径与 PHP-FPM 监听一致(如:/run/php/php7.4-fpm.sock127.0.0.1:9000
  • 403 Forbidden
    • 检查站点根目录权限与 index 指令;确保 /var/www 归属 www-data:www-data
  • 404 或路由不生效
    • 确认 try_files $uri $uri/ /index.php?$query_string; 已配置(适用于前端控制器)
  • 上传过大
    • Nginx:client_max_body_size 50M;(按业务调整)
    • PHP:upload_max_filesizepost_max_size(需同步调整)
  • 配置文件语法
    • Nginx:sudo nginx -treload 生效

0