GitLab CI/CD配合Deployer部署Laravel到cPanel流水线失败求助
GitLab CI部署Laravel到cPanel失败排查及解决方案
- 主机名配置不匹配
你的deploy.php中配置的主机名为mywebsite.com,但gitlab-ci.yml的deploy阶段执行的命令为php artisan deploy my-website.com,两者名称不一致导致Deployer无法找到对应主机配置,直接触发报错。
修复方案:统一两处的主机名,比如将deploy命令修改为php artisan deploy mywebsite.com -s upload,或者修改deploy.php中的hosts键为my-website.com。 - SSH访问权限异常
- 检查GitLab项目CI/CD变量中是否正确配置了
SSH_PRIVATE_KEY,注意私钥要完整包含开头和结尾的标记行,且不要额外添加多余空格或换行。 - 确认你本地生成的SSH公钥已经添加到cPanel服务器
deployer用户的~/.ssh/authorized_keys文件中。 - 检查
deployer用户对部署目录/home/sfd/public_html/nas是否有读写执行权限,可提前在服务器上执行chown -R deployer:deployer /home/sfd/public_html/nas赋权。
- 检查GitLab项目CI/CD变量中是否正确配置了
- PHP-FPM重启权限不足
cPanel环境下普通用户默认没有权限执行php-fpm服务重启操作,deploy.php中done和rollback钩子下的fpm:reload命令会触发权限报错。
修复方案:- 不需要重载FPM的话直接删除两处
fpm:reload配置,cPanel环境下修改代码后会自动重载PHP解析; - 如需保留该功能,可在服务器上给
deployer用户配置sudo免密执行php-fpm重启命令的权限,同时修改deploy.php中fpm重启命令为sudo前缀的对应命令。
- 不需要重载FPM的话直接删除两处
- 前端资源构建任务未生效
你的gitlab-ci.yml中定义的.build-production-assets是隐藏模板任务,没有实际被调用执行,导致部署到服务器的代码缺少编译后的前端静态资源。
修复方案:新增实际的build任务,参考配置如下:build-production: extends: .build-production-assets stage: building only: - dev - 服务依赖缺失导致命令报错
- 若你项目没有使用Horizon队列服务,删除
deploy.php中ready钩子下的artisan:horizon:terminate配置,避免命令执行失败。 - 提前在服务器部署目录的
shared文件夹下配置正确的.env文件,确保数据库、服务等配置正确,避免artisan:migrate等命令执行失败。
- 若你项目没有使用Horizon队列服务,删除
- Deployer依赖未安装
检查项目composer.json中是否已经安装Deployer对应的Laravel扩展包,若未安装可在本地执行composer require deployer/deployer deployer/laravel --dev后重新提交代码。
内容的提问来源于stack exchange,提问作者Faisal Faiz Michankhel
相关产品推荐
相关产品推荐

