CentOS下PHP自动化运维落地方案
一 核心架构与工具选型
二 快速落地步骤
三 关键示例
Cron 定时执行 PHP 脚本
which php(常见为 /usr/bin/php)crontab -e0 2 * * * /usr/bin/php /opt/scripts/backup.php >> /var/log/php_backup.log 2>&1
crontab -l;服务管理:systemctl status crond / service crond restart。PHP 内调用系统命令(谨慎使用)
<?php
// 示例:数据同步
exec('rsync -avz /data/source/ user@remote:/data/target/', $out, $ret);
if ($ret === 0) {
file_put_contents('/var/log/sync.log', date('Y-m-d H:i:s')." 同步成功\n", FILE_APPEND);
} else {
file_put_contents('/var/log/sync.log', date('Y-m-d H:i:s')." 同步失败: ".implode("\n", $out)."\n", FILE_APPEND);
}
Ansible Playbook 安装与配置 PHP(示例)
- hosts: webservers
become: yes
tasks:
- name: 安装 EPEL 与 Remi 仓库
yum:
name:
- epel-release
- https://rpms.remirepo.net/enterprise/remi-release-7.rpm
state: present
- name: 启用 Remi PHP 7.4
command: yum-config-manager --enable remi-php74
- name: 安装 PHP 及常用扩展
yum:
name:
- php
- php-fpm
- php-mysqlnd
- php-mbstring
- php-gd
- php-xml
state: present
- name: 启动并开机自启
service:
name: "{{ item }}"
state: started
enabled: yes
loop:
- php-fpm
- nginx
- name: 分发 php.ini
copy:
src: php.ini
dest: /etc/php.ini
owner: root
mode: 0644
notify: restart php-fpm
handlers:
- name: restart php-fpm
service:
name: php-fpm
state: restarted
ansible-playbook -i inventory php.yml。四 安全与排错要点
which php)、脚本 绝对路径、脚本 可执行权限 与 日志输出;必要时在 crontab 中重定向 >> /var/log/xxx.log 2>&1 便于排查。