虽然现在代码托管的站点很多,但是如果不想把代码公开,比如企业内部开发,还是需要搭建自己的版本控制服务。这里分享下如何使用SSH和HTTP来快速搭建Git服务端。
参考原文:How to Set Up Git Server Using SSH and HTTP on Ubuntu 14.04
作者:Xiao Ling
翻译:yushulx
基于SSH
安装OpenSSH Server:
sudo apt-get install openssh-server
创建一个新用户:
sudo adduser dynamsoft
创建初始化代码库:
mkdir -p /opt/git/dynamsoft.git
cd /opt/git/dynamsoft.git
sudo git init –bare –shared
获取远程代码库:
git clone dynamsoft@192.168.8.41:/opt/git/dynamsoft.git
现在做一下修改,然后尝试push代码。会出现错误:remote: error: insufficient permission for adding an object to repository database ./objects
这是权限问题。解决的方法就是增加权限。创建一个组:
sudo addgroup dynamsoftgit
把之前创建的用户添加到组里:
sudo usermod -a -G dynamsoftgit dynamsoft
增加组的文件夹访问权限:
sudo chgrp -R dynamsoftgit dynamsoft.git/
现在再push一次代码发现可以成功了:
基于HTTP
安装Apache:
sudo apt-get install apache2 apache2-utils
激活下面的模块:
a2enmod cgi alias env rewrite
现在编辑一下配置文件。老的Apache配置文件叫httpd.conf,现在改了。配置文件在 /etc/apache2/sites-enabled/000-default.conf 。
打开配置文件,可以看到默认的网站路径在/var/www/html。现在就在这个目录下创建一个Git的目录/var/www/html/git/dynamsoft.git。
在配置中添加下面的内容:
SetEnv GIT_PROJECT_ROOT /var/www/html/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
RewriteEngine On
RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]
RewriteCond %{REQUEST_URI} /git-receive-pack$
RewriteRule ^/git/ - [E=AUTHREQUIRED]
<Files "git-http-backend">
AuthType Basic
AuthName "Git Access"
AuthUserFile /var/www/html/.htpasswd
Require valid-user
Order deny,allow
Deny from env=AUTHREQUIRED
Satisfy any
</Files>
添加组权限:
sudo chgrp -R www-data /var/www/html/git
创建用户验证:
htpasswd –c /var/www/html/.htpasswd dynamsoft
继续添加一个用户:
htpasswd /var/www/html/.htpasswd xiao
现在可以正常的pull和push了。