无法实现Gitolite(Git)和nginx web服务器同时访问webspace
Failed to archieve Gitolite (Git) and nginx webserver access webspace at the same time
起点:
- Ubuntu 20.04
- Gitolite (/home/git/)
- 网站空间/var/www/webspace(通常归 www-data:www-data 所有)
- Git 用户(在 www-data 组中,也尝试过不在组中)
我想使用 post-receive 将网站空间更新为 git 用户到 www-data 目录。我在安装 Gitolite 之前将其存档,但它的工作方式似乎与以前不同(或者我遗漏了一些东西)。要说清楚:post-receive 在推送后执行(通常不在 Gitolite 上)...存档也很困难。
编辑:说清楚:我想归档 Git 和 www-data 可以访问和修改相同的文件。
我试过的:
- chmod 777 -R /var/www/webspace(此后git可以访问但是nginx returns 是403?)
- 正在将 Git-用户添加到 www-数据组
- chown www-数据:git -R /var/www/webspace
- chown git:www-data -R /var/www/webspace
- chown git:git -R /var/www/webspace
- chown www-data:www-data -R /var/www/webspace(组内有无git)(有无777)
- 正在执行post-手动接收(不允许操作)
- 正在执行 post-以 root 身份手动接收(嗯……当然有效,但这不是重点)
- ...也许还有一些我可能遗漏的步骤 rn
到目前为止我注意到的:
- 与 Git 相反,Gitolite 使用 -rw------ 检查回购协议(如果我没记错的话),也许这就是为什么它不能使用 gitolite 但有 Git
代码(不是很重要,只是列出所有内容):
- post-接收
#!/bin/sh
GIT_WORK_TREE=/var/www/webspace git checkout -f
也许我只是遗漏了什么,但请帮助我。
尝试并遵循“adding other (non-update) hooks”以便 Gitolite 调用相关的 post-receive hook。
将此行添加到 rc
文件的 %RC
块内,如果它不存在,或者如果它已经存在并被注释掉,则取消注释:
LOCAL_CODE => "$ENV{HOME}/local",
将你的钩子放入该目录,在一个名为“hooks/common”的子目录中:
# log on to gitolite hosting user on the server, then:
cd $HOME
mkdir -p local/hooks/common
cp your-post-receive-hook local/hooks/common/post-receive
chmod +x local/hooks/common/post-receive
运行 gitolite setup
让挂钩传播到现有的回购协议(之后创建的回购协议无论如何都会得到它们)。
将用户(在我的例子中是 git)添加到网站空间组(对我来说是 www-data)
sudo usermod -a -G www-data git
如果您以用户身份登录,请注销以重新加载群组。
logout
#or
exit
#or
CTRL+A+D
(如果您想重新检查以该用户身份登录的组并键入“groups”以查看该用户所在的组)
确保网站空间属于正确的组。对我来说:
sudo chown www-data:www-data -R /var/www/webspace
(如果你想重新检查这个,你可以进入目录并输入“ls -g”)
在我的例子中,我不得不稍微修改我的“post-receive”,因为权限总是 -rw----- 在签出后,所以这是我的“post-接收":
#!/bin/sh
GIT_WORK_TREE=/var/www/webspace git checkout -f #default line to checkout
chmod -R a+r /var/www/webspace #added by me because of permission issues
为方便起见,我在回购目录 (/home/git/repositories/repo/hooks/post-receive) 中放置了“post-receive”。文档告诉你创建一个新文件夹(/home/git/local/specific-hooks/repo/post-receive(但他们告诉你自己命名))
*上面写的所有路径、名称、组和权限只适用于我。它们可能因您的安装而异。
真正解决了我的问题:
- 更改组后注销
- 更改 post-receive
中的权限 (chmod)
起点:
- Ubuntu 20.04
- Gitolite (/home/git/)
- 网站空间/var/www/webspace(通常归 www-data:www-data 所有)
- Git 用户(在 www-data 组中,也尝试过不在组中)
我想使用 post-receive 将网站空间更新为 git 用户到 www-data 目录。我在安装 Gitolite 之前将其存档,但它的工作方式似乎与以前不同(或者我遗漏了一些东西)。要说清楚:post-receive 在推送后执行(通常不在 Gitolite 上)...存档也很困难。
编辑:说清楚:我想归档 Git 和 www-data 可以访问和修改相同的文件。
我试过的:
- chmod 777 -R /var/www/webspace(此后git可以访问但是nginx returns 是403?)
- 正在将 Git-用户添加到 www-数据组
- chown www-数据:git -R /var/www/webspace
- chown git:www-data -R /var/www/webspace
- chown git:git -R /var/www/webspace
- chown www-data:www-data -R /var/www/webspace(组内有无git)(有无777)
- 正在执行post-手动接收(不允许操作)
- 正在执行 post-以 root 身份手动接收(嗯……当然有效,但这不是重点)
- ...也许还有一些我可能遗漏的步骤 rn
到目前为止我注意到的:
- 与 Git 相反,Gitolite 使用 -rw------ 检查回购协议(如果我没记错的话),也许这就是为什么它不能使用 gitolite 但有 Git
代码(不是很重要,只是列出所有内容):
- post-接收
#!/bin/sh
GIT_WORK_TREE=/var/www/webspace git checkout -f
也许我只是遗漏了什么,但请帮助我。
尝试并遵循“adding other (non-update) hooks”以便 Gitolite 调用相关的 post-receive hook。
将此行添加到
rc
文件的%RC
块内,如果它不存在,或者如果它已经存在并被注释掉,则取消注释:LOCAL_CODE => "$ENV{HOME}/local",
将你的钩子放入该目录,在一个名为“hooks/common”的子目录中:
# log on to gitolite hosting user on the server, then: cd $HOME mkdir -p local/hooks/common cp your-post-receive-hook local/hooks/common/post-receive chmod +x local/hooks/common/post-receive
运行
gitolite setup
让挂钩传播到现有的回购协议(之后创建的回购协议无论如何都会得到它们)。
将用户(在我的例子中是 git)添加到网站空间组(对我来说是 www-data)
sudo usermod -a -G www-data git
如果您以用户身份登录,请注销以重新加载群组。
logout
#or
exit
#or
CTRL+A+D
(如果您想重新检查以该用户身份登录的组并键入“groups”以查看该用户所在的组)
确保网站空间属于正确的组。对我来说:
sudo chown www-data:www-data -R /var/www/webspace
(如果你想重新检查这个,你可以进入目录并输入“ls -g”)
在我的例子中,我不得不稍微修改我的“post-receive”,因为权限总是 -rw----- 在签出后,所以这是我的“post-接收":
#!/bin/sh
GIT_WORK_TREE=/var/www/webspace git checkout -f #default line to checkout
chmod -R a+r /var/www/webspace #added by me because of permission issues
为方便起见,我在回购目录 (/home/git/repositories/repo/hooks/post-receive) 中放置了“post-receive”。文档告诉你创建一个新文件夹(/home/git/local/specific-hooks/repo/post-receive(但他们告诉你自己命名))
*上面写的所有路径、名称、组和权限只适用于我。它们可能因您的安装而异。
真正解决了我的问题:
- 更改组后注销
- 更改 post-receive 中的权限 (chmod)