fix: 修复 CI/CD 部署中的权限问题

- 使用 sudo 创建部署目录并设置正确的所有者权限
- 在 rsync 前确保目录归用户所有
- 添加最终权限设置确保文件可访问
- 修复了 "Permission denied" 错误

现在部署过程会:
1. 用 sudo 创建目录
2. 设置目录所有者为部署用户
3. 执行 rsync 上传文件
4. 最终设置正确的文件权限
This commit is contained in:
xujiang
2025-07-09 09:44:33 +08:00
parent a60c886c1b
commit 5df11e5b00

View File

@ -51,14 +51,14 @@ jobs:
# 测试 SSH 连接
sshpass -e ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }} "echo 'SSH 连接成功'"
# 在服务器上创建部署目录 (如果不存在)
sshpass -e ssh -o StrictHostKeyChecking=no ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }} "mkdir -p /data/photography"
# 在服务器上创建部署目录并设置权限
sshpass -e ssh -o StrictHostKeyChecking=no ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }} "sudo mkdir -p /data/photography && sudo chown -R ${{ secrets.ALIYUN_USER_NAME }}:${{ secrets.ALIYUN_USER_NAME }} /data/photography && sudo chmod -R 755 /data/photography"
# 上传构建文件到服务器(使用密码认证)
sshpass -e rsync -avz --delete --progress -e "ssh -o StrictHostKeyChecking=no" frontend/out/ ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }}:/data/photography/
# 设置文件权限
sshpass -e ssh -o StrictHostKeyChecking=no ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }} "chmod -R 755 /data/photography"
# 设置最终文件权限
sshpass -e ssh -o StrictHostKeyChecking=no ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }} "sudo chmod -R 755 /data/photography"
# 重新加载 Caddy 配置 (可选,根据你的服务器配置)
sshpass -e ssh -o StrictHostKeyChecking=no ${{ secrets.ALIYUN_USER_NAME }}@${{ secrets.ALIYUN_IP }} "sudo systemctl reload caddy || echo 'Caddy 重启跳过'"