温馨提示×

centos lamp脚本自动化运维

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

CentOS LAMP脚本自动化运维实践

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

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

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

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

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

  • 环境准备:关闭防火墙(systemctl stop firewalld)、禁用SELinux(setenforce 0)、清理旧版本软件(rpm -qa | grep mariadb);
  • 组件安装:通过yum安装Apache(httpd)、MySQL(mysql-community-server)、PHP(php74-php)等组件;
  • 配置优化:修改Apache虚拟主机配置(/etc/httpd/conf.d/vhost.conf)、MySQL root密码(mysql_secure_installation)、PHP时区(php.ini中的date.timezone);
  • 服务管理:启动服务(systemctl start httpd mysqld php74-php-fpm)并设置开机自启(systemctl enable)。

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

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

  • 包安装yum模块安装Apache、MySQL、PHP;
  • 服务管理service模块启动服务并设置开机自启;
  • 配置文件分发copy模块将自定义Apache虚拟主机配置复制到目标服务器;
  • 依赖处理yum_repository模块添加Remi仓库以安装指定版本PHP。

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

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

  • 代码拉取:Jenkins监听Git仓库变更,自动拉取最新代码;
  • 依赖安装:执行composer install安装PHP依赖;
  • 自动化测试:运行PHPUnit测试用例;
  • 部署上线:通过Ansible将代码同步到生产服务器,重启Apache服务。

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

使用ZabbixNagios监控LAMP组件状态:

  • 系统指标:CPU使用率、内存占用、磁盘空间;
  • 服务状态:Apache(httpd)、MySQL(mysqld)、PHP-FPM(php74-php-fpm)是否运行;
  • 告警机制:通过邮件、短信发送异常告警(如MySQL进程停止、磁盘空间不足80%)。

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

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