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

centos lnmp如何实现自动化部署

时间2025-10-22 11:31:03发布访客分类主机资讯浏览1479
导读:一、自动化部署前的准备工作 在开始自动化部署前,需确保服务器满足基础环境要求: 系统要求:CentOS 7/8及以上(或其他兼容的Linux发行版,如openEuler); 网络要求:服务器可通过SSH访问,具备外网权限(用于下载安装包)...

一、自动化部署前的准备工作

在开始自动化部署前,需确保服务器满足基础环境要求:

  • 系统要求:CentOS 7/8及以上(或其他兼容的Linux发行版,如openEuler);
  • 网络要求:服务器可通过SSH访问,具备外网权限(用于下载安装包);
  • 权限要求:使用root用户或具有sudo权限的账户操作;
  • 基础工具:提前安装wgetvimgccmake等编译工具(部分脚本会自动处理)。

二、使用Shell脚本实现自动化部署(手动编写/使用开源脚本)

Shell脚本是CentOS下最常用的自动化部署方式,通过编写脚本自动完成依赖安装→组件下载→配置修改→服务启动全流程。以下是具体步骤:

1. 编写基础Shell脚本(以LNMP 1.4为例)

创建脚本文件(如lnmp_deploy.sh),内容涵盖:

  • 依赖安装:安装Nginx、MariaDB、PHP及常用扩展所需的依赖包;
  • 组件安装:通过yum仓库自动下载并安装Nginx、MariaDB、PHP;
  • 配置修改:自动配置Nginx支持PHP(修改default.conf)、优化PHP-FPM参数;
  • 服务管理:启动Nginx、MariaDB、PHP-FPM服务,并设置开机自启;
  • 安全配置:自动执行mysql_secure_installation设置数据库root密码、移除匿名用户;
  • 防火墙放行:自动开放HTTP(80)、HTTPS(443)端口。
#!/bin/bash
# LNMP自动化部署脚本(基础版)
set -e  # 遇到错误立即退出

# 1. 更新系统并安装依赖
echo "正在更新系统并安装依赖..."
yum update -y &
    &
     yum install -y epel-release wget vim gcc make pcre-devel openssl-devel libxml2-devel libjpeg-devel libpng-devel freetype-devel zlib-devel mariadb-server mariadb php php-fpm php-mysql php-mbstring php-xml php-gd php-opcache -y

# 2. 安装Nginx
echo "正在安装Nginx..."
yum install -y nginx
systemctl enable nginx --now

# 3. 安装MariaDB(MySQL兼容)
echo "正在安装MariaDB..."
systemctl enable mariadb --now
# 自动执行安全配置(自动输入密码)
DB_ROOT_PASS="your_password"  # 替换为你的数据库密码
mysql_secure_installation <
    <
    EOF
y
$DB_ROOT_PASS
$DB_ROOT_PASS
y
y
y
y
EOF

# 4. 安装PHP及扩展
echo "正在安装PHP及扩展..."
yum install -y php php-fpm php-mysql php-mbstring php-xml php-gd php-opcache -y
systemctl enable php-fpm --now

# 5. 配置Nginx支持PHP
echo "正在配置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

# 6. 创建PHP测试页
echo "<
    ?php phpinfo();
     ?>
    " >
     /usr/share/nginx/html/index.php

# 7. 重启服务并验证
systemctl restart nginx php-fpm
echo "LNMP部署完成!请访问 http://服务器IP 查看PHP信息页。"

2. 使用开源LNMP部署脚本(推荐)

若不想手动编写脚本,可使用社区提供的开源LNMP部署脚本,这些脚本已集成常见功能(如交互式选择、错误处理、卸载/重置),更稳定可靠:

  • LNMP 1.4官方脚本:支持CentOS 6/7/8,自动检测系统环境,提供lnmp(Nginx+MySQL+PHP)、lnmpa(Nginx+Apache+MySQL+PHP)等模式选择。
    使用方法:
    wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz &
        &
         tar zxf lnmp1.4.tar.gz &
        &
         cd lnmp1.4 &
        &
         ./install.sh lnmp
    
  • openEuler专用脚本:适配openEuler 24.03 Minimal系统,支持无人值守安装(自动输入参数)、卸载(–uninstall)、**重置(–reset)**功能,集成Nginx 1.24、PHP 8.3、MariaDB 10.6等组件。
    使用方法:
    curl -O https://github.com/fire-dog/shell-fire/blob/main/lnmp_install_auto.sh
    chmod +x lnmp_install_auto.sh
    bash lnmp_install_auto.sh  # 无人值守安装
    bash lnmp_install_auto.sh --uninstall  # 卸载
    bash lnmp_install_auto.sh --reset  # 重置
    

3. 脚本优化技巧

  • 参数化配置:将数据库密码、PHP版本、网站目录等参数提取到config.sh文件中,通过source config.sh引入脚本,提高灵活性;
  • 错误处理:使用set -e让脚本在遇到错误时立即退出,避免继续执行导致更严重的问题;
  • 日志记录:将脚本输出重定向到日志文件(如./lnmp_deploy.sh > lnmp_deploy.log 2> & 1),便于后续排查问题;
  • 端口检测:在安装前自动检测80、443、3306等端口是否被占用,若占用则提示用户并退出。

三、使用Ansible Playbook实现自动化部署(适合大规模集群)

若需要批量部署(如多台服务器),可使用Ansible(基于SSH的自动化运维工具),无需在被管理节点安装客户端,通过Playbook定义部署流程。

1. 准备Ansible环境

  • 管理节点(部署服务器):安装Ansible(yum install -y ansible),配置SSH免密登录(被管理节点);
  • 被管理节点(目标服务器):确保可通过SSH访问,具备root权限。

2. 编写Ansible Playbook(lnmp.yml

Playbook使用YAML格式,定义任务(tasks)(如安装组件、配置文件、启动服务):

---
- name: Deploy LNMP on CentOS 7
  hosts: webservers  # 被管理节点组(需在inventory文件中定义)
  become: yes  # 以root权限执行
  tasks:
    # 1. 更新系统
    - name: Update system
      yum:
        name: "*"
        state: latest
        update_cache: yes

    # 2. 安装依赖
    - name: Install dependencies
      yum:
        name:
          - epel-release
          - wget
          - gcc
          - make
          - pcre-devel
          - openssl-devel
          - mariadb-server
          - mariadb
          - php
          - php-fpm
          - php-mysql
          - php-mbstring
          - php-xml
          - php-gd
          - php-opcache
        state: present

    # 3. 启动MariaDB并设置开机自启
    - name: Start and enable MariaDB
      service:
        name: mariadb
        state: started
        enabled: yes

    # 4. 执行MariaDB安全配置
    - name: Secure MariaDB installation
      command: >
    
        mysql_secure_installation <
    <
EOF
y
your_password
your_password
y
y
y
y
EOF
      args:
        stdin: yes

    # 5. 启动PHP-FPM并设置开机自启
    - name: Start and enable PHP-FPM
      service:
        name: php-fpm
        state: started
        enabled: yes

    # 6. 配置Nginx支持PHP
    - name: Configure Nginx for PHP
      copy:
        dest: /etc/nginx/conf.d/default.conf
        content: |
          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;

              }

          }
    

    # 7. 创建PHP测试页
    - name: Create PHP test page
      copy:
        dest: /usr/share/nginx/html/index.php
        content: "<
    ?php phpinfo();
     ?>
    "

    # 8. 重启Nginx
    - name: Restart Nginx
      service:
        name: nginx
        state: restarted

3. 执行Playbook

  • 定义inventory文件hosts):指定被管理节点的IP地址。
    [webservers]
    192.168.1.100
    192.168.1.101
    
  • 运行Playbook
    ansible-playbook -i hosts lnmp.yml
    

Ansible会自动连接到所有被管理节点,依次执行Playbook中的任务,实现批量自动化部署。

四、自动化部署的注意事项

  • 测试环境验证:正式部署前,先在测试环境运行脚本,确保脚本兼容性(如CentOS版本、组件版本);
  • 备份重要数据:部署前备份服务器上的重要数据(如/etc/var/www),避免脚本误操作导致数据丢失;
  • 密码安全管理:避免在脚本中明文写入数据库密码,可使用vault(Ansible)或环境变量加密密码;
  • 日志监控:部署过程中记录详细日志,便于后续排查问题(如组件安装失败、服务无法启动);
  • 版本兼容性:确保Nginx、MariaDB、PHP版本兼容(如PHP 8.3需匹配MariaDB 10.6及以上)。

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


若转载请注明出处: centos lnmp如何实现自动化部署
本文地址: https://pptw.com/jishu/732132.html
lnmp在centos上如何优化数据库性能 lnmp在centos上如何实现高可用

游客 回复需填写必要信息