CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)

在 CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP) 环境的详细步骤如下。此方案确保各组件版本兼容,并提供完整的配置验证流程。


1. 更新系统

perl 复制代码
 sudo yum update -y

2. 安装 MySQL 5.7

2.1 添加 MySQL 官方 YUM 仓库

由于MySQL并不在CentOS的官方仓库中,所以我们通过上述rpm命令:


  • 导入MySQL仓库的密钥

  • 配置MySQLQ的yum仓库


perl 复制代码
# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装Mysql yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
2.2 安装 MySQL 5.7
perl 复制代码
sudo yum install mysql-community-server -y
2.3 启动 MySQL 服务
perl 复制代码
systemctl start mysqld		# 启动
systemctl enable mysqld		# 开机自启
2.4 获取初始密码并修改
perl 复制代码
 # 查看初始密码
 grep 'temporary password' /var/log/mysqld.log
 ​
 # 登录 MySQL
 mysql -u root -p

设置密码:

perl 复制代码
# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Tang@123';	
# 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc

[扩展],配置root的简单密码

perl 复制代码
# 如果你想设置简单密码,需要降低Mysql的密码安全级别
set global validate_password_policy=LOW; # 密码安全级别低
set global validate_password_length=4;	 # 密码长度最低4位即可

# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

[扩展],配置root运行远程登录

perl 复制代码
# 授权root远程登录
grant all privileges on *.* to root@"%" identified by '123456' with grant option;  
# IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
# 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同

# 刷新权限,生效
flush privileges;

# 退出命令
exit
2.5检查端口

MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态

perl 复制代码
netstat -anp | grep 3306

3. 安装 Nginx

3.1 添加 EPEL 和 Nginx 官方仓库
perl 复制代码
sudo yum install epel-release -y
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3.2 安装 Nginx
perl 复制代码
sudo yum install nginx -y
3.3 启动 Nginx 服务
perl 复制代码
sudo systemctl start nginx
sudo systemctl enable nginx
3.4 验证 Nginx
perl 复制代码
curl http://localhost

或者在浏览器输入服务器地址看到以下页面,默认监听端口80

如果看到 Welcome to nginx! 页面,说明安装成功。


4. 安装 PHP 7.2(兼容 MySQL 5.7)

4.1 添加 Remi 仓库
perl 复制代码
sudo yum install yum-utils -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
4.2 启用 PHP 7.2 仓库
perl 复制代码
sudo yum-config-manager --enable remi-php72
4.3 安装 PHP 及常用扩展
perl 复制代码
sudo yum install php php-fpm php-mysqlnd php-mbstring php-xml php-cli php-gd php-json -y
4.4 启动 PHP-FPM 服务
perl 复制代码
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
4.5 配置 PHP-FPM
perl 复制代码
#编辑vim /etc/php-fpm.d/www.conf,修改以下参数:
user = nginx
group = nginx
listen = /var/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx

#重启 PHP-FPM:
sudo systemctl restart php-fpm

5. 配置 Nginx 支持 PHP

5.1 修改 Nginx 默认配置

编辑 Nginx 配置文件vim /etc/nginx/conf.d/default.conf(或 /etc/nginx/nginx.conf):

perl 复制代码
server {
    listen 80;
    server_name your_domain_or_ip;
    root /usr/share/nginx/html;

    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
5.2 重启 Nginx
perl 复制代码
sudo systemctl restart nginx

6. 验证 LNMP 环境

6.1 创建 PHP 测试文件
perl 复制代码
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
6.2 访问测试页面

在浏览器中访问:

perl 复制代码
 http://your_server_ip/info.php

如果看到 PHP 信息页面,说明 LNMP 环境配置成功。


7. 常见问题排查

7.1 权限问题

确保 Nginx 用户(nginx)有权限访问网站目录:

perl 复制代码
 sudo chown -R nginx:nginx /usr/share/nginx/html
 sudo chmod -R 755 /usr/share/nginx/html
7.2 端口冲突

如果启动 Nginx 报错 Address already in use,检查占用 80 端口的进程并终止:

perl 复制代码
 sudo netstat -tuln | grep 80
 sudo kill -9 <PID>
7.3 SELinux 配置

如果 SELinux 未禁用,临时关闭或调整策略:

perl 复制代码
 sudo setenforce 0  # 临时关闭
 # 或永久禁用(不推荐):
 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

8. 完成

至此,LNMP 环境(Linux + Nginx + MySQL 5.7 + PHP 7.2)已成功部署。你可以将 PHP 项目文件放置在 /usr/share/nginx/html 目录下运行。

相关推荐
挺6的还4 小时前
15.进程间通信(一)
linux
一个不知名程序员www5 小时前
Linux基本指令/下
linux·服务器·centos
Clownseven6 小时前
Nginx Lua模块(OpenResty)实战:动态化、智能化你的Nginx,实现复杂Web逻辑 (2025)
nginx·lua·openresty
zhcong_6 小时前
LVS+Keepalived高可用群集
linux·运维·lvs
Angel Q.6 小时前
系统是win11+两个ubuntu,ubuntu20.04和ubuntu22.04,想删除ubuntu20.04且不用保留数据
linux·运维·ubuntu
JzjSunshine6 小时前
配置远程无密登陆ubuntu服务器时无法连接问题排查
linux·运维·ubuntu
爱奥尼欧6 小时前
【Linux】环境变量完全解析
linux·运维·服务器
运维成长记7 小时前
ansible-playbook 进阶 接上一章内容
linux·服务器·ansible
愚润求学8 小时前
【Linux】mmap文件内存映射
linux·运维·服务器·开发语言·c++
就是我8 小时前
轻松管理Linux定时任务:Cron实用教程
linux·后端