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

[经验分享] Git服务器在Ubuntu中的搭建

[复制链接]
发表于 2018-9-18 12:38:19 | 显示全部楼层 |阅读模式
  公司最近准备启用git来管理公司项目,在CTO张头的带领下,历经挫折,终于完成了git服务器的配置工作。在使用Git之前,大家首先要明确几个概 念:git服务器、git客户端和git服务器管理员。本文中使用ubuntu当作git服务器,pcA和pcB分别作为服务器管理员和git客户端。通 常,git服务器上需要安装OpenSSH Server、Git、Gitosis和Apache2(如果想使用Gitweb的话)。
  本文将主要介绍git服务端和管理员相关的一些配置方法,客户端及管理员的git操作方法将在另一篇文章中作详细介绍。
  (一)   Git服务端
  1.请使用apt-get update和apt-get upgrade命令更新当前系统,如果不更新,在后面安装一些程序的时候可能会出现某些依赖包没安装的现象。
  2.安装OpenSSH Server( ubuntu) (当前用户为wirror800)
  首先,使用ps -e|grep ssh命令,检查本机上是否已经运行ssh服务。如果没有,继续;否则,跳过此步骤。
  执行命令:
  sudo apt-get install openssh-server
  3.修改ssh服务端配置文件 /etc/ssh/sshd_config (当前用户为wirror800)
  Port 22 # 修改成你想要的登陆端口,如2222
  PermitRootLogin no # 禁止root用户登陆
  StrictModes yes # 检查密钥的用户和权限是否正确,默认打开的
  RSAAuthentication yes # 启用 RSA 认证
  PubkeyAuthentication yes # 启用公钥认证
  PasswordAuthentication no # 禁止密码认证,默认是打开的
  ServerKeyBits 1024 # 修改后变为此状态,将ServerKey强度改为1024比特
  PermitEmptyPasswords no # 修改后变为此状态,禁止空密码进行登录
  修改完成后,重启ssh服务:
  sudo /etc/init.d/ssh restart

  注意:至此,服务端SSH的操作就已经结束了。网上说的“>
  Server端的~/.ssh/目录下,改名为authorized_keys ”其实都是不准确的。id_rsa是使用 ssh-keygen生成的rsa私钥,>  是同时生成的公钥,服务器端通信使用的秘钥可以应该由服务器管理员来创建和管理,如果你想把当前用户wirror800作为管理
  员也是可以的,相关管理员的操作见本文第二部分。不推荐在ubuntu服务器端建立管理员帐号。
  建议大家参考一下OpenSSH的相关内容:http://www.freebsd.org/doc/zh_CN/books/handbook/openssh.html
  4.安装git (当前用户为wirror800)
  sudo apt-get install git-core
  安装git过程中可能会遇到一些依赖包下载失败的情况,主要是由于ubuntu的中文站点访问的问题,我们可以到其英文站点
  上下载相关文件并进行手动安装。给大家一个链接地址:
  http://archive.ubuntu.com/ubuntu/pool/main/
  5.安装gitosis(为什么要使用gitosis是大家首先需要明确的问题) (当前用户为wirror800)
  (1)在你喜欢的位置下,新建一个文件夹,用来存放下载的gitosis文件,如
  mkdir ~/gitosis_setup
  (2)安装gitosis
  cd ~/ gitosis_setup
  git clone git://eagain.net/gitosis
  cd gitosis
  sudo python setup.py install
  注意:如果python setup.py install失败,需要安装python-setuptools.py
  sudo apt-get install python-setuptools.py
  6. 为gitosis创建系统用户 (当前用户为wirror800)
  sudo adduser --system --shell /bin/sh --gecos 'git SCM user' --group --disabled-password --home /home/git  git
  这种方法是网上比较常见的方法,创建的是一个禁用密码的git用户,但在使用su命令切换git用户的时候,空密码老是
  验证失败,大家可以使用下面的方法来创建git用户:
  sudo useradd -m git
  sudo password git
  7. 运行gitosis(当前用户为wirror800)
  (1)将管理员生成的公钥上传或拷贝到服务器上。这里的公钥需要在git服务器管理员下使用ssh-keygen -t rsa命令来创建,
  网上流传的方法是scp /your pub_path/id_rsa.pub ${SERVER_IP}:id_rsa.pub。我们这里使用的是直接U盘拷贝的方法。
  (2)初始化gitosis
  进入到拷贝过来的id_rsa.pub所在目录:cd /tmp

  sudo chmod 777>
  sudo -H -u git gitosis-init   此时,会在/home/git目录下生成一些目录,如果想要别人能够clone gitosis-admin.git,需要执行以下操作:
  sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
  至此,gitosis的安装工作已完成,其相关配置可以有管理员来操作,然后再提交到服务器上。以下是关于gitweb的安装配置,
  不需要的同学,请跳过下面的8~10步。
  8.安装gitweb (当前用户为wirror800)
  sudo apt-get install gitweb
  9.安装apache2
  sudo apt-get install apache2
  10.配置gitweb (当前用户为wirror800)
  (1)默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:
  cd /var/ www/
  sudo ln -s / usr/ share/ gitweb/* .
  (注意后面的点)
  (2)修改配置:
  sudo vi /etc/ gitweb.conf
  将 $projectroot 改为gitosis-admin.git所在目录: /home/git/repositories
  (3)修改 /home/git/repositories权限,默认情况下,gitosis将 repositories权限设置为不可读的
  sudo chmod 777 -R /home/git/repositories
  11.编辑apache2配置文件,建立web站点 (当前用户为wirror800,默认情况下可以忽略此步骤)
  (1) 编辑apache2配置文件
  ubuntu中默认的web目录是/var/www,默认的cgi目录是 /usr/lib/cgi-bin/,安装完成gitweb后,gitweb的gitweb.cgi会自动放置
  到该目录下。如果你的cgi路径不是默认的/usr/lib/cgi-bin/,需要将gitweb安装在/usr/lib/cgi-bin中的gitweb.cgi复制到原来配置
  的cgi-bin路径,并修改apache的配置文件/etc/apache2/apache.conf:
  SetEnv  GITWEB_CONFIG   /etc/gitweb.conf
  gitweb.conf配置文件形如:(可自行修改,这里不做详细介绍)
  
  Options FollowSymlinks ExecCGI
  Allow from all
  AllowOverride all
  Order allow,deny
  
  SetHandler cgi-script
  
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
  
  (2)重新启动apache:sudo /etc/init.d/apache2 restart,访问http://localhost/cgi-bin/gitweb.cgi

  (二)   Git 管理员(git bash下运行)
  1.安装msysgit,
  下载地址:http://code.google.com/p/msysgit/downloads/list
  缺省安装。
  2.生成服务器管理员公钥。
  执行命令ssh-keygen -t rsa,操作时刻参照第一部分第7步,用于提供给服务器端初始化gitosis。
  3.从服务器 克隆gitosis-admin.git
  首先选定目录,如G盘:cd /g/
  然后,新建一个目录mkdir gitproject
  git clone git@YOUR_SERVER:gitosis-admin.git
  ( YOUR_SERVER可以是你的服务器名称或者ip,我这里的ubuntu的ip为192.168.1.102 )
  4. 编辑 gitosis.conf
  cd gitosis-admin
  你将看到以下文件gitosis.conf和keydir/,gitosis.conf是gitosis的配置文件,用于配置用户和权限,keydir/是所有组成员的
  公钥。
  vi gitosis.conf, 打开gitosis.conf文件,内容为:
  [group gitosis-admin]
  writable = gitosis-admin
  members =  Administrator@LILIN
  这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。
  把内容修改为:
  [gitosis]
  gitweb = yes
  [group gitosis-admin]
  writable = gitosis-admin
  members = Administrator@LILIN wirror800@192.168.1.102
  [group apps ]
  writable = apps
  members = Administrator@LILIN wirror800@192.168.1.102
  其中 gitweb = yes表示启用对gitweb的支持。 这里定义了一个叫apps 的组,授予Administrator@LILIN和wirror800@192.168.1.102
  两个用户写“apps ”这个repo的权限
  然后push到服务端后,服务器端就立刻生效。
  git commit -a -m “created a new repository”
  git push
  这样就 更新了服务端的权限。
  5.创建一个app的repo
  mkdir apps
  cd apps
  git init
  6.创建、编辑 .gitignore , 用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下:
  .DS_Store
  log/*.log
  tmp/**/*
  config/database.yml
  db/*.sqlite3
  7.编辑 .git/description 内容, 加上apps 的说明
  8. 提交代码
  git remote add origin git@YOUR_SERVER:apps.git
  git add .
  git commit -am "imitial import"
  git push origin master:refs/heads/master
  9.增加成员的公钥到系统中
  cd ../gitosis-admin
  cp member_1.pub keydir/
  cp member_2.pub keydir/ git
  add keydir/member_1.pub keydir/member_2.pub
  修改gitosis.conf,并提交
  [group apps]
  - members = wirror800
  + members = wirror800 member_1 member_2
  writable = apps
  git commit -a -m "Granted new members commit rights to apps"
  git push
  10. 其它成员获取apps的代码
  git clone git@YOUR_SERVER:apps.git
  在windows下安装git服务器也是可以的,我们开始尝试使用Cygwin来操作,但在使用gitweb的时候遇到困难。git毕竟诞生于
  linux,还是建议大家使用linux来搭建git服务器吧。Mr. Zhang也提供了一个可以在windows下安装git服务器的方法,链接地址奉献
  给大家:http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/ 。再次感谢CTO Mr. Zhang 这几天
  执着的奉献精神,让我受益匪浅。


运维网声明 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-589832-1-1.html 上篇帖子: git是航空母舰:ScrumBoard 下篇帖子: 解决 fprintd-0.1-19.git04fd09cfa.el6 crash问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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