一、部署前前置准备
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,避免文件读写权限异常。