部署LNMP环境
约 816 字大约 3 分钟
2026-08-29
LNMP 指 Linux + Nginx + MySQL/MariaDB + PHP 的网站运行环境,是部署 WordPress 等动态网站的基础。本文提供两种部署方式:使用宝塔面板一键部署(推荐),或手动部署。
开始前
- 已远程连接 Linux 实例,并具备 root 或 sudo 权限。
- 需要对外访问时,先在安全组放行 TCP 80、443。
- 服务器内存建议不低于 1GB。
方式一:使用宝塔面板(推荐)
宝塔面板可在网页上完成 Nginx、MySQL、PHP 及网站的安装管理,无需手敲命令:
- 安装宝塔面板,参见Linux及Windows系统宝塔面板安装教程。
- 登录宝塔面板,进入软件商店,安装 Nginx、MySQL、PHP(任选版本)及 phpMyAdmin。
- 部署完成后即可在网站页面添加站点。
方式二:手动部署
以下命令以 Debian / Ubuntu 与 CentOS / Rocky 为例,其他发行版替换为对应包管理器命令即可。
安装 Nginx
sudo apt update && sudo apt install nginx -ysudo dnf install nginx -y# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx安装数据库(MariaDB)
sudo apt install mariadb-server -ysudo dnf install mariadb-server -ysudo systemctl start mariadb
sudo systemctl enable mariadb
# 执行安全初始化(设置 root 密码、移除匿名用户等,按提示操作)
sudo mysql_secure_installation注
MariaDB 与 MySQL 用法兼容,作为 MySQL 的社区分支广泛用于 LNMP 环境;如需 MySQL 官方版本,可参照其官方仓库文档安装。
安装 PHP 及常用扩展
sudo apt install php-fpm php-mysql php-gd php-xml php-mbstring php-curl php-zip -ysudo dnf install php-fpm php-mysqlnd php-gd php-xml php-mbstring php-curl php-zip -ysudo systemctl start php-fpm
sudo systemctl enable php-fpm配置 Nginx 支持 PHP
创建站点目录与测试页面:
sudo mkdir -p /var/www/lnmp sudo vi /var/www/lnmp/index.php写入以下内容保存:
<?php phpinfo();新建 Nginx 站点配置
/etc/nginx/conf.d/lnmp.conf:server { listen 80; server_name _; root /var/www/lnmp; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }fastcgi_pass 的路径按实际填写
PHP-FPM 的 socket 路径随版本不同而变化,执行
ls /run/php/查看实际名称后替换:- Debian / Ubuntu:
unix:/run/php/php<版本>-fpm.sock - CentOS / Rocky:
unix:/run/php-fpm/www.sock
- Debian / Ubuntu:
检查配置并重载:
sudo nginx -t && sudo systemctl reload nginx
验证
浏览器访问 http://<实例公网IP>/,看到 PHP 信息页面即部署成功。测试完成后建议删除 index.php 中的 phpinfo 页面,避免暴露服务器信息。
常见问题
访问 PHP 文件直接被下载,而不是执行?
Nginx 未正确将 .php 转发给 PHP-FPM:检查 fastcgi_pass 路径是否与实际的 socket 文件一致,nginx -t 通过后执行 systemctl reload nginx。
访问报 502 Bad Gateway?
通常是 PHP-FPM 未运行或 socket 路径不对:
sudo systemctl status php-fpm
ls /run/php/ # Debian/Ubuntu页面能打开但连接数据库失败?
确认 MariaDB 已启动(systemctl status mariadb),应用使用的主机为 localhost、账号密码正确;数据库仅本机使用时无需在安全组放行 3306。
