LNMP环境部署笔记

一、部署前前置准备

1.1 系统基础优化与依赖安装

先更新系统软件包、关闭不必要安全组件(测试环境),安装基础依赖工具,避免后续安装报错;生产环境建议仅放行端口,不直接关闭防火墙。

复制代码

# 更新系统软件包 yum update -y && yum upgrade -y # 安装基础依赖工具 yum install -y wget vim net-tools yum-utils epel-release # 临时关闭SELinux(立即生效) setenforce 0 # 永久关闭SELinux(重启后生效,避免重启后失效) sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 测试环境:关闭防火墙并禁用开机自启 systemctl stop firewalld systemctl disable firewalld # 生产环境建议:仅放行80/443/22端口,保留防火墙 # firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=443/tcp --permanent # firewall-cmd --reload

1.2 更换国内YUM源(提升下载速度)

CentOS 7默认官方源下载较慢,更换为阿里云镜像源,加快组件安装速度,避免超时失败。

复制代码

# 备份原有源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 下载阿里云源 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 清理并重建缓存 yum clean all && yum makecache

二、Nginx安装与配置(Web服务器)

2.1 添加Nginx官方YUM源

CentOS 7默认源无最新稳定版Nginx,需添加官方源,保证版本合规。

复制代码

vim /etc/yum.repos.d/nginx.repo

写入以下内容,保存退出(:wq):

复制代码

[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key

2.2 安装、启动Nginx并设置开机自启

复制代码

# 安装Nginx yum install -y nginx # 启动Nginx服务 systemctl start nginx # 设置开机自启 systemctl enable nginx # 查看Nginx状态,确认运行正常 systemctl status nginx

2.3 Nginx核心目录与基础验证

  • 主配置文件:/etc/nginx/nginx.conf

  • 站点配置目录:/etc/nginx/conf.d/(新增站点建议在此新建独立配置)

  • 网站根目录:/usr/share/nginx/html

  • 日志目录:/var/log/nginx/

浏览器访问服务器公网IP,出现Nginx默认欢迎页,说明安装成功。

三、MySQL 8.0安装与安全配置(数据库)

3.1 添加MySQL官方源并安装

复制代码

# 安装MySQL 8.0官方源 rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # 安装MySQL服务 yum install -y mysql-community-server # 启动MySQL并设置开机自启 systemctl start mysqld systemctl enable mysqld

3.2 初始化MySQL与密码设置

MySQL 8.0安装后会生成临时root密码,需先获取再修改,同时完成安全初始化。

复制代码

# 获取临时root密码(复制末尾密码串) grep 'temporary password' /var/log/mysqld.log # 登录MySQL(输入临时密码,密码不显示) mysql -uroot -p # 修改root密码(生产环境务必设置复杂密码,包含大小写、数字、特殊字符) ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; # 刷新权限 FLUSH PRIVILEGES; # 退出MySQL exit;

3.3 MySQL安全加固(可选,生产必做)

复制代码

# 执行安全脚本,删除匿名用户、禁止root远程登录、删除测试数据库 mysql_secure_installation

按提示操作,依次输入root新密码,选择Y确认所有安全选项。

四、PHP 8.1安装与配置(脚本解析)

4.1 添加PHP第三方源(Remi源)

CentOS 7默认源PHP版本过低,添加Remi源安装PHP 8.1,适配主流Web程序。

复制代码

# 安装Remi源依赖 rpm -ivh https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm # 启用PHP 8.1源 yum-config-manager --enable remi-php81

4.2 安装PHP及常用扩展

安装PHP-FPM(Nginx与PHP通信必需)及数据库、图片、正则等常用扩展,满足绝大多数Web程序需求。

复制代码

yum install -y php php-fpm php-mysqlnd php-gd php-mbstring php-curl php-xml php-zip php-bcmath php-json # 查看PHP版本,确认安装成功 php -v

4.3 启动PHP-FPM并设置开机自启

复制代码

systemctl start php-fpm systemctl enable php-fpm systemctl status php-fpm

五、Nginx与PHP联动配置(核心步骤)

Nginx默认无法直接解析PHP文件,需修改站点配置,将PHP请求转发给PHP-FPM处理。

5.1 修改Nginx默认站点配置

复制代码

vim /etc/nginx/conf.d/default.conf

找到server模块,修改index项,新增PHP解析规则,完整配置如下:

复制代码

server { listen 80; server_name localhost; # 设置默认首页,优先index.php index index.php index.html index.htm; root /usr/share/nginx/html; location / { try_files $uri $uri/ =404; } # PHP解析配置,关键规则 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # PHP-FPM默认监听端口 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }

5.2 重启Nginx生效配置

复制代码

# 检查Nginx配置语法,避免报错 nginx -t # 重启Nginx systemctl restart nginx

六、LNMP环境完整性验证

6.1 创建PHP测试文件

复制代码

# 在网站根目录创建phpinfo测试文件 echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/phpinfo.php

6.2 浏览器访问验证

访问 http://服务器公网IP/phpinfo.php,正常显示PHP版本、扩展、配置信息,说明**Nginx+PHP联动成功**。

6.3 PHP连接MySQL验证

复制代码

# 创建数据库连接测试文件 vim /usr/share/nginx/html/mysql_test.php

写入以下内容,替换数据库密码为自己设置的密码:

复制代码

<?php $host = 'localhost'; $user = 'root'; $password = '你的MySQL密码'; $conn = mysqli_connect($host, $user, $password); if (!$conn) { die("MySQL连接失败:" . mysqli_connect_error()); } echo "LNMP环境部署成功,PHP连接MySQL正常!"; mysqli_close($conn); ?>

访问 http://服务器公网IP/mysql_test.php,显示连接成功,说明整套LNMP环境完全正常。

安全提醒:测试完成后,务必删除phpinfo.php和mysql_test.php测试文件,避免泄露服务器配置信息,保障生产环境安全。

七、常用服务管理命令

  • Nginx管理:启动 systemctl start nginx | 重启 systemctl restart nginx | 停止 systemctl stop nginx | 状态 systemctl status nginx

  • MySQL管理:启动 systemctl start mysqld | 重启 systemctl restart mysqld | 停止 systemctl stop mysqld | 状态 systemctl status mysqld

  • PHP-FPM管理:启动 systemctl start php-fpm | 重启 systemctl restart php-fpm | 停止 systemctl stop php-fpm | 状态 systemctl status php-fpm

八、常见问题排查

8.1 无法访问Nginx页面

排查方向:防火墙/云服务器安全组是否放行80端口;Nginx服务是否正常运行(systemctl status nginx);配置文件语法是否错误(nginx -t)。

8.2 PHP文件无法解析,直接下载

排查方向:Nginx配置中是否添加PHP解析规则;PHP-FPM服务是否启动;fastcgi_pass端口是否与PHP-FPM监听端口一致。

8.3 PHP连接MySQL失败

排查方向:MySQL服务是否运行;数据库密码是否正确;是否安装php-mysqlnd扩展;MySQL是否允许本地root登录。

8.4 权限不足报错

解决方法:修改网站根目录权限,chown -R nginx:nginx /usr/share/nginx/html,避免文件读写权限异常。

相关推荐
智者知已应修善业2 小时前
【不用第三变量交换2个数】2024-10-18
c语言·数据结构·c++·经验分享·笔记·算法
升职佳兴2 小时前
Excel 学习笔记整理:常用操作、数据清洗与公式应用实战
笔记·学习·excel
悠哉悠哉愿意2 小时前
【单片机学习笔记】math库函数补充
c语言·笔记·单片机·学习
【 】4232 小时前
408计算机考研-计算机操作系统笔记-王道
笔记·考研
朱一头zcy2 小时前
设计模式入门:最简单的单例模式
笔记·单例模式·设计模式
中屹指纹浏览器2 小时前
2026指纹浏览器技术原理、架构与多账号安全环境构建
经验分享·笔记
程序员夏末2 小时前
【LeetCode | 第五篇】算法笔记
笔记·学习·算法·leetcode
码农的小菜园10 小时前
gradle常用指令使用笔记
笔记
鸟电波11 小时前
硬件笔记——示波器篇
笔记