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环境的快速、自动化部署,大幅减少手动操作时间,提升运维效率。