zoukankan      html  css  js  c++  java
  • GIT服务器配置

    GIT server build up

    前几天说的任务启动了,虽然server还在采购流程中。但已经在一台PC机上搞起来,供小组内部测试啦。在此把过程记录下来吧:

    硬件需求:一台linux电脑,在公司局域网下有独立IP,并且保证小组每个人都能ping通;
    软件需求:git-core, gitosis, openssh-server, openssh-client

    安装git和openssh:
    $ sudo apt-get install git-core openssh-server openssh-client

    新加用户git,该用户将作为所有代码仓库和用户权限的管理者:
    $ sudo useradd -m git

    为git设置密码:
    $ sudo password git

    建立一个git仓库的存储点,我放在了/opt/git下,并且让出了git以外的用户对此目录无任何权限:
    $ mkdir /opt/git
    $ sudo chow git:git /opt/git
    $ sudo chmod 700 /opt/git

    初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备,当然在任何一台机器上使用git,第一次必须要初始化一下,git向来不搞“知名不具”那一套:
    $ git config --global user.name "name"
    $ git config --global user.email "myemail"

    安装一下python的setup tool, 这个也是为了gitosis做准备:
    $ apt-get install python-setuptools

    获得gitosis包:
    $ cd /tmp
    $ git clone git://eagain.net/gitosis.git
    $ cd gitosis
    $ sudo python setup.py install



    切换到git用户下:
    ---------------------------
    $  su - git

    默认状态下,gitosis会将git仓库放在git用户的home下,所以我们做一个链接到/opt/git
    $ ln -s /opt/git /home/git/repositories
    $ exit
    再次返回到默认用户。

    如果你将作为git服务器的管理员,那么在你的电脑上生成ssh公钥:
    $ ssh-keygen -t rsa

    将公钥拷贝到/tmp下,并给其他人以读权限:
    $ cp ~/.ssh/id_rsa.pub /tmp && chmod a+r /tmp/id_rsa.pub

    让gitosis运行起来:
    $ sudo -H -u git gitosis-init < /tmp/id_dsa.pub
    Initialized empty Git repository in /opt/git/gitosis-admin.git/
    Reinitialized existing Git repository in /opt/git/gitosis-admin.git/

    gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/opt/git/gitosis-admin.git。我们需要为一个文件加上可执行权限:
    $sudo chmod 755 /opt/git/gitosis-admin.git/hooks/post-update

    我们在服务器上新建一个空的项目仓库供大家测试一下,我建了一个叫“teamwork”的仓库。
    切换到git用户:
    $ su - git
    $ cd /opt/git
    $ mkdir teamwork.git
    $ cd teamwork.git
    $ git init --bare

    在你自己的电脑里,把gitosis-admin.git这个仓库clone下来,这样你就可以以管理员的身份修改配置了。
    在你的电脑里:
    $ git clone git@git-server-ip:gitosis-admin.git
    $ cd gitosis-admin

    现在把你们team所有人的ssh公钥文件都拿来,按名字命名一下,比如kevin.pub, cindy.pub, peng.pub等,统统拷贝到keydir下:
    $ cp ~/kevin.pub ~/cindy.pub ~/peng.pub keydir/
    修改gitosis.conf文件,我的配置大致如下:
    [gitosis]

    [group gitosis-admin]
    writable = gitosis-admin
    members = volans

    [group team]
    writable = teamwork
    members = volans kevin cindy

    [group team_ro]
    readonly = teamwork
    members = peng
    这个配置文件表达了如下含义:gitosis-admin组成员有volans,该组对gitosis-admin仓库有读写权限;team组有 volans, kevin, cindy三个成员,改组对teamwork仓库有读写权限; team_ro组有peng一个成员,对teamwork仓库有只读权限。

    当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。
    加入新文件、提交并push到git服务器:
    $ git add .
    $ git commit -am "add teamwork project and users"
    $ git push origin master

    好了,现在服务器就搭建完了,并且有一个空的项目teamwork在服务器上。接下来呢?当然是测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始化一个版本。就我来做吧

    $ cd
    $ mkdir teamwork-ori
    $ cd teamwork-ori
    $ git init
    $ echo "/*add what you want*/" > main.c
    $ git add .
    $ git commit -am "initial version"
    $ git remote add oringin git@git-server-ip:teamwork.git
    $ git push origin master

    到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下teamwork仓库,就可以任意玩儿了。
    $ git clone git@git@git-server-ip:teamwork.git


    另外:如果你有一个现成的git仓库,想放到gitserver上供team使用(比如你clone了一个官方的kernel仓库,想在内部使用它作为基础仓库),怎么办呢。
    首先需要从你的工作仓库中得到一个纯仓库, 比如你的工作目录为~/kernel, 你想导出纯仓库到你的优盘里,然后拷贝到gitserver上去。
    $ git clone --vare ~/kernel /media/udisk
    然后就拿着优盘,交给gitserver的管理员,让他拷贝到/opt/git/下,同时需要配置gitosis相关配置文件哦,这个就不用再说了吧。

    -------------

    配置Git服务器的几种方法

    首先大家要明确Git是分布式的版本控制系统,实际上是不需要固定的服务器的。简单的配置只要把git项目的放在局域网服务器的共享文件夹就行。

    1. Gitosis,在ubuntu上设置http://blog.agdunn.net/?p=277
    2. gitolite:在ubuntu上设置http://realcnbs.com/2010/12/setup-git-server-gitolite-ubuntu/
    3. webdav:配置方法:http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt 
    4. Git daemon 一个简单的git库管理服务软件http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html
    5. 使用第三方服务repo.or.cz, Github或者gitorious

    欢迎大家补充其他方法。

    我自己是在amazon ec2上使用gitolite配置的服务,同时使用了Githubgitorious

  • 相关阅读:
    Asp.NET 4.0 ajax实例DataView 模板编程1
    ASP.NET 4.0 Ajax 实例DataView模板编程 DEMO 下载
    部分东北话、北京话
    .NET 培训课程解析(一)
    ASP.NET 4.0 Ajax 实例DataView模板编程2
    ASP.NET Web Game 架构设计1服务器基本结构
    ASP.NET Web Game 构架设计2数据库设计
    TFS2008 基本安装
    Linux上Oracle 11g安装步骤图解
    plsql developer远程连接oracle数据库
  • 原文地址:https://www.cnblogs.com/shenhaocn/p/2007759.html
Copyright © 2011-2022 走看看