如何在Ubuntu上幾步搭建Git Server

雖然如今代碼託管的站點不少,可是若是不想把代碼公開,好比企業內部開發,仍是須要搭建本身的版本控制服務。這裏分享下如何使用SSH和HTTP來快速搭建Git服務端。html

參考原文:How to Set Up Git Server Using SSH and HTTP on Ubuntu 14.04git

做者:Xiao Lingshell

翻譯:yushulxapache

基於SSH

安裝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一次代碼發現能夠成功了:

基於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了。

參考

相關文章
相關標籤/搜索