CentOS LAMP脚本自动化运维实践
CentOS LAMP(Linux+Apache+MySQL+PHP)环境自动化运维涵盖环境部署、日常运维、监控告警、持续集成四大环节,通过脚本与工具实现“无人值守”的高效管理,降低人为错误风险,提升系统稳定性与运维效率。
Shell脚本是LAMP自动化运维的“基石”,用于完成重复性命令执行(如安装软件、配置服务)。例如,一键部署LAMP环境的脚本通常包含以下模块:
systemctl stop firewalld
)、禁用SELinux(setenforce 0
)、清理旧版本软件(rpm -qa | grep mariadb
);yum
安装Apache(httpd
)、MySQL(mysql-community-server
)、PHP(php74-php
)等组件;/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
)。配置管理工具(如Ansible)通过YAML Playbook定义服务器“期望状态”,实现批量部署与配置一致性。例如,Ansible Playbook可完成:
yum
模块安装Apache、MySQL、PHP;service
模块启动服务并设置开机自启;copy
模块将自定义Apache虚拟主机配置复制到目标服务器;yum_repository
模块添加Remi仓库以安装指定版本PHP。结合Jenkins与Git实现代码“自动构建-测试-部署”:
composer install
安装PHP依赖;使用Zabbix或Nagios监控LAMP组件状态:
httpd
)、MySQL(mysqld
)、PHP-FPM(php74-php-fpm
)是否运行;#!/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信息。"
--- - 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
#!/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
#!/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"
ansible-vault
加密变量;限制MySQL远程访问(GRANT
语句指定IP);启用HTTPS(mod_ssl
模块)。set -e
(出错立即退出)、trap
(捕获信号);使用||
判断命令执行结果(如command || { echo "失败"; exit 1; }
)。./script.sh 2>&1 | tee /var/log/lamp_script.log
),便于排查问题。