如何在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了。

参考

相关文章
相关标签/搜索