设为首页 收藏本站
查看: 1071|回复: 0

[经验分享] ubuntu搭建git服务器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-10 08:54:36 | 显示全部楼层 |阅读模式
事先强调几个工具的用途

  • git-core    git工具的主程序
  • openssh-server openssh-client    ssh工具的主程序,一个是服务端,一个是客户端
  • python-setuptools    以后安装gitosis要用到的工具


我的系统为ubuntu 12.04.5 server amd64
在搭建git服务器之前先请确认ubuntu系统已经安装成功,由于本文着重强调git服务器的安装就不阐述ubuntu 系统的安装过程,以及git命令的基本语法.以下所以有的命令都是在终端输入窗口输入.(这个其实不用我强调的,对吧.哇咔咔)
目前ubuntu的服务器的全名为ubuntu,用户名:antier
  • 更新软件
    antier@ubuntu:~$sudo apt-get update

  • 安装git,ssh协议
    antier@ubuntu:~$sudo apt-get install git-core openssh-server openssh-client
    注:git-core是git版本控制核心软件,安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文件,安装的过程中有确认操作,输入Y后等待系统自动从镜像服务器中下载软件安装,安装完后会回到用户当前目录
  • 安装python的setuptools和gitosis,由于gitosis的安装需要依赖于python的一些工具,所以这里需要先安装python的setuptools,
    antier@ubuntu:~$sudo apt-get install python-setuptools
    由于gitosis的安装需要用到git,所以在获取gitosis包时需要先初始化一个服务器的git用户信息
    antier@ubuntu:~$git config --global user.name "YourName"
    antier@ubuntu:~$git config --global user.email "Email@example.com"
    初始化服务器的用户信息后,就可以安装gitosis了.gitosis是用于管理git并给用户授权的工具,设置权限算是很方便的啦.这里我们将gitosis下载到/tmp目录下
    antier@ubuntu:~$git clone https//github.com/res0nat0r/gitosis.git
    获取gitosis文件后.在/tmp目录下就会多出一个文件目录,名为gitosis
    antier@ubuntu:~$cd /tmp/gitosis/
    antier@ubuntu:/tmp/gitosis$sudo python setup.py install

  • 创建git管理帐户,配置git.这个是一定要做的.这个直接会影响到后期clone
    antier@ubuntu:~$sudo useradd -m git
    antier@ubuntu:~$sudo passwd git
    然后在/home目录下创建一个项目仓库存储点,并设置只有git用户拥有所有权限,其他用户没有任何权限
    antier@ubuntu:~$sudo mkdir /home/gitrepository
    antier@ubuntu:~$sudo chown git:git /home/gitrepository
    antier@ubuntu:~$sudo chmod 700 /home/gitrepository
    由于gitosis初始化时会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在/home/git/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目的仓库目录/home/gitrepository。
    antier@ubuntu:~$sudo ln -s /home/gitrepository /home/git/repositories
  • 初始化gitosis
    由于初始化gitosis时需要用户的ssh公钥,所以这里将在服务器端生成git用户的ssh公钥,如果想在其他机器上管理也可以在其他机器上生成一个ssh公钥
    antier@ubuntu:~$su git        (注:以下的命令符前只有$时,说明当前是用git用户登陆并执行命令操作)
    $ssh-keygen -t rsa
    这里会提示输入密码,我们不输入直接回车即可,git用户的ssh公钥将生成在/home/git/.ssh/id_rsa.pub,为了方便管理,我们将公钥拷贝到服务器的/tmp下
    $cp /home/git/.ssh/id_rsa.pub /tmp
    为了方便管理公钥我们这里将公钥的名字改一下
    $mv /tmp/id_rsa.pub /tmp/git.pub
    如果是其他机器上的ssh公钥可以通过以下方式将公钥拷贝至服务器的/tmp目录
    $scp /home/$username/.ssh/id_rsa.pub git@<server-ip>:/tmp
    antier@ubuntu:~$sudo chmod a+r /tmp/git.pub
    antier@ubuntu:/tmp/gitosis$sudo -H -u git gitosis-init < /tmp/git.pub

    gitosis主要是通过gitosis-admin.git仓库来管理一些配置文件的,如用户权限的管理。这里我们需要对其中的一个post-update文件添加可执行的权限。
    ubuntu:/home/git$ sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update
    注:这一段我有看到网上这么处理一下,但我发现,如我之前这样操作后post-update本身的权限就已经是755啦.所以这里只是标注一下.
  • 服务器上创建项目仓库
    使用git帐户在服务器上创建一个目录(mytestproject.git)并初始化成git项目仓库
    antier@ubuntu:~$su git
    $cd /home/gitrepository
    进入这个目录可以发现该目录里存在一个gitosis-admin.git目录,这个明白是哪里来的嘛,还记得之后做过ln -s xxxx的操作嘛,哇咔咔,是不是秒懂啦.
    $mkdir mytestproject.git
    $cd mytestproject.git
    $git init -- bare
    $exit
    注:执行完init的操作,正常情况下会提示创建了一个暂时为空的仓库,好啦,现在新建的仓库已经创建好了,但目前还不能被客户端clone,还需要对gitosis进行一些配置操作
  • 使用gitosis管理用户操作项目的权限
    由于gitosis的管理是通过git的clone,然后修改并提交进行管理的,还记得gitosis在服务上安装并初始化嘛?还记得当时gitosis是怎么初始化的嘛?没错,就是用git用户去初始化的,我现在在这里给你申明一下,等下告诉你为什么我要申明哦.哇咔咔...在客户端机器上新建一个目录用于存放gitosis-admin.git仓库,这里由于我想用antier用户进行管理mytestproject.git所以执行以下操作,如果你在客户端机器上,也可以执行类似的操作哦
    antier@ubuntu:~$mkdir workspace
    antier@ubuntu:~$cd workspace
    antier@ubuntu:~/workspace$mkdir gitadmin
    antier@ubuntu:~/workspace$cd gitadmin
    antier@ubuntu:~/workspace/gitadmin$git clone git@<service-ip>:/home/git/repositories/gitosis-admin.git
    注:这下明白我之前申明的用意了嘛!是不是秒懂clone后面地址为什么是这样子了嘛,哇咔咔...
    clone下来有一个gitosis-admin目录,可以看到gitosis-admin目录里有一个配置文件gitosis.conf与一个目录keydir.
    gitosis.conf用于配置用户的权限信息,keydir主要用户存放ssh公钥文件(一般以"用户名@机器名.pub"命名,gitosis.conf配置文件中必须使用相同用户名),用于认证请求的客户机器
    antier@ubuntu:~/workspace/gitadmin/keydir$ssh-keygen -t rsa
    antier@ubuntu:~/workspace/gitadmin/keydir$cp /home/antier/.ssh/id_rsa.pub ./
    antier@ubuntu:~/workspace/gitadmin/keydir$mv id_rsa.pub antier@ubuntu.pub
    antier@ubuntu:~/workspace/gitadmin/keydir$cd ../
    antier@ubuntu:~/workspace/gitadmin/keydir$vim gitosis.conf
    编辑gitosis.conf文档,在文档最后添加以下内容
    [group mytestproject]
    members = git@ubuntu antier@ubuntu
    writable = mytestproject
    这样修改已经完成了,而这些修改只是在本地哦,还需要推送到服务器中才能生效,可别忘记啦.
    antier@ubuntu:~/workspace/gitadmin$git add .
    antier@ubuntu:~/workspace/gitadmin$git commit -m "add a user antier@ubuntu permission"
    antier@ubuntu:~/workspace/gitadmin$git push origin master
    现在服务器中的mytestporjetc仓库就算是搭建好了.接下来有对应权限的成员就可以各自从服务器上clone对应仓库并进行相关操作啦.
  • 测试
    antier@ubuntu:~/workspace$git clone git@<server-ip>:mytestproject.git mytestproject
    这时可以看到在workspace目录下就多出一个mytestproject空目录,其实它并不是一个空目录,你可以使用ll命令查看,目录下对应有一个.git目录.哇咔咔...这个空目录就是当初我们在服务上的新仓库/home/git/repositories/mytestproject.git,为了进一步验证,我们在本地添加一个文件
    antier@ubuntu:~/workspace/mytestproject$touch test.txt
    antier@ubuntu:~/workspace/mytestproject$git add .
    antier@ubuntu:~/workspace/mytestproject$git commit -m "add test.txt for test"
    antier@ubuntu:~/workspace/mytestproject$git push origin master
    antier@ubuntu:~/workspace$git clone git@<server-ip>:mytestproject.git mytestproject_2
    这下我们去看mytestproject_2的目录,有发现什么,是不是相对之前取的mytestproject多了一个test.txt文档.或者我们查看一下git log信息,是不是有一条信息为"add test.txt for test"
  • 完结,到此算是说完了.感觉好啰嗦啊!!哇咔咔...文章中有些文字排版有采纳了部分网络博文的描述方式,每个操作我都是经过自己测试过,才敢负责任的阐述出来,如果还有什么不明白的,请参数我的另外一篇博文"说在前面的话"



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-111729-1-1.html 上篇帖子: 安装部署gitlab ci 下篇帖子: GitHub 的两次故障分析 ubuntu 服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表