虽然如今代码托管的站点不少,可是若是不想把代码公开,好比企业内部开发,仍是须要搭建本身的版本控制服务。这里分享下如何使用SSH和HTTP来快速搭建Git服务端。html
参考原文:How to Set Up Git Server Using SSH and HTTP on Ubuntu 14.04git
做者:Xiao Lingshell
翻译:yushulxapache
安装OpenSSH Server:
ubuntu
sudo apt-get install openssh-server
建立一个新用户:ssh
sudo adduser dynamsoft
建立初始化代码库:网站
mkdir -p /opt/git/dynamsoft.git cd /opt/git/dynamsoft.git sudo git init –bare –shared
获取远程代码库:ui
git clone dynamsoft@192.168.8.41:/opt/git/dynamsoft.git
如今作一下修改,而后尝试push代码。会出现错误:remote: error: insufficient permission for adding an object to repository database ./objectsspa
这是权限问题。解决的方法就是增长权限。建立一个组:翻译
sudo addgroup dynamsoftgit
把以前建立的用户添加到组里:
sudo usermod -a -G dynamsoftgit dynamsoft
增长组的文件夹访问权限:
sudo chgrp -R dynamsoftgit dynamsoft.git/
如今再push一次代码发现能够成功了:
安装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了。