优选主流主机商
任何主机均需规范使用

如何在CentOS系统上一步步搭建高效的Git服务器:完整教程与最佳实践

前言

我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了。公司内部通常会搭建自己的Git服务器,我也通过在自己的服务器上搭建练习一下。

开始前先说一下服务器信息,这里是阿里云的CentOS 6.5 64位操作系统。

一 确认服务器是否安装Git

?

1 2 [root@iZ25r8k6ifuZ git] # rpm -qa git git-1.7.1-3.el6_4.1.x86_64

这里也已经安装过了,如果没有安装可以用yum install git 安装。

二 创建git用户

这里你可以选择新建一个用户来测试,也可以直接使用你的root进行以下操作。笔者也是看着资料一步一步来的,这里创建一个新用户teslachen进行操作。

?

1 2 [root@iZ25r8k6ifuZ ~] # useradd tesla [root@iZ25r8k6ifuZ ~] # passwd tesla

更改用户 tesla 的密码 。

新的 密码:

无效的密码: 它没有包含足够的不同字符

无效的密码: 过于简单

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

注1:创建用户权限不够请加上sudo;

注2:设置用户密码太过简单的话会有提示,但依旧可以设置成功。

三 生成ssh公钥

许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。

linux 可以在本机运行ssh-keygen -t rsa生成密钥,把.pub文件拷到服务器上。

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [root@iZ25r8k6ifuZ ~] # su tesla [tesla@iZ25r8k6ifuZ root]$ cd ~ [tesla@iZ25r8k6ifuZ ~]$ mkdir . ssh [tesla@iZ25r8k6ifuZ ~]$ ssh -keygen -t rsa Generating public /private rsa key pair. Enter file in which to save the key ( /home/tesla/ . ssh /id_rsa ): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/tesla/ . ssh /id_rsa . Your public key has been saved in /home/tesla/ . ssh /id_rsa .pub. The key fingerprint is: 13:bf:75:ba:67:7f:0e:a0:47:7a:fe:25: bc :81:85:c3 tesla@iZ25r8k6ifuZ The key's randomart image is: +--[ RSA 2048]----+ |     | |     | |  .  | |   o . . | |  S . E o | |   . O | |   + = = .| |   + .o.| |   o+oo+| +-----------------+ [tesla@iZ25r8k6ifuZ ~]$ cd . ssh / [tesla@iZ25r8k6ifuZ . ssh ]$ cat id_rsa.pub >> ~/. ssh /authorized_keys exit

四 添加tesla到sudoers文件

tesla用户现在对一些文件夹没有操作权限,修改/etc/sudoers文件来改变他的权限。最高管理员用户用下面命令打开。

?

1 [root@iZ25r8k6ifuZ ~] # visudo

然后我们在vim中找到下面这行

?

1 root ALL=(ALL) ALL

按i键开始插入,回车一下在下面一行加上

?

1 tesla ALL=(ALL) ALL

接着按下esc键,输入 :wq ,回车保存退出

五 创建Git代码仓库

?

1 2 3 4 5 6 7 8 [root@iZ25r8k6ifuZ ~] # mkdir /teslaRepo [root@iZ25r8k6ifuZ ~] # cd /teslaRepo/ [root@iZ25r8k6ifuZ teslaRepo] # sudo mkdir teslaProject.git [root@iZ25r8k6ifuZ teslaRepo] # chown tesla:tesla /teslaRepo/ [root@iZ25r8k6ifuZ teslaRepo] # chown -R tesla:git /teslaRepo/ [root@iZ25r8k6ifuZ teslaRepo] # cd teslaProject.git/ [root@iZ25r8k6ifuZ teslaProject.git] # sudo git --bare init Initialized empty Git repository in /teslaRepo/teslaProject .git/

这样一个叫teslaProject得Git仓库就创建好了

六 本地测试使用

你可以直接在服务器上进行本地测试,也可以直接用你的电脑来测试。下面我是使用自己的MBP来进行的测试。

?

1 2 3 4 5 6 localhost:~ okay$ cd Desktop /git/ localhost:git okay$ mkdir teslaRepo localhost:git okay$ cd teslaRepo/ localhost:teslaRepo okay$ git init Initialized empty Git repository in /Users/okay/Desktop/git/teslaRepo/ .git/ localhost:teslaRepo okay$ git remote add origin tesla@123.57.159.74: /teslaRepo/teslaProject .git

上面的命令在本地创建了一个文件夹并添加了服务器上的远程仓库

?

1 2 3 4 5 6 localhost:teslaRepo okay$ touch a.txt localhost:teslaRepo okay$ git add a.txt localhost:teslaRepo okay$ git commit -m "init commit" [master (root-commit) d14cd3b] init commit   1 file changed, 0 insertions(+), 0 deletions(-)   create mode 100644 a.txt

上面的命令在本地创建了一个a.txt并在本地提交了一次

?

1 2 3 4 5 6 7 localhost:teslaRepo okay$ git push origin master tesla@123.57.159.74's password: Counting objects: 3, done. Writing objects: 100% (3/3), 202 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To tesla@123.57.159.74:/teslaRepo/teslaProject.git   * [new branch]  master -> master

上面的命令将本地代码push到远程服务器上去了,下面我们在本地clone一次看下是否正确

七 本地clone

?

1 2 3 4 5 6 7 8 9 localhost:git okay$ mkdir ttt localhost:git okay$ cd ttt localhost:ttt okay$ git clone tesla@123.57.159.74:/teslaRepo/teslaProject.git Cloning into 'teslaProject'... tesla@123.57.159.74's password: remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. Checking connectivity... done.

clone完成,让我们看一下文件夹目录

之前push到服务器上的a.txt文件已经被clone下来

————分割线————-

1. 查看系统用户组

-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;

?

1 cut -d: -f1 /etc/group

2. 查看系统用户

?

1 cut -d: -f1 /etc/passwd

3. clone仓库

?

1 git clone git@your_gitServer_ip:/home/gitrepo/sample.git

4. push已有仓库

?

1 2 3 4 5 // 以master分支示范 git checkout master git remote rm origin git remote add origin git@your_gitServer_ip:/home/gitrepo/sample.git git push -u origin master

 

未经允许不得转载:搬瓦工中文网 » 如何在CentOS系统上一步步搭建高效的Git服务器:完整教程与最佳实践