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

[经验分享] ubuntu 使用gitosis和gitweb安装git服务器

[复制链接]

尚未签到

发表于 2016-4-27 09:09:38 | 显示全部楼层 |阅读模式
  【转载请注明原文链接:http://kowen.iyunv.com/blog/2101784】
  
  经过多天的摸索,终于在ubuntu上配置完成了gitosis,写下来分享:
  
  一、安装环境和软件
  ubuntu 14.04 server
  openssh-server
  git-core
  gitosis
  git
  
  二、安装准备
  1.服务器安装openssh
  sudo apt-get install openssh-server openssh-client
  2.在一台管理客户机上生成ssh公钥【客户机执行】
  ssh-keygen -t rsa
  生成的公钥在/home/YourUserName/.ssh/里面,默认名字是id_rsa.pub。
  
  
  三、安装git服务
  sudo apt-get install git-core 
  
  四、安装gitosis
  1.下载gitosis到/tmp
  cd /tmp
  git clone https://github.com/tv42/gitosis.git
  2.安装必备包
  sudo apt-get install python-setuptools
  3.安装gitosis
  cd /tmp/gitosis
  python setup.py install
  
  五、配置gitosis
  1.创建用户git【服务器执行】
  sudo adduser \
  --system \
  --shell /bin/sh \
  --gecos 'git version control' \
  --group \
  --disabled-password \
  --home /git \
  git
  
  2.把管理客户机生成的公钥上传到服务器上【客户机执行】
  scp /~.ssh/id_rsa.pub git@<server>:/tmp
  或者用其他方式上传到服务器也行
  
  3.初始化配置【服务器执行】
  sudo -H -u git gitosis-init </tmp/id_rsa.pub
  以上命令有三个作用:
  a)建立一个目录“~/repositories”,用来存储所有git仓库;
  b)生成一个指向实际配置文件的软链接“~/.gitosis.conf”;
  c)把公钥文件id_rsa.pub添加到 ~/.ssh/authorized_keys。
  执行后提示:
  Initialized empty Git repository in /git/repositories/gitosis-admin.git/
  Reinitialized existing Git repository in /git/repositories/gitosis-admin.git/
  
  执行命令“l /git -all”可以看到配置产生的结果:
  total 20
  drwxr-xr-x  5 git  git  4096 Aug  7 15:33 ./
  drwxr-xr-x 23 root root 4096 Aug  7 15:07 ../
  lrwxrwxrwx  1 git  git    48 Aug  7 15:33 .gitosis.conf -> /git/repositories/gitosis-admin.git/gitosis.conf
  drwx------  2 git  git  4096 Aug  7 15:33 .ssh/
  drwxr-xr-x  2 git  git  4096 Aug  7 15:33 gitosis/
  drwxr-xr-x  3 git  git  4096 Aug  7 15:33 repositories/
  
  4.修改配置文件
  有趣的是,gitosis的配置文件本身就是一个git仓库,gitosis的配置修改就是通过git实现的,先clone下来修改,再push上去。只要push上去,gitosis会立刻监视到配置文件的修改并应用。
  在管理客户端clone管理库到本地:git clone git@<SERVER>:gitosis-admin.git
  clone下来以后,库里有一个文件gitosis.conf(配置文件);还有一个文件夹keydir,里面存储的是用户的公钥文件,当前里面就有在管理客户端上生成的私钥(用户名格式是"email地址.pub",例如“jone@example.com.pub”)。
  
  六、添加用户和仓库
  添加新仓库也非常简单,假设你要添加一个叫jone@example.com的用户,再创建一个仓库叫myproject,并赋给jone修改权限。
  1.首先ssh-keygen生成jone的公钥和私钥;
  2.把jone公钥拷贝到本地gitosis-admin库的keydir里面;
  3.编辑本地gitosis-admin库里的gitosis.conf,添加:
  [group myteam]
  members = jone@example.com
  writable = myproject
  4.commit修改,push到服务器生效。
  5.使用jone初始化仓库并push到服务器【在jone私钥计算机上操作】
  mkdir myproject
  cd mypyroject
  git init
  git remote add myserver git@MYSERVER:myproject.git
  # do some work, git add and commit files
  git push myserver master:refs/heads/master
  
  【更复杂的配置文件的样例见:https://github.com/tv42/gitosis/blob/master/example.conf】
  
  七.设置gitweb
  1.安装gitweb
  sudo apt-get install gitweb
  安装后,配置文件是/etc/gitweb.conf,其他文件在/usr/share/gitweb/。
  
  2.链接/var/www到gitweb的网页目录
  $ cd /var/www/
  $ sudo ln -s /usr/share/gitweb/static/
  
  3.修改gitweb配置文件sudo vi /etc/gitweb.conf
  
  #配置仓库所在目录
  $projectroot = "/git/repositories";
  #配置project list
  $projects_list = "/git/gitosis/projects.list";
  #以下配置网页静态文件,注意"/"
  @stylesheets = ("/static/gitweb.css");
  $javascript = "/static/gitweb.js";
  $logo = "/static/git-logo.png";
  $favicon = "/static/git-favicon.png";
  
  
  4.安装lighttpd
  sudo apt-get install lighttpd
  
  5.修改lighttpd配置文件 sudo vi /etc/lighttpd.conf
  
  server.modules  += (
  "mod_cgi",
  "mod_setenv",
  "mod_redirect",
  #保证以上三个module都有
  )
  
  url.redirect += (
  "^/gitweb$" => "http://YOURSERVER/gitweb/",
  )
  alias.url += (
  "/gitweb/" => "/usr/lib/cgi-bin/gitweb.cgi",
  "/gitweb.css" => "/var/www/static/gitweb.css",
  "/git-logo.png" => "/var/www/static/git-logo.png",
  "/git-favicon.png" => "/var/www/static/git-favicon.png",
  )
  
  $HTTP["url"] =~ "^/gitweb/" {
  setenv.add-environment = (
  "GITWEB_CONFIG" => "/etc/gitweb.conf",
  )
  cgi.assign = ( "" => "" )
  }
  
  6.配置要显示的仓库
  编辑配置文件:sudo vi /git/.gitosis.conf
  [repo myproject]
  gitweb = yes
  description = example repo
  owner = yourname
  daemon = yes
  
  [gitweb]
  
  7.重启lighttpd服务 
  sudo service lighttpd reload
  
  8.打开浏览器,输入http://YOURSERVER/gitweb,可以显示首页,但是提示404错误(找不到仓库);
  最后找到原因是/git/repositories/myproject.git目录权限的问题,只有git用户有读写权限,所以lighttpd服务无法读取这个目录,这里设置777权限给它:“sudo chmod -R 777 /git/repositories/myproject.git”,刷新网页后ok。
  
  八.总结
  ubuntu安装git主要用到了ssh-keygen、git-core、gitosis、gitweb和lighttpd。
  gitosis的配置文件是{git_user_home}/.gitosis.conf;
  gitweb的配置文件是/etc/gitweb.conf
  lighttpd的配置文件在/etc/lighttpd/里面。
  

运维网声明 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-209373-1-1.html 上篇帖子: Git版本管理器 下篇帖子: Ubuntu上使用octopress+github建立个人博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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