一、LNMP环境核心概述
LNMP是Linux+Nginx+MySQL/MariaDB+PHP的经典Web服务组合,属于轻量高效、开源免费的生产级Web运行环境,相比LAMP架构,Nginx占用资源更少、高并发处理能力更强,广泛用于搭建博客、电商、企业官网等各类PHP动态网站。
核心组件分工:
-
Linux:底层操作系统,提供稳定运行载体,主流版本为CentOS 7/8、Alibaba Cloud Linux、Ubuntu 20.04/22.04
-
Nginx:高性能Web服务器,负责接收HTTP请求、分发静态资源、转发PHP请求至PHP-FPM
-
MySQL/MariaDB:关系型数据库,存储网站数据,MariaDB兼容MySQL且开源更友好,生产环境优先选用
-
PHP-FPM:PHP进程管理器,专门处理PHP脚本解析,实现Nginx与PHP的高效联动
部署前提:建议服务器内存≥2GB,具备root或sudo权限,网络通畅,提前放行80/443端口(公网访问必备),关闭SELinux和防火墙(或配置放行规则)。
二、部署前前置准备(必做)
2.1 系统初始化与依赖安装
先清理系统自带冲突软件,更新系统并安装基础工具,避免后续安装报错。
CentOS/Alibaba Cloud Linux系统
# 卸载自带Apache、旧版PHP、Nginx yum remove httpd php* nginx -y # 关闭SELinux(临时+永久) setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 关闭防火墙或放行端口 systemctl stop firewalld systemctl disable firewalld # 更新系统并安装基础依赖 yum update -y && yum install wget curl vim gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y
Ubuntu/Debian系统
# 卸载自带Apache、旧版PHP apt-get remove apache2 php* nginx -y # 更新软件源 apt update -y && apt upgrade -y # 安装基础依赖 apt install wget curl vim build-essential libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev -y
2.2 端口与网络配置
云服务器需在控制台安全组放行TCP 80端口(HTTP)、443端口(HTTPS),本地服务器关闭防火墙或放行对应端口,确保公网可访问。
三、手动分步部署LNMP(推荐定制化)
手动部署可灵活调整组件版本、配置参数,适合有一定Linux基础、需要个性化定制环境的场景,以CentOS 7为例,Ubuntu系统仅需替换包管理命令(yum换apt)。
3.1 安装Nginx
# 添加Nginx官方源 cat > /etc/yum.repos.d/nginx.repo << EOF [nginx-stable] name=nginx stable repo baseurl=https://nginx.org/packages/centos/7/\$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key EOF # 安装Nginx yum install -y nginx # 启动并设置开机自启 systemctl enable --now nginx # 验证Nginx状态 systemctl status nginx # 浏览器访问服务器IP,出现Nginx欢迎页即安装成功
3.2 安装MySQL/MariaDB
生产环境优先选MariaDB,兼容MySQL且无版权风险,安装更简便。
# 安装MariaDB服务端和客户端 yum install -y mariadb-server mariadb # 启动并设置开机自启 systemctl enable --now mariadb # 数据库安全加固(必做,提升安全性) mysql_secure_installation # 加固步骤:设置root强密码、移除匿名用户、禁止root远程登录、删除测试数据库、重载权限
验证数据库:输入 mysql -u root -p,输入设置的密码,能正常登录即成功。
3.3 安装PHP与PHP-FPM
PHP版本推荐8.0以上,需安装PHP-FPM和常用扩展,确保Nginx联动和网站功能正常。
# 安装Remi源(提供新版PHP) yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm # 启用PHP8.2版本 yum install -y yum-utils yum-config-manager --enable remi-php82 # 安装PHP及核心扩展 yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-xml php-curl php-zip php-bcmath php-opcache # 启动并设置开机自启 systemctl enable --now php-fpm # 验证PHP版本 php -v
3.4 Nginx与PHP-FPM联动配置
默认Nginx不支持PHP解析,需修改配置文件,转发PHP请求至PHP-FPM。
# 备份默认配置 cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak # 编辑Nginx配置 vim /etc/nginx/conf.d/default.conf # 修改核心配置如下 server { listen 80; server_name 服务器IP或域名; root /usr/share/nginx/html; index index.php index.html index.htm; location / { try_files \$uri \$uri/ /index.php?$query_string; } # 解析PHP文件 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; include fastcgi_params; } } # 检查配置是否有误 nginx -t # 重启Nginx生效 systemctl restart nginx
3.5 环境验证
# 创建PHP测试文件 echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/phpinfo.php # 浏览器访问 http://服务器IP/phpinfo.php # 出现PHP环境信息页面,即LNMP环境部署成功 # 测试完成后删除测试文件,防止敏感信息泄露 rm -rf /usr/share/nginx/html/phpinfo.php
四、一键部署LNMP(新手推荐)
使用官方LNMP一键安装包,无需手动配置,适合快速搭建环境,全程自动化安装,步骤极简。
# 下载一键安装包 wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz # 解压安装包 tar -zxvf lnmp1.9.tar.gz # 进入目录 cd lnmp1.9 # 赋予执行权限并安装 chmod +x install.sh ./install.sh lnmp # 安装过程中按提示设置MySQL root密码、选择PHP版本、是否安装其他组件,等待10-20分钟即可完成 # 安装完成后,输入lnmp start/stop/restart 可管理服务
一键安装包默认路径:Nginx配置/usr/local/nginx/conf/,MySQL路径/usr/local/mysql/,PHP路径/usr/local/php/,网站根目录/home/wwwroot/。
五、核心服务管理命令
| 操作 | Nginx | MariaDB/MySQL | PHP-FPM | 一键包通用 |
|---|---|---|---|---|
| 启动服务 | systemctl start nginx | systemctl start mariadb | systemctl start php-fpm | lnmp start |
| 停止服务 | systemctl stop nginx | systemctl stop mariadb | systemctl stop php-fpm | lnmp stop |
| 重启服务 | systemctl restart nginx | systemctl restart mariadb | systemctl restart php-fpm | lnmp restart |
| 查看状态 | systemctl status nginx | systemctl status mariadb | systemctl status php-fpm | lnmp status |
| 开机自启 | systemctl enable nginx | systemctl enable mariadb | systemctl enable php-fpm | 默认自启 |
六、常见故障排查
6.1 访问网站显示502 Bad Gateway
-
原因:PHP-FPM未启动,或Nginx配置中fastcgi_pass地址错误
-
解决:启动php-fpm服务,核对www.conf中listen地址与Nginx配置一致
6.2 访问PHP文件直接下载,不解析
-
原因:Nginx未配置PHP解析规则,或配置文件未生效
-
解决:重新检查Nginx配置,执行nginx -t校验,重启Nginx
6.3 无法连接数据库
-
原因:数据库服务未启动、密码错误、权限不足
-
解决:启动数据库服务,核对账号密码,给PHP用户授予数据库权限
6.4 公网无法访问网站
-
原因:安全组未放行80端口、防火墙未关闭、Nginx未启动
-
解决:放行端口、关闭防火墙、启动Nginx服务
七、生产环境安全加固与优化
-
数据库安全:禁止root远程登录,创建专用数据库用户,设置强密码,定期备份数据
-
Nginx优化:开启gzip压缩、设置缓存策略、隐藏Nginx版本号
-
PHP优化:开启opcache加速,调整进程数,限制文件上传大小
-
权限管控:网站目录权限设为755,文件权限644,避免root用户直接运行Web服务
-
日志管理:开启Nginx、PHP、MySQL日志,定期清理日志文件,排查异常访问
八、部署总结
LNMP环境部署分为手动定制和一键快速两种方式,新手建议优先使用一键包,效率高、出错率低;有定制需求的用户可选择手动部署,灵活调整组件版本和配置。部署完成后务必做好安全加固和服务优化,保证网站稳定运行,同时定期备份数据,防止数据丢失。