雖然如今代碼託管的站點不少,可是若是不想把代碼公開,好比企業內部開發,仍是須要搭建本身的版本控制服務。這裏分享下如何使用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了。