我有一个 github 工作流程,每当分支合并到主分支时就会运行:
jobs:
deploy:
name: Deploy to Production
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: SSH into server and deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /var/www/html
git reset --hard
git fetch --all
git pull
if [ -n "$(git diff --name-only ${{ github.sha }} HEAD -- .docker docker-compose.yml)" ]; then
docker-compose down
docker-compose build
docker-compose up -d
fi
docker exec ${{ secrets.CONTAINER_NAME }} composer install --no-dev
docker exec ${{ secrets.CONTAINER_NAME }} php artisan migrate --force
SSH_USERMANE 是github_user
。在服务器上运行时,我不断收到此错误:
err: bash: line 1: cd: /var/www/html: Permission denied
我对该文件夹的权限是750
,所有者是www-data:www-data
我已添加github_user
到该www-data
组,但我不确定我还应该做些什么才能使其能够完成我列出的所有步骤。
我错过了什么?
答案1
我已将 github_user 添加到 www-data 组
如果运行时仍出现权限被拒绝的情况cd /var/www/html
,则说明发生了一些奇怪的事情 - 可能是 SELinux 与 github_user 的受限用户帐户相结合。如果 SELinux 正在运行,请检查审计日志。
更有可能的是,您仍然会收到“权限被拒绝”的消息 - 但是当您开始尝试使用 git 写入文件时 - 此帐户无权写入树。 尝试chmod -R 0770
。
然而:
这是非常除非您使用的软件(例如 Wordpress)有硬性要求,否则让 Web 服务器用户可以编辑 Web 内容是一种不好的做法。但即使在这种情况下,也应该有选择地授予写入权限。更好的解决方案是
chown -R github_user:www-data /var/www/html ; chmod -r 0750 /var/www/html
将生产服务器设为 git 节点是不好的做法。