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 目录下运行。

相关推荐
石像鬼₧魂石16 分钟前
Kali Linux 网络端口深度扫描
linux·运维·网络
alengan20 分钟前
linux上面写python3日志服务器
linux·运维·服务器
Evan芙1 小时前
搭建nexus服务,实现本地仓库、代理仓库
java·nginx·tomcat
Rose sait1 小时前
【环境配置】Linux配置虚拟环境pytorch
linux·人工智能·python
叶之香2 小时前
CentOS/RHEL 7、8安装exfat和ntfs文件系统
linux·运维·centos
一世琉璃白_Y2 小时前
pg配置国内数据源安装
linux·python·postgresql·centos
秋田君2 小时前
前端工程化部署入门:Windows + Nginx 实现多项目独立托管与跨域解决方案
前端·windows·nginx
不过普通话一乙不改名2 小时前
Linux 内核开发入门:从环境配置到 Hello World 实战
linux·运维
乖乖是干饭王2 小时前
Linux 内核 Kbuild 中的 ld 调用机制
linux·c·makefile