thinkphp6.x项目可通过github actions实现推送即部署:一、ssh直连执行composer install与服务重启;二、rsync预构建后增量同步降低服务器负载;三、封装服务器端shell脚本统一管理多环境部署与回滚。

如果您已开发完成一个ThinkPHP6.x项目,希望在代码推送后自动完成服务器部署,则需借助GitHub Actions构建CI/CD流水线。以下是实现该目标的多种可行流程:
一、基于SSH直连与Shell脚本的部署流程
该方法通过GitHub Actions运行环境拉取代码、安装依赖,并使用SSH密钥安全连接目标服务器执行部署命令,适用于已配置好PHP、Composer及Web服务(如Nginx)的Linux服务器。
1、在项目根目录创建 .github/workflows/deploy.yml 文件。
2、在服务器上确认已安装 git、php、composer 并能正常执行 php -v 与 composer --version。
3、生成并配置SSH密钥对:在服务器执行 ssh-keygen -t rsa -f ~/.ssh/thinkphp_deploy,将公钥内容追加至 ~/.ssh/authorized_keys,私钥内容复制备用。
4、在GitHub仓库 Settings → Secrets and variables → Actions 中,新增以下密钥:SSH_PRIVATE_KEY(粘贴私钥全文)、SERVER_HOST(服务器IP)、SERVER_USER(登录用户名)、DEPLOY_PATH(如 /var/www/thinkphp6)。
5、在 deploy.yml 中定义工作流,使用 appleboy/scp-action 或 appleboy/ssh-action 执行远程命令,例如拉取代码、运行 composer install --no-dev --optimize-autoloader、设置目录权限、重启PHP-FPM服务等。
二、使用rsync同步静态资源与依赖的轻量部署流程
该流程避免在服务器端重复执行composer install,而是将vendor目录及runtime缓存目录在Actions中预先构建完毕,再通过rsync增量同步至服务器,降低服务器负载并提升部署稳定性。
1、在 deploy.yml 的 jobs 步骤中,先使用 shivammathur/setup-php 安装指定PHP版本(如8.1),再执行 composer install --no-dev --optimize-autoloader。
2、确保 runtime/ 目录未被.gitignore排除,或在Actions中手动创建空 runtime 目录并赋予写入权限。
3、使用 webfactory/ssh-agent 加载SSH私钥,再调用 rsync 命令同步整个项目目录(排除 .git、.github 等非必要文件)至服务器目标路径。
4、在rsync之后追加SSH命令,执行 chown -R www-data:www-data /var/www/thinkphp6 及 chmod -R 755 /var/www/thinkphp6/runtime,确保Web服务可读写运行时目录。
三、结合部署专用Shell脚本的可复用流程
该方式将部署逻辑封装为服务器端独立脚本,GitHub Actions仅负责触发执行,便于统一管理多环境部署行为、日志记录与错误回滚,适合中大型团队维护。
1、在服务器部署目录(如 /opt/scripts/deploy-thinkphp6.sh)编写bash脚本,包含代码拉取、依赖检查、环境配置加载、缓存清理、配置优化(php think optimize)等步骤。
2、为脚本添加执行权限:chmod +x /opt/scripts/deploy-thinkphp6.sh。
3、在 deploy.yml 中,通过 appleboy/ssh-action 连接服务器后直接运行该脚本:sh /opt/scripts/deploy-thinkphp6.sh。
4、脚本内需校验 .env 文件是否存在,若缺失则从 .env.example 复制并提示人工配置,防止因环境变量缺失导致应用启动失败。
5、脚本末尾加入 systemctl reload php8.1-fpm 或 nginx -s reload 指令,确保配置变更即时生效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











