第一步:準備環境 & 準備腳本文件
1. 你在 CentOS 7 的服務器/虛擬機里打開終端,確認你有 root 權限或者能用 sudo
。
輸入下面命令確認你的系統版本:
cat /etc/centos-release
你應該看到類似:
CentOS Linux release 7.9.2009 (Core)
2. 用 vim
或 nano
創建腳本文件
假設文件名叫 lnmp_install.sh
vim lnmp_install.sh
打開后,先不要急著輸入內容,咱們先做個簡單的測試,確保能保存和運行。
按 i
進入編輯模式,寫入:
#!/bin/bashecho "Hello LNMP"
然后按 Esc
,輸入 :wq
保存并退出。
3. 給予腳本執行權限
chmod +x lnmp_install.sh
4. 運行腳本試試
./lnmp_install.sh
你應該看到輸出:
Hello LNMP
第二部.?編輯腳本,加入安裝 Nginx 的代碼
打開剛才的腳本:
vim lnmp_install.sh
按 i
進入編輯模式,把原來的內容改成下面這樣(我保留了 Hello LNMP
,方便你確認腳本執行流程):
#!/bin/bashecho "Hello LNMP"echo ">>> 安裝 Nginx..."
yum install -y epel-release
yum install -y nginxecho ">>> 啟動并設置 Nginx 開機自啟..."
systemctl start nginx
systemctl enable nginxecho ">>> 檢查 Nginx 狀態..."
systemctl status nginx --no-pager
2. 保存并退出
按 Esc
,輸入 :wq
回車。
3. 運行腳本
./lnmp_install.sh
4. 驗證 Nginx 是否成功安裝
curl -I http://localhost
HTTP/1.1 200 OK Server: nginx/1.20.1 ...
或者你也可以在瀏覽器訪問你的服務器 IP,看是否出現 Nginx 默認歡迎頁。
第三步:安裝 MySQL(MariaDB 版本)
CentOS 7 默認用 MariaDB 代替 MySQL,指令兼容,而且安裝更簡單。
1. 編輯腳本
打開腳本:
vim lnmp_install.sh
在安裝 Nginx 代碼的 后面,加上這段 MariaDB 安裝和初始化的內容:
echo ">>> 安裝 MariaDB(MySQL兼容版)..."
yum install -y mariadb-server mariadbecho ">>> 啟動并設置 MariaDB 開機自啟..."
systemctl start mariadb
systemctl enable mariadbecho ">>> 初始化 MariaDB(設置 root 密碼并開啟安全選項)..."
DB_ROOT_PASS="123456" # 這里可以換成你想要的密碼
mysql_secure_installation <<EOFy
$DB_ROOT_PASS
$DB_ROOT_PASS
y
y
y
y
EOF
2. 保存并退出
按 Esc
→ :wq
→ 回車。
3. 運行腳本(測試 MariaDB 部分)
./lnmp_install.sh
4. 驗證 MySQL(MariaDB)是否安裝成功
mysql -uroot -p
輸入你剛才腳本里設定的密碼(默認 123456
),如果能看到:
Welcome to the MariaDB monitor. Commands end with ; or \g.
說明數據庫安裝成功。
第四步:安裝 PHP 并配置 Nginx 支持 PHP
1. 編輯腳本
繼續在 lnmp_install.sh
里,MariaDB 安裝的后面加上 PHP 部分代碼:
echo ">>> 安裝 PHP 及擴展..."
# 安裝 Remi 倉庫(支持不同 PHP 版本)
yum install -y yum-utils
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm# 啟用 PHP 7.4 源(可以改成 72 / 80 / 81 等版本)
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74# 安裝 PHP-FPM 和常用擴展
yum install -y php php-fpm php-mysql php-mbstring php-xml php-gd php-opcache php-cliecho ">>> 啟動并設置 PHP-FPM 開機自啟..."
systemctl start php-fpm
systemctl enable php-fpmecho ">>> 配置 Nginx 支持 PHP..."
cat >/etc/nginx/conf.d/default.conf <<EOF
server {listen 80;server_name localhost;root /usr/share/nginx/html;index index.php index.html index.htm;location / {try_files \$uri \$uri/ =404;}location ~ \.php\$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;include fastcgi_params;}
}
EOFecho ">>> 創建 PHP 測試頁面..."
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.phpecho ">>> 重新加載 Nginx..."
systemctl reload nginx
2. 保存并退出
Esc
→ :wq
→ 回車。
3. 運行腳本
./lnmp_install.sh
4. 驗證 LNMP 是否成功
方式 1:命令行驗證
curl -I http://localhost
返回 200 OK
表示頁面存在。
方式 2:瀏覽器訪問
用瀏覽器訪問服務器 IP,例如:
http://你的服務器IP
如果看到 PHP 信息頁面(phpinfo),說明 LNMP 完全 OK。
第五步:加上防火墻自動放行端口 + 自動檢測 LNMP 頁面可訪問
1. 編輯腳本
打開你的 lnmp_install.sh
:
vim lnmp_install.sh
在腳本 最后一部分(Nginx reload 之后) 加上這段代碼:
cho ">>> 配置防火墻,放行 80 和 443 端口..."
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadecho ">>> 檢測 LNMP 是否正常工作..."
sleep 3
if curl -s -I http://localhost | grep -q "200 OK"; thenecho "? LNMP 部署成功!可以訪問 http://你的服務器IP"
elseecho "? LNMP 部署失敗,請檢查 Nginx/PHP/MySQL 日志"
fi
2. 保存退出
Esc
→ :wq
→ 回車。
3. 再運行一遍腳本(測試自檢功能)
./lnmp_install.sh
它會自動放行 80、443 端口
等 3 秒后用
curl
請求首頁成功則輸出 ? LNMP 部署成功!
4. 瀏覽器訪問測試
在瀏覽器訪問:
http://你的服務器IP
如果出現 PHP 信息頁面(phpinfo),LNMP 就已經完全跑起來了。
項目名稱:專業 LNMP 一鍵部署自動化腳本
項目描述:
基于 CentOS 7,使用 Shell 腳本實現 Nginx、MariaDB(MySQL 兼容)、PHP 環境的一鍵自動化安裝和配置。
支持參數化輸入 PHP 版本和數據庫密碼,自動檢測并釋放端口沖突,防火墻自動放行 HTTP/HTTPS 端口,實現全流程無人值守部署。
技術棧:
Shell 腳本、CentOS 7、Nginx、MariaDB、PHP-FPM、firewalld、systemctl、自動化運維
項目亮點:
通過參數化設計,支持用戶自定義 PHP 版本及 MySQL 密碼,提高腳本適用性和靈活性
實現端口占用自動檢測和釋放,避免服務啟動沖突,提升部署穩定性
自動配置防火墻放行80/443端口,保證服務外部訪問
部署后自動測試服務狀態,輸出彩色日志,提升運維體驗
項目腳本可在多臺機器快速復用,極大節省環境搭建時間
提升運維自動化能力,適用于開發測試和生產環境部署
收獲與反思:
深入理解 Linux 服務管理與防火墻配置
掌握 Shell 腳本參數處理與流程控制
實踐自動化部署思路,提高了實際動手能力和問題排查能力