现在的位置: 首页 > 综合 > 正文

ubuntu 11.10下简易git server服务器安装架设

2013年10月08日 ⁄ 综合 ⁄ 共 2298字 ⁄ 字号 评论关闭
强烈建议:在架设git服务器之前,了解下git的工作原理,直接参看<<pro git>>这本书即可,这本书在网上有公开的中文版下载。

1. git服务器需求(仅仅是针对本人的项目情况)

(1) 项目仅仅是2,3个人合作开发,项目不公开。
(2) 并且有一台闲置的Ubuntu 11.10服务器,每个开发人员都有各自的账号,开发人员通过windows端的putty软件登陆到Ubuntu服务器上编写程序,调试,并提交。
在这一需求下,一切都很简单,并不需要安装gitosis之类的工具,也不需要生成SSH公钥(虽然后面有提到)。

2. 生成 SSH 公钥(在我们的需求下,这一步不是必须的,但若不配置公钥,每次git clone和git push时需要输入git密码)
话虽如此,大多数 Git 服务器使用 SSH 公钥来授权。为了得到授权,系统中的每个没有公钥用户都得生成一个新的。该过程在所有操作系统上都差不多。 首先,确定一下是否已经有一个公钥了。SSH 公钥默认储存在账户的 ~/.ssh 目录。进入那里并查看其内容,有没有公钥一目了然:

$ cd ~/.ssh
$ ls
 id_dsa known_hosts id_dsa.pub
关键是看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是id_dsa 或者 id_rsa。 .pub 文件是公钥,另一个文件是密钥。假如没有这些文件(或者干脆连 .ssh 目录都没有),你可以用 ssh-keygen 的程序来建立它们,该程序在 Linux/Mac系统由 SSH 包提供, 在 Windows 上则包含在 MSysGit 包里:(linux下命令也是ssh-keygen,生成文件位于~/.ssh/下)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local
它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。

3. git安装
$sudo apt-get install git-core

4. 创建git账户
$sudo adduser \
  --system \
  --shell /bin/sh \
  --gecos 'git version control' \
  --group \
  --disabled-password \
  --home /home/git \
  git
这种方法是网上比较常见的方法,创建的是一个禁用密码的git用户,但在使用su命令切换git用户的时候,空密码老是验证失败,大家可以使用下面的方法来为git用户添加密码:
$sudo passwd git


5. 架设服务器
$ su git   // 切换到git用户登录
$ cd
$ mkdir .ssh
接下来,把开发者的 SSH 公钥添加到这个用户的 authorized_keys 文件中。假设第2步的生成公钥放在/tmp/id_rsa.ajaxhe.pub中。
执行如下命令,将公钥放到/home/git/.ssh/authorized_keys中(没有这个文件的话就创建一个)
$touch /home/git/.ssh/authorized_keys
$ cat /tmp/id_rsa.ajaxhe.pub >> /home/git/.ssh/authorized_keys

现在可以使用 --bare 选项运行 git init 来设定一个空仓库,这会初始化一个不包含工作目录的仓库。

$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init

用ajaxhe账户登陆到Ubuntu 11.10服务器

$ cd myproject
$ git init
$ echo "just a test" > test.file

$ git add .

$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master

注意这里还必须要创建一个文件(如test.file),否则会出现如下错误:
error: src refspec master does not match any.
error: failed to push some refs to 'git@gitserver:/opt/git/project.git'

这样,其他人的克隆和推送也一样变得很简单:

$ git clone git@gitserver:/opt/git/project.git
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master


抱歉!评论已关闭.