温馨提示×

LNMP环境Debian如何部署

小樊
38
2026-01-03 09:21:04
栏目: 智能运维

在 Debian 12 上部署 LNMP 的实操步骤

以下流程覆盖 Nginx + MariaDB/MySQL + PHP-FPM 的安装、整合与基础安全配置,适用于 Debian 12(bookworm),其他版本可类推。


一 准备与安装基础组件

  • 更新系统并安装常用工具
    • sudo apt update && sudo apt full-upgrade -y
    • sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release vim
  • 安装 Nginx(两种常用方式,二选一)
    • 方式A 使用 Debian 官方仓库
      • sudo apt install -y nginx
    • 方式B 使用 Nginx 官方仓库(获取更新版本或 mainline)
      • curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /usr/share/keyrings/nginx-keys.gpg
      • echo “deb [signed-by=/usr/share/keyrings/nginx-keys.gpg] https://nginx.org/packages/mainline/debian/ $(lsb_release -cs) nginx” | sudo tee /etc/apt/sources.list.d/nginx.list >/dev/null
      • sudo apt update && sudo apt install -y nginx
  • 启动并开机自启
    • sudo systemctl start nginx && sudo systemctl enable nginx
  • 防火墙放行(如启用 UFW)
    • sudo ufw allow ‘Nginx Full’
  • 验证
    • curl -I http://127.0.0.1 应返回 200/301 等成功状态码

二 安装数据库 MariaDB 或 MySQL

  • 方案A MariaDB(Debian 默认)
    • sudo apt install -y mariadb-server mariadb-client
    • sudo systemctl start mariadb && sudo systemctl enable mariadb
    • 安全初始化
      • sudo mysql_secure_installation
  • 方案B MySQL(官方 APT 仓库)
    • 下载并安装 MySQL APT 配置包(示例为 0.8.26-1,版本号可更新)
      • wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
      • sudo dpkg -i mysql-apt-config_*.deb
      • 在交互界面选择 MySQL 8.0(或所需版本),完成后
      • sudo apt update
    • 安装服务器
      • sudo apt install -y mysql-server
      • sudo systemctl start mysql && sudo systemctl enable mysql
    • 安全初始化
      • sudo mysql_secure_installation
  • 验证
    • sudo systemctl status mariadb 或 sudo systemctl status mysql
    • mysql -u root -p 可登录即正常

三 安装与配置 PHP 与 PHP-FPM

  • 查看可用版本并安装(以 Debian 12 常见为 PHP 8.2
    • apt-cache policy php
    • sudo apt install -y php php-cli php-fpm php-mysql php-gd php-curl php-mbstring php-xml php-zip php-opcache php-intl
  • 启动并开机自启 PHP-FPM
    • sudo systemctl start php8.2-fpm && sudo systemctl enable php8.2-fpm
  • 确认监听方式(默认使用 Unix Socket)
    • ls /run/php/ 应看到 php8.2-fpm.sock
  • 常用扩展按需增删(示例)
    • sudo apt install -y php-imagick php-soap php-ldap php-bcmath

四 整合 Nginx 与 PHP-FPM

  • 编辑站点配置(示例:/etc/nginx/sites-available/default 或新建站点)
    • sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
    • sudo nano /etc/nginx/sites-available/example.com
  • 示例配置片段(按需修改 root、server_name、日志与路径)
    • server { listen 80; server_name example.com www.example.com; root /var/www/example.com/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.2-fpm.sock; } location ~ /.ht { deny all; } access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; }
  • 启用站点并测试配置
    • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    • sudo rm -f /etc/nginx/sites-enabled/default # 如使用自定义站点
    • sudo nginx -t && sudo systemctl reload nginx
  • 创建测试文件
    • echo “” | sudo tee /var/www/example.com/public/info.php
    • 浏览器访问:http://example.com/info.php 应显示 PHP 信息页(上线前请删除该文件)
  • 权限建议
    • sudo chown -R www-data:www-data /var/www/example.com
    • sudo find /var/www/example.com -type d -exec chmod 755 {} ;
    • sudo find /var/www/example.com -type f -exec chmod 644 {} ;

五 安全与运维要点

  • 基础安全
    • 删除或禁用 info.php;限制目录执行权限;隐藏版本信息(在 http 块设置:server_tokens off;)
    • 仅开放必要端口(如 80/443);数据库禁止 root 远程登录;定期备份
  • 启用 HTTPS(Certbot + Nginx)
    • sudo apt install -y certbot python3-certbot-nginx
    • sudo certbot --nginx -d example.com -d www.example.com
    • 自动续期建议加入系统定时任务(certbot 默认已添加 renew 定时器)
  • 常用维护
    • 配置语法检查:sudo nginx -t
    • 热重载:sudo systemctl reload nginx
    • PHP-FPM 重载:sudo systemctl reload php8.2-fpm
    • 日志查看:/var/log/nginx/*.log 与 /var/log/php8.2-fpm.log

0