CentOS下LNMP自動部署的實現方法
在CentOS系統中,實現LNMP(Linux+Nginx+MySQL/MariaDB+PHP)環境的自動部署,核心是通過自動化腳本完成軟件安裝、配置及服務管理,減少手動操作步驟。以下是具體實現方案:
yum update -y
)。sudo
提權),避免權限不足導致安裝失敗。創建一個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
保存腳本后,通過chmod
命令賦予執行權限:
chmod +x lnmp_auto_deploy.sh
執行腳本(需root權限):
./lnmp_auto_deploy.sh
systemctl status nginx
(應顯示“active (running)”)。systemctl status mariadb
(應顯示“active (running)”)。systemctl status php-fpm
(應顯示“active (running)”)。http://IP/info.php
),則說明部署成功。firewall-cmd
命令自動放行HTTP(80)、HTTPS(443)端口,無需手動操作。./lnmp_auto_deploy.sh > lnmp_deploy.log 2>&1
),便于后續排查問題。/etc
目錄、/home
目錄),防止誤操作導致數據丟失。通過上述步驟,可實現CentOS系統下LNMP環境的快速、自動化部署,大幅減少手動操作時間,提升運維效率。