如何在Debian上部署LNMP服务器
LNMP(Linux + Nginx + MySQL/MariaDB + PHP)是常见的Web服务器架构,适用于搭建动态网站(如WordPress、Discuz等)。以下是在Debian系统上部署LNMP的详细步骤:
首先确保系统软件包为最新版本,避免兼容性问题:
sudo apt update && sudo apt upgrade -y
Nginx以其高性能和低资源占用著称,是LNMP的首选Web服务器:
sudo apt install nginx -y
安装完成后,启动Nginx并设置开机自启动:
sudo systemctl start nginx
sudo systemctl enable nginx
验证安装:在浏览器中访问服务器IP地址,若看到Nginx默认欢迎页面(如“Welcome to nginx!”),则说明安装成功。
MySQL是传统关系型数据库,MariaDB是其分支(兼容MySQL)。推荐使用MariaDB(Debian默认仓库版本):
sudo apt install mariadb-server mariadb-client -y
安装过程中会提示设置root用户密码,务必记住该密码(后续数据库操作需用到)。
启动MariaDB并设置开机自启动:
sudo systemctl start mariadb
sudo systemctl enable mariadb
安全加固:运行以下命令修复默认配置漏洞(如删除匿名用户、禁止root远程登录、删除测试数据库):
sudo mysql_secure_installation
按照提示逐步操作(输入root密码→移除匿名用户→禁止root远程登录→删除测试数据库→重新加载权限)。
PHP是处理动态内容的脚本语言,需安装PHP核心及与Nginx、MySQL交互的扩展:
sudo apt install php-fpm php-mysql php-cli php-gd php-curl php-mbstring php-xml -y
php-fpm:PHP FastCGI进程管理器,用于与Nginx通信;php-mysql:MySQL数据库驱动,允许PHP连接MySQL;php-cli:命令行PHP工具,用于本地测试;php-gd/php-curl/php-mbstring:常用扩展,支持图片处理、HTTP请求、多字节字符等功能。启动PHP-FPM并设置开机自启动:
sudo systemctl start php-fpm # Debian默认版本为php7.4-fpm(需根据实际版本调整)
sudo systemctl enable php-fpm
优化配置:编辑PHP-FPM池配置文件(路径取决于PHP版本,如/etc/php/7.4/fpm/pool.d/www.conf),确保以下参数正确:
listen = /run/php/php7.4-fpm.sock # 监听Unix socket(推荐,性能优于TCP)
listen.owner = www-data
listen.group = www-data
修改后重启PHP-FPM使配置生效:
sudo systemctl restart php-fpm
默认Nginx配置无法处理PHP请求,需修改站点配置文件(以默认站点为例):
sudo nano /etc/nginx/sites-available/default
找到server块,修改或添加以下内容:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html; # 网站根目录(默认)
index index.php index.html; # 添加index.php到默认索引文件
location / {
try_files $uri $uri/ =404; # 尝试访问文件,不存在则返回404
}
location ~ \.php$ { # 处理PHP请求
include snippets/fastcgi-php.conf; # 引入FastCGI配置
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 与PHP-FPM通信(路径需与www.conf一致)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 传递脚本路径
include fastcgi_params; # 包含通用FastCGI参数
}
location ~ /\.ht { # 禁止访问.htaccess文件(Apache遗留配置)
deny all;
}
}
保存并退出编辑器(Ctrl+O→回车→Ctrl+X)。
测试配置语法:
sudo nginx -t
若输出“syntax is ok”和“test is successful”,则说明配置正确。
重载Nginx:
sudo systemctl reload nginx
创建PHP信息测试文件,确认PHP与Nginx集成正常:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
在浏览器中访问http://服务器IP/info.php,若看到PHP详细信息页面(如PHP版本、模块列表),则说明LNMP环境部署成功。
若系统启用了UFW防火墙,需允许HTTP(80)和HTTPS(443)流量:
sudo ufw allow 'Nginx Full'
sudo ufw enable # 若未启用,可选择性开启
为网站启用HTTPS(加密传输),使用Let’s Encrypt免费证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com # 替换为你的域名
按照提示完成证书申请(需验证域名所有权),证书会自动配置到Nginx中。
自动续期:Let’s Encrypt证书有效期为90天,可通过以下命令测试续期:
sudo certbot renew --dry-run
sudo mysql -u root -p
CREATE DATABASE mydb;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
/var/www/html(或自定义根目录),修改Nginx配置中的root指向该目录。通过以上步骤,你已在Debian系统上成功部署LNMP服务器,可满足大多数动态网站的运行需求。