温馨提示×

如何在Debian上自定义LNMP配置

小樊
35
2025-12-02 23:42:57
栏目: 智能运维

在 Debian 上自定义 LNMP 配置的实用步骤

一 准备与安装

  • 更新系统并安装组件:
    • 执行:sudo apt update && sudo apt upgrade -y
    • 安装:NginxMariaDB/MySQLPHP 与 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 php<版本>-fpm && sudo systemctl enable php<版本>-fpm
  • 数据库安全初始化:sudo mysql_secure_installation
  • 版本确认与路径提示:
    • PHP 版本可用:apt-cache search php | grep php<主版本>
    • PHP-FPM 监听常见路径:/run/php/php<版本>-fpm.sock/var/run/php/php<版本>-fpm.sock(以实际安装为准)

二 核心配置与目录结构

  • Nginx
    • 主配置:/etc/nginx/nginx.conf
    • 站点配置:/etc/nginx/sites-available/,启用时软链到 /etc/nginx/sites-enabled/
    • 测试与重载:sudo nginx -t && sudo systemctl reload nginx
  • MariaDB/MySQL
    • 主配置:/etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf
    • 重启服务:sudo systemctl restart mariadb(或 mysql
  • PHP
    • php.ini 位置可用:php --ini 查看(区分 CLIFPM
    • FPM 池配置:/etc/php/<版本>/fpm/pool.d/www.conf
    • 修改 FPM 后重启:sudo systemctl restart php<版本>-fpm

三 关键自定义示例

  • 站点与 PHP 处理(Nginx 虚拟主机)
    • 建议为每个站点新建配置:/etc/nginx/sites-available/yourdomain.com
    • 启用站点:sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
    • 示例片段:
      server {
          listen 80;
          server_name yourdomain.com www.yourdomain.com;
          root /var/www/yourdomain.com/public;
          index index.php index.html;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php<版本>-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
  • PHP 安全与性能
    • 关闭路径信息泄露:cgi.fix_pathinfo=0(编辑 /etc/php/<版本>/fpm/php.ini
    • 启用 OPcache(生产建议开启):
      opcache.enable=1
      opcache.memory_consumption=128
      opcache.interned_strings_buffer=8
      opcache.max_accelerated_files=4000
      opcache.validate_timestamps=0   ; 生产建议关闭,部署后手动清理缓存
      opcache.revalidate_freq=60
      
    • 修改后重启 FPM:sudo systemctl restart php<版本>-fpm
  • MariaDB 基础优化(示例)
    • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
      • innodb_buffer_pool_size=1G(按内存调整,常见为内存的 50%–75%
      • max_connections=200
      • 开启慢查询日志用于排障:slow_query_log=1slow_query_log_file=/var/log/mysql/mysql-slow.loglong_query_time=2
    • 重启数据库:sudo systemctl restart mariadb

四 安全与运维要点

  • 防火墙放行 Web 流量:
    • UFW:sudo ufw allow 'Nginx Full'
  • HTTPS 自动化:
    • 安装与签发:sudo apt install certbot python3-certbot-nginx -y
    • 命令:sudo certbot --nginx -d yourdomain.com
  • 文件与目录权限:
    • Web 根目录建议属主 www-datasudo chown -R www-data:www-data /var/www/yourdomain.com
    • 目录权限 755,文件 644
  • 日志与排错:
    • Nginx 错误日志:/var/log/nginx/error.log
    • PHP-FPM 日志:查看 /etc/php/<版本>/fpm/pool.d/www.conferror_log 配置
    • 数据库错误日志:常见在 /var/log/mysql/error.log
  • 变更流程建议:
    • 修改前备份配置:sudo cp file file.bak-$(date +%F)
    • 每次变更后执行:sudo nginx -t 校验,再 reload/restart 服务

0