溫馨提示×

centos lnmp如何實現自動部署

小樊
46
2025-10-09 05:57:06
欄目: 智能運維

CentOS下LNMP自動部署的實現方法

在CentOS系統中,實現LNMP(Linux+Nginx+MySQL/MariaDB+PHP)環境的自動部署,核心是通過自動化腳本完成軟件安裝、配置及服務管理,減少手動操作步驟。以下是具體實現方案:

一、基礎準備

  1. 系統要求:確保CentOS系統為7/8版本(或其他兼容版本),且已更新至最新狀態(yum update -y)。
  2. 權限要求:腳本需以root用戶運行(或通過sudo提權),避免權限不足導致安裝失敗。
  3. 網絡要求:服務器需聯網,以便下載依賴包及軟件源碼包。

二、自動部署腳本實現步驟

1. 編寫Shell腳本

創建一個Shell腳本文件(如lnmp_auto_deploy.sh),內容包含依賴安裝、Nginx部署、MySQL/MariaDB部署、PHP部署及服務配置等環節。以下是一個簡化但完整的示例:

#!/bin/bash
# LNMP自動部署腳本(CentOS 7/8適用)
# 功能:自動安裝Nginx、MariaDB、PHP及基礎配置

# 檢查root權限
if [ "$(id -u)" != "0" ]; then
    echo "錯誤:必須使用root用戶運行此腳本!"
    exit 1
fi

# 安裝系統依賴
install_dependencies() {
    echo "正在安裝系統依賴..."
    yum install -y epel-release wget gcc make cmake openssl-devel pcre-devel zlib-devel \
                libxml2-devel libjpeg-devel libpng-devel freetype-devel \
                curl-devel libxslt-devel bzip2-devel sqlite-devel
    yum groupinstall -y "Development Tools"
}

# 安裝Nginx
install_nginx() {
    echo "正在安裝Nginx..."
    yum install -y nginx
    systemctl start nginx
    systemctl enable nginx
    echo "Nginx安裝完成,狀態:$(systemctl is-active nginx)"
}

# 安裝MariaDB(MySQL兼容)
install_mariadb() {
    echo "正在安裝MariaDB..."
    yum install -y mariadb-server mariadb
    systemctl start mariadb
    systemctl enable mariadb
    
    # 安全初始化(設置root密碼及移除匿名用戶)
    DB_ROOT_PASS="your_root_password"  # 替換為你的root密碼
    mysql_secure_installation <<EOF
$DB_ROOT_PASS
$DB_ROOT_PASS
y
y
y
y
EOF
    echo "MariaDB安裝完成,root密碼:$DB_ROOT_PASS"
}

# 安裝PHP及擴展
install_php() {
    echo "正在安裝PHP..."
    # 添加Remi倉庫(支持PHP多版本)
    yum install -y yum-utils
    yum-config-manager --enable remi-php82  # 替換為所需PHP版本(如remi-php74、remi-php81)
    
    # 安裝PHP及常用擴展
    yum install -y php php-fpm php-mysqlnd php-opcache php-gd php-curl php-mbstring php-xml
    systemctl start php-fpm
    systemctl enable php-fpm
    
    # 配置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;
    }
}
EOF
    systemctl reload nginx
    echo "PHP安裝完成,Nginx已配置支持PHP。"
}

# 主流程
main() {
    install_dependencies
    install_nginx
    install_mariadb
    install_php
    
    # 驗證部署
    echo "正在驗證LNMP環境..."
    if curl -s -I http://localhost | grep -q "200 OK"; then
        echo "? LNMP環境部署成功!可通過瀏覽器訪問http://服務器IP查看效果。"
    else
        echo "? LNMP環境部署失敗,請檢查日志排查問題。"
    fi
}

# 執行主流程
main

2. 賦予腳本執行權限

保存腳本后,通過chmod命令賦予執行權限:

chmod +x lnmp_auto_deploy.sh

3. 運行腳本

執行腳本(需root權限):

./lnmp_auto_deploy.sh

4. 驗證部署

  • Nginx狀態systemctl status nginx(應顯示“active (running)”)。
  • MariaDB狀態systemctl status mariadb(應顯示“active (running)”)。
  • PHP狀態systemctl status php-fpm(應顯示“active (running)”)。
  • 網頁訪問:在瀏覽器輸入服務器IP,若看到Nginx默認歡迎頁或PHP信息頁(http://IP/info.php),則說明部署成功。

三、進階優化方向

  1. 參數化配置:將腳本中的版本號(如Nginx、PHP、MariaDB)、密碼(如root密碼)、安裝目錄等改為變量,通過命令行參數傳入,提升腳本靈活性。
  2. 端口沖突檢測:在安裝前添加端口占用檢測邏輯(如檢查80、3306、9000端口是否被占用),避免服務啟動失敗。
  3. 防火墻自動配置:通過firewall-cmd命令自動放行HTTP(80)、HTTPS(443)端口,無需手動操作。
  4. 日志記錄:將腳本執行過程中的輸出重定向到日志文件(如./lnmp_auto_deploy.sh > lnmp_deploy.log 2>&1),便于后續排查問題。

四、注意事項

  • 備份數據:腳本執行前建議備份重要數據(如/etc目錄、/home目錄),防止誤操作導致數據丟失。
  • 測試環境:優先在測試環境中運行腳本,確認無誤后再應用于生產環境。
  • 版本兼容性:確保Nginx、PHP、MariaDB版本之間的兼容性(如PHP 8.2需搭配MariaDB 10.4及以上版本)。

通過上述步驟,可實現CentOS系統下LNMP環境的快速、自動化部署,大幅減少手動操作時間,提升運維效率。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女