温馨提示×

centos下php如何实现自动化运维

小樊
39
2026-01-02 01:44:26
栏目: 编程语言

CentOS下PHP自动化运维落地方案

一 核心架构与工具选型

  • 编排与配置:用 Ansible 统一管理 PHP、Nginx/Apache、PHP-FPM、MySQL/MariaDB 的安装、配置与服务启停,保证环境一致性与可重复部署。
  • 定时任务:用 Cron 调度 PHP 脚本(如备份、清理、同步),稳定可靠、系统级支持。
  • 持续交付:用 Jenkins/GitLab CI 监听 Git 变更,自动执行构建、测试、部署与回滚。
  • 监控告警:用 Zabbix 或轻量 Shell 监控脚本覆盖 CPU/内存/磁盘/进程 与关键服务状态,异常即时通知。
  • 备份恢复:制定 每日全量 mysqldump + binlog 增量 策略,定时校验与异地副本,确保可恢复性与 RPO 可控。

二 快速落地步骤

  • 环境准备
    • 安装 EPEL 与 Remi 仓库,启用所需 PHP 版本(如 PHP 7.4);安装 Nginx/Apache、PHP-FPM、MySQL/MariaDB 并启动、设为开机自启。
  • 配置管理与编排
    • Ansible Playbook 安装软件包、分发 php.ini/Nginx 虚拟主机/PHP-FPM 池 配置,变更后通过 notify/handlers 自动重启服务,确保生效。
  • 定时任务
    • 备份、清理、数据同步 等放入 PHP 脚本,用 Cron 定时执行并落盘日志,便于审计与告警接入。
  • 持续交付
    • Jenkins/GitLab CI 中定义流水线:拉取代码 → 运行 Composer/PHPUnit → 通过 Ansible 同步到目标主机 → 重启服务 → 健康检查与回滚。
  • 监控与备份
    • 部署 Zabbix Agent 采集 Apache/PHP-FPM/MySQL 指标与进程存活;实施 全量+增量 备份策略并定期恢复演练。

三 关键示例

  • Cron 定时执行 PHP 脚本

    • 确认 PHP 路径:which php(常见为 /usr/bin/php
    • 编辑任务:crontab -e
    • 示例(每天 02:00 执行备份并记录日志):
      0 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);
    }
    
    • 建议使用 escapeshellarg/escapeshellcmd 防注入,最小权限运行 PHP,输出与错误均记录日志。
  • 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

四 安全与排错要点

  • 安全
    • 避免将业务 PHP 脚本放在 Web 可直接访问 目录;CLI 脚本建议置于如 /opt/scripts 并设置 700 权限。
    • 最小权限运行 PHP-FPM(如 nginx 用户);数据库账户遵循最小权限与来源限制。
    • 密钥登录与凭据托管(如 Ansible Vault),禁止在代码中硬编码密码。
  • 排错
    • Cron 不执行:优先检查 PHP 路径which php)、脚本 绝对路径、脚本 可执行权限日志输出;必要时在 crontab 中重定向 >> /var/log/xxx.log 2>&1 便于排查。

0