美文网首页
MAC下搭建配置Git服务器

MAC下搭建配置Git服务器

作者: LeonYin | 来源:发表于2019-02-18 17:31 被阅读0次

    XCode 默认支持 Git 作为代码仓库,当我们新建一个仓库的时候,可以勾选创建默认及使用配置,总体思路是:使用 gitosis 来简化创建过程,在用作服务器的机器上创建一个名为 gitserver 的账户来创建 git 本地服务器,其他客户端通过 ssh 机制访问 git 服务器。

    一、创建新用户

    1. 在用作服务器的 Server机器 上创建 gitserver账户。我们可以通过 System Preferences->accounts 来添加。在这里我添加一个 gitserver 的 administrator 账户,administrator 不是必须的,在这里仅仅为了方便。
      或者通过命令:
    sudo adduser \
        --system \
        --shell /bin/sh \
        --gecos 'git version control' \
        --group \
        --disabled-password \
        --home /srv/example.com/git \
        gitserver
    
    1. 设置远程访问
      logout 当前账户,使用 gitserver 账户登录;在 System Preferences->Sharing 中,勾选:Web Sharing 和 Remote Logig。即远程登录和文件共享。

    二、下载安装 gitosis

    1. 下载安装gitosis
      通过以下命令行下载,或者在github上直接下载。
    git clone git://eagain.net/gitosis
    

    进入 gitosis 目录 执行 python 脚本来安装 gitosis。

    python setup.py install
    

    三、制作SSH公钥

    1. 回到 client 机器上,制作 ssh 公钥,放置到gitserver的 /tmp 目录下。使用以下命令。
    bash-3.2$ cd ~
    bash-3.2$ ssh-keygen -t rsa
    bash-3.2$ cd .ssh
    bash-3.2$ ls
    id_rsa        id_rsa.pub
    bash-3.2$ cp id_rsa.pub /tmp/yourame.pub
    

    进入到 local 账户的 home 目录,使用 ssh-keygen -t rsa 生成 id_rsa.pub,最后将该文件拷贝放置到 /tmp/yourname.pub,这样 gitserver 账户就可以访问 yourname.pub了,注意,此处一定要将公钥的名字改成和yourname.pub中的最后一句相同,比如我的文件中最后一句是yinli@localhost ,因此公钥名字改为yinli@localhost.pub ,在这里改名是为了便于在 gitserver 中辨识多个 client。

    四、使用 ssh 公钥初始化 gitosis

    1. 拷贝 yourname.pub 至服务器的 /tmp/yourname.pub。登入服务器机器的 gitserver 账户,进入先前提到 gitosis 目录,进行如下操作初始化 gitosis,初始化完成后,会在 gitserver 的 home 下创建 repositories 目录。
    sudo -H -u gitserver gitosis-init < /tmp/yourname.pub
    
    1. 在这里,会将该 公钥的client 当做认证受信任的账户,因此在 gitserver 的 home 目录下会有记录,路径为 /~/.ssh/authorized_keys 的文件内容与 yourname.pub 差不多。
    open -e  ~/.ssh/authorized_keys
    

    我们需要将 authorizd_keys 稍做修改,用文本编辑器打开它,删除里面的"command="gitosis-serve yourname",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " 这一行:

    1. 然后,我们对 post-update 赋予可写权限,以便 client 端可以提交更改。
    sudo chmod 755 /Users/gitserver /repositories//gitosis-admin.git/hooks/post-update
    
    1. 最后一步,修改 git 账户的 PATH 路径。
      在gitosis目录下执行以下命令
    yourname:gitosis git$ touch ~/.bashrc
    yourname:gitosis git$ echo PATH=/usr/local/bin:/usr/local/git/bin:\$PATH > .bashrc
    yourname:gitosis git$ echo export PATH >> .bashrc
    yourname:gitosis git$ cat .bashrc 
    PATH=/usr/local/bin:/usr/local/git/bin:$PATH
    export PATH
    

    五、client 配置

    1. 回到 local 账户,首先在 terminal 输入如下命令修改 local 的 git 配置:
    bash-3.2$ git config --global user.name "yourgitname"
    bash-3.2$ git config --global user.email "yourmail@yourcom.com"
    

    与上面类似,此处我的name 填的是 yinli ,email 是 yinli@localhost ,根据自己的机器来修改。

    1. 测试服务器是否连接正确,将 10.1.4.211 换成你服务的名称或服务器地址即可。
     ssh gitserver@192.168.1.108
    
    1. 在本地 clone 服务器仓库,下面以 gitosis-admin.git 为例:
    bash-3.2$ git clone gitserver@192.168.1.108:repositories/gitosis-admin.git
    Cloning into gitosis-admin
    remote: Counting objects: 5, done.
    remote: Compressing objects: 100% (5/5), done.
    remote: Total 5 (delta 0), reused 5 (delta 0)
    Receiving objects: 100% (5/5), done.
    bash-3.2$ ls
    Desktop        InstallApp    Music        Sites
    Documents    Library        Pictures    gitosis-admin
    Downloads    Movies        Public
    bash-3.2$ git 
    

    在上面的输出中可以看到,我们已经成功 clone 服务器的 gitosis-admin 仓库至本地了。

    六、添加client,以及新建&配置远程仓库

    1. 进入 gitosis-admin 目录,我们来查看一下其目录结构:gitosis.conf 文件是一个配置文件,里面定义哪些用户可以访问哪些仓库,我们可以修改这个配置;keydir 是存放ssh 公钥的地方。我们可以打开gitosis.conf来看看如何配置gitosis。
     [group gitosis-admin]
    members = yinli@localhost
    writable = gitosis-admin
    

    这个配置文件表达了如下含义:gitosis-admin组成员有yinli@localhost,该组对gitosis-admin仓库有读写权限。因为只添加了一个公钥,故members成员只有一个。

    1. 更改并提交本地配置文件
      打开gitosis.conf,修改如下。
    [group gitosis-admin]
    members = yinli@localhost  weixxx@localhost
    writable = gitosis-admin
    
    [group gitosis-xxprj]
    members = yinli@localhost qiao@localhost
    writable = teamwork
    
    [group gitosis-xxprj_ro] 
    readonly = teamwork 
    members = weixxx@localhost
    

    新建了gitosis-xxprj项目组以及gitosis-xxprj_ro只读项目组,并加入两个新的成员qiao@localhost,weixxx@localhost。添加了两个新的成员,因此必须加入相对应的公钥,qiao@localhost.pubweixxx@localhost.pub拷贝并添加到keydir中。

    当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
    加入新文件、提交并push到gitserver服务器:

    $ git add . 
    $ git commit -am “add teamweok prj and users” 
    $ git push origin master
    
    1. 配置文件上传成功后,我们就需要为gitosis-xxprj等项目添加一个新的远程仓库。
      我们在服务器上新建一个空的项目仓库,叫“teamwork”。
      切换到gitserver服务器上:
    $ cd ~/repositories/
    $ mkdir teamwork.git
    $ cd teamwork.git
    $ git init - -bare 注:这是在服务器上运行的,是为了初始化一个根级的git仓库
    
    1. 初始化项目
      好了,现在服务器就搭建完了,并且有一个空的项目teamwork在服务器上。接下来呢?当然是测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始 化一个版本。就我来做吧,以下是在客户端完成。
    $ mkdir teamwork-ori
    $ cd teamwork-ori/
    $ git init
    $ echo “/*add something*/” > hello
    $ git add .
    $ git commit -am “initial version”
    $ git remote add origin  gitserver@192.168.1.108:repositories/teamwork.git  
    $ git push origin master
    

    到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下 teamwork仓库,就可以任意玩了。

    相关文章

      网友评论

          本文标题:MAC下搭建配置Git服务器

          本文链接:https://www.haomeiwen.com/subject/lbhzeqtx.html