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
),便于排查问题。