在 CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP) 环境的详细步骤如下。此方案确保各组件版本兼容,并提供完整的配置验证流程。
1. 更新系统
sudo yum update -y
2. 安装 MySQL 5.7
2.1 添加 MySQL 官方 YUM 仓库
由于MySQL并不在CentOS的官方仓库中,所以我们通过上述rpm命令:
-
导入MySQL仓库的密钥
-
配置MySQLQ的yum仓库
# 更新密钥
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
sudo yum install mysql-community-server -y
2.3 启动 MySQL 服务
systemctl start mysqld # 启动
systemctl enable mysqld # 开机自启
2.4 获取初始密码并修改
# 查看初始密码grep 'temporary password' /var/log/mysqld.log# 登录 MySQLmysql -u root -p
设置密码:
# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Tang@123';
# 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
[扩展],配置root的简单密码
# 如果你想设置简单密码,需要降低Mysql的密码安全级别
set global validate_password_policy=LOW; # 密码安全级别低
set global validate_password_length=4; # 密码长度最低4位即可# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
[扩展],配置root运行远程登录
# 授权root远程登录
grant all privileges on *.* to root@"%" identified by '123456' with grant option;
# IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
# 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同# 刷新权限,生效
flush privileges;# 退出命令
exit
2.5 检查端口
MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态
netstat -anp | grep 3306
3. 安装 Nginx
3.1 添加 EPEL 和 Nginx 官方仓库
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
sudo yum install nginx -y
3.3 启动 Nginx 服务
sudo systemctl start nginx
sudo systemctl enable nginx
3.4 验证 Nginx
curl http://localhost
或者在浏览器输入服务器地址看到以下页面,默认监听端口80
如果看到 Welcome to nginx!
页面,说明安装成功。
4. 安装 PHP 7.2(兼容 MySQL 5.7)
4.1 添加 Remi 仓库
sudo yum install yum-utils -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
4.2 启用 PHP 7.2 仓库
sudo yum-config-manager --enable remi-php72
4.3 安装 PHP 及常用扩展
sudo yum install php php-fpm php-mysqlnd php-mbstring php-xml php-cli php-gd php-json -y
4.4 启动 PHP-FPM 服务
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
4.5 配置 PHP-FPM
#编辑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
):
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
sudo systemctl restart nginx
6. 验证 LNMP 环境
6.1 创建 PHP 测试文件
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
6.2 访问测试页面
在浏览器中访问:
http://your_server_ip/info.php
如果看到 PHP 信息页面,说明 LNMP 环境配置成功。
7. 常见问题排查
7.1 权限问题
确保 Nginx 用户(nginx
)有权限访问网站目录:
sudo chown -R nginx:nginx /usr/share/nginx/htmlsudo chmod -R 755 /usr/share/nginx/html
7.2 端口冲突
如果启动 Nginx 报错 Address already in use
,检查占用 80 端口的进程并终止:
sudo netstat -tuln | grep 80sudo kill -9 <PID>
7.3 SELinux 配置
如果 SELinux 未禁用,临时关闭或调整策略:
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
目录下运行。