LNMP环境部署笔记

一、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环境部署分为手动定制和一键快速两种方式,新手建议优先使用一键包,效率高、出错率低;有定制需求的用户可选择手动部署,灵活调整组件版本和配置。部署完成后务必做好安全加固和服务优化,保证网站稳定运行,同时定期备份数据,防止数据丢失。

相关推荐
苏侠客8522 小时前
OPENCLAW部署笔记
笔记
@小明月2 小时前
前端进阶之路
java·前端·笔记
Engineer邓祥浩2 小时前
JVM学习笔记(2) 第一部分 走近java 第1章 走近java
jvm·笔记·学习
71-33 小时前
VMware没网的处理方式
笔记·学习
Hello_Embed3 小时前
LVGL 入门(四):大小坐标与盒子模型
前端·笔记·stm32·单片机·嵌入式
風清掦3 小时前
【江科大STM32学习笔记-08】DMA直接存储器存取
笔记·stm32·单片机·嵌入式硬件·学习
zhouping@3 小时前
JAVA的学习笔记day05
java·笔记·学习
IT19954 小时前
C++工作笔记-动态库中的单例类存储方式
开发语言·c++·笔记
小陈phd4 小时前
多模态大模型学习笔记(十二)——transformer学习之Embedding
笔记·学习·transformer