在 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
目錄下運行。