温馨提示×

Ubuntu如何实现PHP自动化部署

小樊
54
2025-10-05 23:58:37
栏目: 编程语言

Ubuntu实现PHP自动化部署的常见方法

1. 基础脚本+Git Webhook(适合小型项目)

通过Shell脚本自动化代码拉取、依赖安装及服务重启,结合Git Webhook触发,实现“推送即部署”。

  • 前提准备:安装PHP、Nginx/Apache、Git、Composer(可选);配置Web服务器指向项目目录(如/var/www/myproject)。
  • 具体步骤
    ① 初始化Git仓库:cd /var/www/myproject && git init && git add . && git commit -m "Initial commit"
    ② 创建部署脚本deploy.sh,内容包含拉取代码、安装依赖(composer install)、重启服务(systemctl restart php-fpm && systemctl restart nginx),并赋予执行权限(chmod +x deploy.sh);
    ③ 设置Git Webhook:在GitHub/GitLab仓库“Settings→Webhooks”中添加URL(如http://yourdomain.com/deploy),触发事件选择“Push”;
    ④ 测试:推送代码到仓库,脚本自动执行部署。

2. Ansible Playbook(适合多服务器批量部署)

使用Ansible(Python编写的自动化工具)通过Playbook定义部署流程,支持批量管理多台Ubuntu服务器。

  • 关键步骤
    ① 安装Ansible:sudo apt update && sudo apt install ansible
    ② 创建Inventory文件(如inventory),列出目标服务器IP;
    ③ 编写Playbook(如install_php.yml),定义任务:更新包缓存、安装Apache/Nginx、PHP及扩展(如php-mysql)、配置Web服务器;
    ④ 运行Playbook:ansible-playbook -i inventory install_php.yml -u username -k-k提示输入密码)。

3. OneinStack一键脚本(适合快速搭建环境)

OneinStack是开源的一键部署工具,支持Ubuntu、Debian等系统,可快速安装PHP、Nginx、MySQL、Composer等组件,简化环境配置流程。

  • 使用方法
    ① 下载脚本:wget https://gitcode.com/gh_mirrors/one/oneinstack/archive/master.zip
    ② 解压并运行:unzip master.zip && cd oneinstack-master && ./install.sh
    ③ 根据提示选择PHP版本、Web服务器、数据库等组件,脚本自动完成安装与配置。

4. Capistrano(适合PHP项目版本管理)

Capistrano是Ruby编写的部署工具,支持PHP项目版本控制(Git)、依赖管理(Composer)、零停机部署(通过current软链接指向最新版本)及回滚功能。

  • 核心流程
    ① 本地安装Capistrano:gem install capistrano
    ② 初始化项目:cap install,生成config/deploy.rb(配置服务器信息、仓库地址)和config/deploy/production.rb(生产环境设置);
    ③ 配置deploy.rb:添加after :updated, :build钩子,在部署后执行composer install --no-dev
    ④ 部署:cap production deploy(推送代码),cap production deploy:rollback(回滚到上一版本)。

5. Git-Auto-Deploy(适合实时自动部署)

Git-Auto-Deploy是小型HTTP服务器,监听GitHub/GitLab的Webhook请求,自动拉取最新代码并执行自定义命令(如composer install)。

  • 配置步骤
    ① 安装:通过PPA安装(sudo add-apt-repository ppa:git-auto-deploy/git-auto-deploy && sudo apt update && sudo apt install git-auto-deploy);
    ② 配置config.json:设置部署目录(如/var/www/myproject)、Webhook密钥;
    ③ 启动服务:git-auto-deploy
    ④ 在Git仓库设置Webhook,URL指向http://yourdomain:8001,触发事件选择“Push”。

以上方法覆盖了不同规模项目的需求,可根据团队协作模式(如个人/团队)、项目复杂度(如是否需要依赖管理)选择合适的方式。例如,小型项目可使用基础脚本+Webhook快速上手;多服务器环境推荐Ansible;需要版本管理与回滚则选Capistrano。

0