You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab无法将Laravel应用部署至AWS EC2实例求助

排查与解决Laravel部署至AWS EC2后目录为空的问题

我来帮你一步步排查这个问题——流水线显示正常但EC2上的/var/www/html目录为空,大概率是部署流程里的某个环节有隐性错误,咱们逐个击破:

1. 先确认EC2实例上的Git仓库是否已初始化

你的部署脚本直接执行git pull origin,但如果EC2的/var/www/html目录还没关联到GitLab仓库,这个命令会静默失败。请手动登录EC2实例,执行以下命令初始化仓库:

cd /var/www/html
git init
git remote add origin <你的GitLab仓库HTTPS/SSH地址>
git fetch origin
git checkout main  # 替换成你的仓库默认分支,比如master

这一步是确保EC2上的目录已经和GitLab仓库建立关联,并且拉取到了初始代码。

2. 验证GitLab CI的SSH连接权限

虽然你在CI里配置了SSH密钥,但要确认该密钥对应的公钥已经添加到EC2实例的ubuntu用户的~/.ssh/authorized_keys文件中。可以登录EC2后执行以下命令检查:

cat ~/.ssh/authorized_keys

如果没找到对应公钥,把CI里SSH_PRIVATE_KEY的公钥内容添加进去即可。

另外,你可以在.gitlab-deploy.sh里加个SSH连通性测试,提前发现连接问题:

# 在for循环里的ssh命令前添加
ssh ubuntu@${array[i]} "echo 'SSH连接EC2成功'"

3. 让部署脚本暴露错误细节

流水线显示“执行正常”但没效果,很可能是git pull命令在EC2上执行失败了,但脚本没捕获错误。修改.gitlab-deploy.sh:

#!/bin/bash
set -e  # 替换原来的set -f,命令出错时立即停止脚本并返回错误
set -x  # 开启命令输出,方便在CI日志里看细节

#Get servers list
string=$DEPLOY_SERVER
array=(${string//,/ })
#Iterate servers for deploy and pull last commit
for i in "${!array[@]}"; do
    echo "Deploying to server ${array[i]}"
    ssh -v ubuntu@${array[i]} "cd /var/www/html && git pull origin main"  # 明确指定分支名
done

这样CI日志会显示SSH和Git命令的详细输出,比如是否有权限拉取仓库、分支名是否匹配等。

4. 检查CI变量配置是否正确

登录GitLab项目的「Settings → CI/CD → Variables」,确认:

  • SSH_PRIVATE_KEY是能访问EC2的私钥(无换行缺失,格式正确)
  • DEPLOY_SERVER是EC2的公网IP(多个IP用逗号分隔,无多余空格)
  • 如果你用SSH地址拉取GitLab仓库,还要确保EC2的公钥已经添加到GitLab项目的「Deploy Keys」中(否则EC2无法拉取代码)

5. Laravel部署的后续配置(必做)

即使代码拉取成功,Laravel还需要配置才能运行,登录EC2执行以下步骤:

cd /var/www/html
# 复制并配置环境变量
cp .env.example .env
# 生成APP_KEY
php artisan key:generate
# 安装PHP依赖(需要先在EC2上安装Composer)
composer install
# 设置目录权限
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html/storage
sudo chmod -R 755 /var/www/html/bootstrap/cache
# 配置Apache根目录为public文件夹
sudo nano /etc/apache2/sites-available/000-default.conf
# 将DocumentRoot改为/var/www/html/public,然后重启Apache
sudo systemctl restart apache2

内容的提问来源于stack exchange,提问作者CIZO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:24:09