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

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

[复制链接]

尚未签到

发表于 2017-6-6 11:46:05 | 显示全部楼层 |阅读模式
  文章转载地址:http://www.iyunv.com/Linux/2015-05/117502.htm
  亲测可行,已经自己搭建一个正在使用中,搭建完成后,结合着pycharm +git,就能直接本地编辑了;
  注:文章中有在原文修改的部分,会用红色标出
  Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,学过Linux的都知道,Git的优点我就不再多说了,我也是很喜欢Linux的。今天我们一起学习Git服务器在Ubuntu 12.04上的配置,废话不多说,走起!
  1.Git 服务器的搭建过程详细记录,如下:
  搭建环境:Ubuntu 12.04 桌面版或服务器版均可 软件要求: git-core, gitosis, openssh-server, openssh-client, Apache2(Gitweb),python编译环境。
  2,安装配置git服务器。
  准备工作,为了不改变计算机的环境,我们新增家一个用户:
  User Name:git
  Password:git
  切换用户:su git
DSC0000.jpg

  3.安装git和openssh:
  git@lightserver-GREATWALL-PC:~$ sudo apt-get install git-core openssh-server openssh-client
DSC0001.jpg  

  4.添加Git用户gitadmin,该用户将作为所有代码仓库和用户权限的管理者:
  git@lightserver-GREATWALL-PC:~$ sudo useradd -m gitadmin
DSC0002.jpg

5.建立一个git仓库的存储点:
DSC0003.jpg

  6.更改gitadmin的权限(同时也要保证 gitadmin下的所有文件,都归属与gitadmin)
  git@lightserver-GREATWALL-PC:~/repo$ sudo chown gitadmin:gitadmin /home/git/repo
DSC0004.jpg

  更改仓库的访问权限:
  sudo chmod 700 /home/git/repo
     DSC0005.jpg
  7.安装配置gitosis
  初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备。在任何一台机器上使用git,第一次必须要初始化一下:初始化用户名和邮箱。
  git@lightserver-GREATWALL-PC:~/repo$ sudo git config --global user.name “Your Name”
DSC0006.jpg

  OK,没有报错,通过设置!
  初始化git邮箱
  git@lightserver-GREATWALL-PC:~/repo$ sudo git config --global user.email “你的用户名@你的ip“
  @后是服务器IP。
DSC0007.jpg

8.安装一下python的setup tool, 这个也是为了gitosis做准备:
DSC0008.jpg

  git@lightserver-GREATWALL-PC:~/repo$ sudo apt-get install python-setuptools
  OK,Next!
  9.获得gitosis包:切换到/tmp下。
  git@lightserver-GREATWALL-PC:/$ cd /tmp
DSC0009.png

  git@lightserver-GREATWALL-PC:/tmp$ git clone https://github.com/res0nat0r/gitosis.git
DSC00010.jpg

  ls一下:多了个gitosis文件夹吧?
DSC00011.jpg

  Perfect,Next,python 安装gitosis
  git@lightserver-GREATWALL-PC:/tmp/gitosis$ sudo python setup.py install
     DSC00012.jpg
    到此为止,gitosis安装完成!
  10.切换到gitadmin用户下:
  light-server@lightserver-GREATWALL-PC:~sugitadmin  密码:
DSC00013.jpg

  为什么是$ ?多难看。Linux支持bash,shell,sh或许就是这个原因吧?我猜的,试试不就知道了?走起。。   
DSC00014.jpg

  还真是这个原因,这样看着顺眼!
  11.默认状态下,gitosis会将git仓库放在 gitadmin用户的home下,所以我们做一个链接到/home/repo
ln -s /home/git/repo /home/gitadmin/repositories
  返回正常用户:
  $ exit
  light-server@lightserver-GREATWALL-PC:~$
DSC00015.png

  查看软链接状态:
DSC00016.jpg

  12.如果你将作为git服务器的管理员,那么在你的电 脑上(另一台pc)生成ssh公钥:
  这是在windows下生成公匙的方法:点击 (如果你就一个服务器,可以这样弄)
  配合着本地的git Bash
  我在我的电脑上,用户为:wuzhang@ubuntu:$
  生成ssh公钥。
  wuzhang@ubuntu~:$ ssh-keygen -t rsa
DSC00017.png

  OK,生成公钥成功!
  复制到远程主机上,这就考验我们Linux 命令的基础了。还好大一linux学的还不错!
  Scp 远程复制命令: scp 本地文件 远端主机:存储路径
  例如:scp .ssh/id_rsa.pub light-server@10.255.13.253:/tmp
     DSC00018.jpg
    OK,100%这个我喜欢, 说明复制成功了,不信我们可以去主机查看:
DSC00019.jpg

  果然有id_rsa.pub.
  在git服务器上,更改权限:
  git@lightserver-GREATWALL-PC:/tmp/gitosis$ sudo chmod a+r /tmp/id_rsa.pub
DSC00020.jpg

  13.让gitosis运行起来:
  执行命令:sudo -H -u git gitosis-init < /tmp/id_rsa.pub
DSC00021.jpg

  Initialized empty Git repository in /home/repo/gitosis-admin.git/
  Reinitialized existing Git repository in /home/repo/gitosis-admin.git/
   说明实例化空的git仓库/home/git/repositories/gitosis-admin.git/已成功了。
  注:执行到这一步有可能出现问题
   DSC00022.png
  解决办法:重启服务器,重新生成 id_rsa.pub(具体原因:点击,这个解决应该可行)
14.gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/home/git/repositories/gitosis-admin.git。
我们需要为一个文件加上可执行权限:
  获取root权限
  light-server@lightserver-GREATWALL-PC:/home$ sudo -i
  目录切换:
  root@lightserver-GREATWALL-PC:/home/git# cd repositories/
  root@lightserver-GREATWALL-PC:/home/git/repositories# ls
  gitosis-admin.git
  root@lightserver-GREATWALL-PC:/home/git/repositories# cd gitosis-admin.git
  root@lightserver-GREATWALL-PC:/home/git/repositories/gitosis-admin.git# ls
  config gitosis.conf gitosis-export HEAD hooks index objects refs
  更改权限(关键步骤)
  root@lightserver-GREATWALL-PC:/home/git/repositories/gitosis-admin.git# sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
root@lightserver-GREATWALL-PC:/home/git/repositories/gitosis-admin.git# exit
准备工作到此结束了,下面可以进行测试了!
  15.在服务器上新建一个测试项目仓库
  我建了一个叫“teamwork”的仓库。切换到gitadmin用户:
gitadmin@lightserver-GREATWALL-PC:~mkdirteamwork.gitgitadmin@lightserver&minus;GREATWALL&minus;PC:   cd teamwork.git/
gitadmin@lightserver-GREATWALL-PC:~/teamwork.git$
DSC00023.jpg

  git的初始化:
gitadmin@lightserver-GREATWALL-PC:~/teamwork.git$ git init --bare
Initialized empty Git repository in /home/gitadmin/teamwork.git/
gitadmin@lightserver-GREATWALL-PC:~/teamwork.git$
DSC00024.jpg

  但是,到目前为止,这只是一个空仓库,空仓库是不能clone下来的。为了能做clone,我们必须先让某个有权限的人放一个初始化的版本到仓库中。
所以,我们必须先修改一下/home/git/repositories /gitosis-admin.
  16.管理gitosis的配置文件
  刚刚提到,gitosis本身的配置也是通过git来实现的。在你自己的开发机里,把gitosis-admin.git这个仓库clone下来,就可以以管理员的身份修改配置。
  好的,我们回到另一台PC上进行对服务端的测试! 我自己的PC,名字叫:wuzhang@ubuntu
  wuzhang@ubuntu:~/work$ sudo git clone root@10.255.13.253:/home/git/repositories/gitosis-admin.git
Cloning into 'gitosis-admin'...
root@10.255.13.253's password:
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.
wuzhang@ubuntu:~/work$
DSC00025.png

  PS:目前主机必须是root才可以克隆.
  wuzhang@ubuntu:~/work/gitosis-admincdkeydir/wuzhang@ubuntu: /work/gitosis&minus;admin/keydir  ls
wuzhang@ubuntu.pub
wuzhang@ubuntu:~/work/gitosis-admin/keydir$
wuzhang@ubuntu上用户权限配置(gitosis.conf)使用vi编辑器打开:(默认应该就有一个用户)
  [gitosis]
  [group gitosis-admin]
members = wuzhang@ubuntu
writable = gitosis-admin
members = wuzhang@10.255.13.253 light-server@10.255.13.253
  [group hello]
writable = teamwork
members = lijiangkun@server b git@10.258.13.100
  [group hello_ro]
readonly = teamwork
members = lz
DSC00026.png

  wq!  保存退出.
  这个配置文件表达了如下含义:gitosis-admin组成员有wuzhang@ubuntu, wuzhang@10.255.13.100, light-server@10.255.13.253
该组对gitosis-admin仓库有读写权限;
team组有lijinagkun@server,b两个成员.该组对teamwork仓库有读写权限;
team_ro组有lz一个成员,对teamwork仓库有只读权限
在wuzhang@ubuntu上创建一hello.txt的测试文档:
wuzhang@ubuntu:~/work/teamwork_projectecho"Testgitserver.">hello.txtwuzhang@ubuntu: /work/teamwork p roject  ls -al
总用量 16
drwxrwxr-x 3 wuzhang wuzhang 4096 5月 13 18:08 .
drwxrwxr-x 4 wuzhang wuzhang 4096 5月 13 18:07 ..
drwxrwxr-x 7 wuzhang wuzhang 4096 5月 13 18:07 .git
-rw-rw-r-- 1 wuzhang wuzhang 18 5月 13 18:09 hello.txt
wuzhang@ubuntu:~/work/teamwork_project$
DSC00027.jpg

  接下来要提交到远端服务器了。
  root@ubuntu:/home/wuzhang/work/gitosis-admin# git add .
root@ubuntu:/home/wuzhang/work/gitosis-admin# git commit -m "add teamwork and user for git server"
[master 51a4055] add teamwork and user for git server
Committer: root <root@ubuntu.ubuntu-domain>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
  git config --global user.name "Your Name"
git config --global user.email you@example.com
  After doing this, you may fix the identity used for this commit with:
  git commit --amend --reset-author
  2 files changed, 9 insertions(+)
create mode 100644 keydir/b.pub
  wuzhang@ubuntu:~/work/teamwork_project$ git commit -m "initial version"
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# hello.txt
nothing added to commit but untracked files present (use "git add" to track)
wuzhang@ubuntu:~/work/teamwork_project$
添加远端服务器的地址:
root@ubuntu:/home/wuzhang/work/teamwork_project# git remote add origin gitadmin@10.255.13.253:/home/gitadmin/teamwork.git
  注:如果上一步出现问题:(具体点击)
  提示出错信息:fatal: remote origin already exists.
      解决办法如下:
      1、先输入$ git remote rm origin
      2、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!
  
root@ubuntu:/home/wuzhang/work/teamwork_project# git remote -v
origin gitadmin@10.255.13.253:/home/gitadmin/teamwork.git (fetch)
origin gitadmin@10.255.13.253:/home/gitadmin/teamwork.git (push)
root@ubuntu:/home/wuzhang/work/teamwork_project#
提交文件到服务器:
lroot@ubuntu:/home/wuzhang/work/gitosis-admin# git remote -v
origin gitadmin@10.255.13.253:teamwork.git (fetch)
origin gitadmin@10.255.13.253:teamwork.git (push)
root@ubuntu:/home/wuzhang/work/gitosis-admin# git push -f origin master
gitadmin@10.255.13.253's password:
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (9/9), 1.12 KiB, done.
Total 9 (delta 1), reused 4 (delta 0)
To gitadmin@10.255.13.253:teamwork.git
* [new branch] master -> master
root@ubuntu:/home/wuzhang/work/gitosis-admin#
  换个用户,测试下是否可以从服务器克隆刚提交的文件?
切换到另一账户进行git clone测试:
wuzhang@ubuntu:~sugit密码:git@ubuntu:/home/wuzhang
  查看服务器的地址:
git@ubuntu:/home/wuzhang/work/teamwork_project$ git remote -v
origin gitadmin@10.255.13.253:teamwork.git (fetch)
origin gitadmin@10.255.13.253:teamwork.git (push)
  创建个文件夹,用于存放克隆从服务器获取的文件
  git@ubuntu:/home/wuzhang/work/teamwork_projectcd/gitClone/git@ubuntu:/gitClone  git clone gitadmin@10.255.13.253:teamwork.git
fatal: could not create work tree dir 'teamwork'.: ????
git@ubuntu:/gitClone$ git clone gitadmin@10.255.13.253:teamwork.git
  出错了,不要怕,应该是权限的问题,我们再试下!
  PS:因为git@ubuntu是普通用户,克隆的文件在本地需要创建文件夹,所以权限不够,需要sudo
git@ubuntu:/gitClone$ sudo git clone gitadmin@10.255.13.253:/home/wuzhang/work/teamwork
Cloning into 'teamwork'...
gitadmin@10.255.13.253's password:
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 10 (delta 1), reused 10 (delta 1)
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (1/1), done.
git@ubuntu:/gitClonelsteamworkgit@ubuntu:/gitClone  cd teamwork/
  显示一下克隆的文件:
git@ubuntu:/gitClone/teamwork$ ls
1 1.c 1.c~ hello hello.txt
  执行下我编译过得1.c文件
  git@ubuntu:/gitClone/teamwork$ ./1
Git Server is OK!
git@ubuntu:/gitClone/teamwork$
克隆完成,服务器环境搭建完成!
  可以在windows下直接克隆,然后试试!

运维网声明 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-384347-1-1.html 上篇帖子: Ubuntu 14.04下安装GitLab指南 下篇帖子: Docker安装Gitlab
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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