Linux 系统搭建Git服务器


  • 说明 :文档环境为Mac 操作阿里云Linux远程服务器搭建git。个人心得,不保证绝对正确,仅供交流学习。
    参考文档:
    http://www.linuxidc.com/Linux/2015-09/123670.htm
    http://www.cnblogs.com/dwj97/p/6559056.html
    http://blog.csdn.net/qq_32685139/article/details/52426155

  • 需要
    1、一个Linux 系统云服务器 。
    2、一台能联网的Mac系统的电脑做客户端。


1、登录服务器

想操作肯定就得先登上去。好在大苹果就是屌,命令行登录简单的不要不要的

$ ssh [email protected]

'xxx.xxx.xxx.xxx' 就是你服务器的地址
root 是Linux的root 用户的用户名

2、安装git

服务器端使用的是shell 命令,不熟悉的童鞋可以百度一下 常用命令

#yum install -y git

安装完后,查看 Git 版本

[root@iZ252rbhhyiZ ~]# git --version
git version 1.7.1

3、服务器端创建 git 用户,用来管理 Git 服务

 [root@iZ252rbhhyiZ home]# id git
 id: git:无此用户
 [root@iZ252rbhhyiZ home]# useradd git
 [root@iZ252rbhhyiZ home]# passwd git
 [root@iZ252rbhhyiZ home]# id git
 uid=501(git) gid=501(git) groups=501(git)

4、服务器端创建 Git 仓库

这个地方看帖子没转过来:
/home/git目录是git用户的文件目录,
所以作者的git文件都放到这个目录下面了。

~继续:

首先把git目录 owner 修改为 git
然后 切换用户到git 再进到git目录进行操作,这样就不会有权限问题。
用户身份很重要不要搞错

[root@iZ252rbhhyiZ home]# chown -R git:git git
[root@iZ252rbhhyiZ git]# su git
[git@iZ252rbhhyiZ ~]$ cd /home/git

创建iOS文件夹,然后创建gittest.git 仓库文件夹
进入gittest.git 文件夹 初始化Git仓库
这个地方要注意,要在git这个账户下 用--bare 初始化才能正常提交

    [git@iZ252rbhhyiZ git]$ mkdir iOS
    [git@iZ252rbhhyiZ git]$ mkdir iOS/gittest.git
    [git@iZ252rbhhyiZ git]$ cd iOS/gittest.git
    [git@iZ252rbhhyiZ gittest.git]$ git --bare init
    Initialized empty Git repository in /home/git/iOS/gittest.git/

5、clone 远程仓库到本地

同样的本地的Mac电脑必须安装过git 。
想要可视化的用,最好再装一个Sourcetree
怎么装自行度娘吧~

在装有git的Mac本地新开一个命令窗口

Linux 系统搭建Git服务器_第1张图片
屏幕快照 2017-10-19 下午2.18.31.png

首先我们再桌面建一个test文件夹,用来存放clone的项目
进到test文件夹。把项目clone下来,期间输入你之前设置的服务器git账户的密码

$ cd desktop/test
$ git clone [email protected]:/home/git/iOS/gittest.git
Cloning into 'gittest'...

去到桌面打开test看看里面是不是多了一个gittest 文件夹。
这个时候一个空的项目仓库就建好了,也clone成功了。很简单,基本不会出错。

绕的在最后一步的ssh设置!

6、SSH设置

SSH这个是啥东西作者也描述不清楚。重要的是它的功能。
配置完SSH能让你clone和push的时候不用输入密码,一键更新。

大致的效果简单描述一下:

SSH 有公钥和私钥。生成的时候一起生成。
客户端把公钥给服务器,服务器存起来,第一次登录输入密码,
以后就能用ssh自动登录了。

  • 首先在客户端Mac电脑 生成ssh 公钥和私钥
ssh-keygen -t rsa

可以指定生成的文件的文件名,也可以不改,一路回车
最后下图这样客户端ssh生成就成功了。

Linux 系统搭建Git服务器_第2张图片
屏幕快照 2017-10-19 下午5.02.09.png

  • 服务器配置
    作者的服务器没有配过其他的ssh 所以文件路径重新配置的。
    首先在服务器的 home/git目录下新建.ssh 文件夹 然后跟客户端一样生成一个SSH到这个目录下.注意当前目录

    [root@iZ252rbhhyiZ git] # mkdir .ssh
    [root@iZ252rbhhyiZ git] # ssh-keygen -C '[email protected]' -t rsa 
    

    一路回车。然后cd .ssh

    # cd .ssh
    # ll
    

    就会看到多了三个文件

    QQ20171019-171800.png
  • 将客户端的公钥 粘贴到服务器的 authorized_keys 文件内
    在客户端,点击Finder 然后shift + com + g 打开文件跳转,前往~/.ssh

    Linux 系统搭建Git服务器_第3张图片
    QQ20171019-172041.png

    进去后找到你之前生成ssh时生成的文件的同名带.pub 后缀的文件 。
    如果没改名字一路回车生成的就是 id_rsa.pub 作者改了名字ky_linux

    Linux 系统搭建Git服务器_第4张图片
    BF6CCF97-D1B1-45AC-BE33-83E77EB6AF5E.png

    用文本编辑器打开文件,复制内容粘贴搭配服务器的authorized_keys文件内
    在服务器 .ssh 文件目录下:

    # vim authorized_keys
    

    进入vim 编辑模式 ,这个不熟悉的可以百度一下命令,本文按操作走就行。
    然后把复制的内容粘贴上,每个ssh 是一行 ,以后多用户的时候 就是多个ssh。
    esc 然后 :wq 保存退出
    这个时候如果你是之前配过下面的步骤,那么一台新的机器的ssh添加已经完成了。
    可惜第一次的时候总是还要多做一些
    首先切换到root 用户 。然后 vim 编辑/etc/ssh/sshd_config文件,这个文件是ssh服务器的配置文件

    Linux 系统搭建Git服务器_第5张图片
    C17D76F0-ABBD-4E6D-AFCC-EC448A439983.png

    找到上面这张图片中的那几段黄色语句,将其注释取消,再将属性修改成上面那样的。
    注意: AuthorizedKeysFile 这个是你存放 ssh 公钥的文件路径,你跟作者的可能不一样。

    启动一下ssh服务:

    # service sshd restart
    

    ok ssh 配置完成。回到客户端。
    弄个新的文件夹再clone一次试试。
    然后弄个新的文件夹再clone一次~

    其他,客户端多个ssh服务器配置

    命令行的git不知道你会不会用。反正我不会用。
    刚刚我们知道了一个服务器 可以在AuthorizedKeysFile 里面添加多个客户端的ssh 。那么客户端怎么配置多个ssh 同时联通多个服务器呢。
    毕竟哥们有 gitHub,有coding 和有这公司服务器。资源多也是一种烦恼啊

    ~SO!

  • 在客户端 前往文件夹 .ssh ,之前做过。没关Finder的就不需要这一步

  • 打开文件列表中的config 文件

Linux 系统搭建Git服务器_第6张图片
QQ20171019-180109.png

看作者配置了 gitHub 、coding 和作者公司的服务器 一共三个Host
你可以对比第三个来搞

其中:

HostName 是网址 可以是ip 也可以是域名地址
Host 是别名可以跟HostName一样,
要是改了的话你的服务器地址拼法就可以高大上的从这样:
git clone [email protected]:/home/git/iOS/gittest.git
变成这样
git clone git@myHost:/home/git/iOS/gittest.git
User 就是你在服务器的登录名 咱们设置的 是git
IdentityFile 是你放私钥的地址

配置完了就可以 用sourcetree来搞了。

Sourcetree : 新建 从 URL 克隆
输入地址 :
[email protected]:/home/git/iOS/gittest.git
或是:
git clone git@myHost:/home/git/iOS/gittest.git

选个文件存放目录,大公告成!

你可能感兴趣的:(Linux 系统搭建Git服务器)