Ubuntu搭建Git服务器
目录
经常写代码,还是需要一个git服务器方便管理。由于购买的阿里云服务器只是单核1G低配而已,所以就先搭个简单的git server来用用。
用户的配置
生成证书:
$ssh-keygen -t rsa -C "your_email@example.com"
服务器上的配置
安装git,并添加用户git:
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
$sudo apt-get install git $sudo adduser git # 修改git用户权限,保证安全性 $sudo vim /etc/passwd git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
创建证书登录:
添加用户的公钥,也就是每个用户的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
初始化git仓库:
$sudo mkdir -p /git/test.git $sudo cd /git/test.git $sudo git init --bare $sudo cd ../ $sudo chmod -R git:git test.git
GitWeb:
$sudo ln -s /usr/share/gitweb/ /var/www/gitweb $sudo ln -s /usr/share/gitweb/gitweb.cgi /usr/share/gitweb/index.cgi
修改gitweb的页面样式:https://github.com/kogakure/gitweb-theme,同时在系统上安装highlight包,使得代码能够显示得更加美观。
nginx的配置:
# gitweb server { root /var/www/gitweb; index index.html index.htm index.cgi; server_name git.xxx.com; auth_basic 'Gitweb Server!'; auth_basic_user_file /home/git/gitweb; location / { try_files $uri $uri/ /index.cgi; } location ~ \.cgi$ { fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_index index.cgi; include fastcgi_params; } }
其他问题解决:
1、git pull出错,提示:
Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
解决:在服务器上运行ssh-add;
2、遇到git操作错误时,可以尝试添加 -vT 参数来查看调试信息;
参考:
http://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%8D%8F%E8%AE%AE
https://help.github.com/articles/generating-ssh-keys
评论