首页主机资讯centos lnmp如何实现自动部署

centos lnmp如何实现自动部署

时间2025-10-09 09:37:04发布访客分类主机资讯浏览1444
导读:CentOS下LNMP自动部署的实现方法 在CentOS系统中,实现LNMP(Linux+Nginx+MySQL/MariaDB+PHP)环境的自动部署,核心是通过自动化脚本完成软件安装、配置及服务管理,减少手动操作步骤。以下是具体实现方案...

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos lnmp如何实现自动部署
本文地址: https://pptw.com/jishu/721082.html
centos lnmp如何实现多站点托管 centos lnmp与nginx区别解析

游客 回复需填写必要信息