如何在 Linux 上设置具有 HTTP 访问权限的 Git 服务器
Posted
技术标签:
【中文标题】如何在 Linux 上设置具有 HTTP 访问权限的 Git 服务器【英文标题】:How to set up a Git server with HTTP access on Linux 【发布时间】:2013-10-29 12:20:45 【问题描述】:我需要在 Linux 机器上创建一个 Git 存储库,然后通过 HTTP 访问它。还需要一个用户的完全访问权限和对非用户的只读权限。
我之前创建了本地存储库,但我不知道如何创建它(例如:在 /var/www 或 /opt/git/... 内部)
我试过这样做:
-sudo 将 GitHub 存储库克隆到 /var/www/repos/repo.git -cd /var/www/repos/repo.git -sudo git --bare 更新服务器信息 -sudo mv hooks/post-update.sample hooks/post-update -sudo 服务 apache2 重启
然后我尝试从另一台机器访问这个存储库:
-使用浏览器:(http 协议)192.168.1.49/repo.git - 使用终端: git clone --bare (http 协议)192.168.1.49/repo.git
终端说:
正在克隆到裸存储库 repo.git... 致命:(http协议)192.168.1.49/repo.git/info/refs?service=git-upload-pack not found:你在服务器上运行了 git update-server-info 吗?
我想可能是权限问题。我需要如何管理 /var/www 中的权限?
编辑:已经修复,只是需要:
-将存储库放入 /var/www/repos/ 命名为 repo.git - 使用 sudo chown -R www-data:www-data /var/www 更改 www 文件夹的权限 - 使用 sudo a2enmod dav_fs 启用 webdav -config 文件到 /etc/apache2/conf.d 称为 git.conf - 使用用户创建文件 sudo htpasswd -c /etc/apache2/passwd.git user -重命名 pot-update 文件并使用 sudo mv /var/www/repos/repo.git/hooks/post-update.sample /var/www/repos/repo.git/hooks/post-update && sudo 使其可执行chmod a+x /var/www/repos/repo.git/hooks/post-update -更新服务器并使用 sudo git update-server-info && sudo service apache2 restart 重启 apache
并且,要解决推送问题:
将文件 .git/config 编辑到您的存储库文件夹(客户端计算机)中,并将用户名和密码放在 url 上: url = (http 协议)user:password@url/repos/repo.git
所以,现在我只需要为非用户设置只读即可。
【问题讨论】:
你为什么使用 sudo? @AD7six 不知道,跟着网上教程... 这不是编程问题,所以跑题了。 如果您想通过 http 设置写访问 - 这与堆栈溢出无关。如果你使用 sudo - 你会遇到权限问题,因为一切都归 root 所有。 “通常”你会设置 http 为只读,匿名访问并使用 ssh 进行读/写 - 这也很容易设置 @AD7six 是的,我同意你的看法,但这是学校作业,所以我们需要使用 http 进行读/写。 【参考方案1】:已经修复,刚需:
-将存储库放入 /var/www/repos/ 命名为 repo.git
-使用 sudo chown -R www-data:www-data /var/www 更改 www 文件夹的权限
-使用 sudo a2enmod dav_fs 启用 webdav
-config 文件到 /etc/apache2/conf.d 中称为 git.conf
-使用 sudo htpasswd -c /etc/apache2/passwd.git 用户创建文件
-重命名 pot-update 文件并使用 sudo mv /var/www/repos/repo.git/hooks/post-update.sample 使其可执行
/var/www/repos/repo.git/hooks/post-update && sudo chmod a+x
/var/www/repos/repo.git/hooks/post-update
-更新服务器并使用 sudo git update-server-info && sudo service apache2 restart 重启 apache
并且,要解决推送问题:
将文件 .git/config 编辑到您的存储库文件夹(客户端计算机)
并把用户名和密码放在url上:url = (http
protocol)user:password@url/repos/repo.git
所以,现在我只需要为非用户设置只读即可。
【讨论】:
以上是关于如何在 Linux 上设置具有 HTTP 访问权限的 Git 服务器的主要内容,如果未能解决你的问题,请参考以下文章