centos

centos lamp脚本自动化运维

小樊
45
2025-09-22 09:15:34
栏目: 智能运维

CentOS LAMP脚本自动化运维实践

一、自动化运维的核心内容

CentOS LAMP(Linux+Apache+MySQL+PHP)环境自动化运维涵盖环境部署、日常运维、监控告警、持续集成四大环节,通过脚本与工具实现“无人值守”的高效管理,降低人为错误风险,提升系统稳定性与运维效率。

二、常见自动化运维方法与工具

1. Shell脚本:基础自动化执行

Shell脚本是LAMP自动化运维的“基石”,用于完成重复性命令执行(如安装软件、配置服务)。例如,一键部署LAMP环境的脚本通常包含以下模块:

2. 配置管理工具:声明式配置

配置管理工具(如Ansible)通过YAML Playbook定义服务器“期望状态”,实现批量部署配置一致性。例如,Ansible Playbook可完成:

3. 持续集成/持续部署(CI/CD):自动化代码流转

结合JenkinsGit实现代码“自动构建-测试-部署”:

4. 监控与告警:实时掌握系统状态

使用ZabbixNagios监控LAMP组件状态:

三、典型自动化运维脚本示例

1. 一键部署LAMP环境(Shell脚本)

#!/bin/bash
# 1. 环境准备
yum update -y && \
yum install -y epel-release && \
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm && \
yum-config-manager --enable remi-php74

# 2. 安装组件
yum install -y httpd mysql-community-server php74-php php74-php-cli php74-php-fpm php74-php-mysqlnd php74-php-mbstring

# 3. 配置服务
systemctl start httpd mysqld php74-php-fpm && \
systemctl enable httpd mysqld php74-php-fpm

# 4. 安全配置
mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourRootPassword';" && \
echo "<?php phpinfo(); ?>" > /var/www/html/info.php

echo "LAMP环境部署完成!访问 http://服务器IP/info.php 查看PHP信息。"

2. Ansible Playbook(配置管理)

---
- hosts: lamp_servers
  become: yes
  tasks:
    - name: 安装Apache
      yum:
        name: httpd
        state: present
    - name: 启动Apache
      service:
        name: httpd
        state: started
        enabled: yes
    - name: 添加Remi仓库
      yum_repository:
        name: remi-php74
        description: Remi's PHP 7.4 RPM repository
        baseurl: https://rpms.remirepo.net/enterprise/remi-php74/
        enabled: yes
        gpgcheck: yes
    - name: 安装PHP 7.4
      yum:
        name: php74-php,php74-php-mysqlnd,php74-php-mbstring
        state: present

3. 监控脚本(Shell)

#!/bin/bash
# 监控Apache状态
if systemctl is-active --quiet httpd; then
  echo "Apache运行正常"
else
  echo "Apache服务停止!" | mail -s "LAMP监控告警" admin@example.com
fi

# 监控MySQL状态
if systemctl is-active --quiet mysqld; then
  echo "MySQL运行正常"
else
  echo "MySQL服务停止!" | mail -s "LAMP监控告警" admin@example.com
fi

4. 定时备份脚本(Shell)

#!/bin/bash
# 备份MySQL数据库
BACKUP_DIR="/backup/mysql"
DATE=$(date +%F)
mysqldump -uroot -p'YourRootPassword' --all-databases > $BACKUP_DIR/all-databases-$DATE.sql

# 删除7天前备份
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -delete

echo "数据库备份完成:$BACKUP_DIR/all-databases-$DATE.sql"

四、自动化运维的最佳实践

  1. 安全加固:避免脚本中硬编码敏感信息(如数据库密码),使用ansible-vault加密变量;限制MySQL远程访问(GRANT语句指定IP);启用HTTPS(mod_ssl模块)。
  2. 错误处理:在脚本中添加set -e(出错立即退出)、trap(捕获信号);使用||判断命令执行结果(如command || { echo "失败"; exit 1; })。
  3. 日志记录:将脚本输出重定向到日志文件(./script.sh 2>&1 | tee /var/log/lamp_script.log),便于排查问题。
  4. 版本控制:将脚本存入Git仓库(如GitHub、GitLab),跟踪变更历史,方便回滚。

0
看了该问题的人还看了