如何在Linux上设置具有HTTP访问权限的Git服务器

时间:2013-10-29 12:20:45

标签: linux git http

我需要在Linux机器上创建一个Git存储库,然后通过HTTP访问它。还需要一个用户的完全访问权限和对匿名用户的只读权限。

之前我已经创建了本地存储库,但我不知道如何创建它(例如:inside / var / www或/ opt / git /...)

我试过这样做:

  

-sudo将GitHub存储库克隆到/var/www/repos/repo.git
  -cd /var/www/repos/repo.git
  -sudo git --bare update-server-info
  -sudo mv hooks / post-update.sample hooks / post-update
  -sudo service apache2 restart

然后我尝试从另一台机器访问此存储库:

  

- 使用浏览器:( http协议)192.168.1.49/repo.git< - WORKS
   - 终端: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 / named repo.git
   - 使用sudo chown更改www文件夹的权限-R www-data:www-data / var / www
  -enable webdav with sudo a2enmod dav_fs
  -config文件到/etc/apache2/conf.d中调用git.conf
   - 使用sudo htpasswd -c /etc/apache2/passwd.git用户为用户创建文件    - 使用sudo mv /var/www/repos/repo.git/hooks/post-update.sample /var/www/repos/repo.git/hooks/post-update& amp ;,重新命名pot-update文件并使其可执行。 &安培; sudo chmod a + x /var/www/repos/repo.git/hooks/post-update
  -update服务器并使用sudo git update-server-info&&重新启动apache sudo service apache2 restart

而且,要解决推送问题:

  

将文件.git / config编辑到您的存储库文件夹(客户端计算机)中,并将用户名和密码放在URL上:
  url =(http协议)用户:password@url/repos/repo.git

所以,现在我只需要为匿名用户设置只读。

1 个答案:

答案 0 :(得分:1)

已经修好,只需要:

  

- 将存储库输入/ var / www / repos / named repo.git

     

- 使用sudo chown -R www-data更改www文件夹的权限:www-data / var / www

     

-enable webdav with sudo a2enmod dav_fs

     

-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& amp;& sudo chmod a + x

     

/var/www/repos/repo.git/hooks/post-update

     

-update服务器并使用sudo git update-server-info&&重新启动apache sudo service apache2 restart

而且,要解决推送问题:

  

将文件.git / config编辑到您的存储库文件夹(客户端计算机)

     

并将用户名和密码放在url:url =(http

     

协议)用户:password@url/repos/repo.git

所以,现在我只需要为匿名用户设置只读。