博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于gitlab搭建方法的几点补充
阅读量:5301 次
发布时间:2019-06-14

本文共 4185 字,大约阅读时间需要 13 分钟。

我们部门想搞一些内部开源项目,但缺少一个支撑平台。都知道GitHub很火,但看了一下企业版的架构,还是有些肉痛,加上对git也存在一些争论,于是一番研究之后,决定先把gitlab/gitorious或者trac/redmine之类的都搭上,体验一下再做决定。

我是按照这篇文章来搭建的: (下面简称gitlab-debian),不过实际上却是在一台RHEL 5.6上搭建的。由于我对RedHat系列不熟(后来才看见和,要按照这两篇估计能省点力),加上RHEL的光盘和在线仓库都比较难找,另外自己还是个ruby/rails小白,还是比较痛苦的 ——不过后来在公司内找到了RHEL 5.6的ISO,然后又发现了一个第三方仓库EPEL——Extra Packages for Enterprise Linux,省了些力。

搭建过程中有不少收获,整理了一下,贴出来(注:内容主要针对这篇文章进行补充说明)。

Step 0: 一些准备工作

0.1 proxy设置

export http_proxy=http://username:password@proxy.mycompany.com:8080

如果要让http_proxy能透过sudo传递给apt-get或者gem install,需要在/etc/sudoers里面添加如下配置:

Defaults env_keep = "http_proxy ftp_proxy"

0.2 添加第三方仓库: EPEL (对于Debian/Ubuntu不用这一步)

cat > /etc/yum.repos.d/fedora-epel.repo <

然后就可以用 yum install wget curl python-pygments 来安装EPEL上的第三方包了。

0.3 建议安装GNU screen或者tmux

因为需要来回切换用户,加上http_proxy的设置问题,还是用screen/tmux方便。

Step 3: Install Gitolite

Gitolite使得多个人通过同一个ssh账号(即不用建立多个UNIX用户)访问不同的git仓库,是GitLab/Gitorious提供 git服务的关键。推荐看看它的文档: 尤其是 这一节。对英文有 障碍的话,可以看看这篇 (这篇文章详细讲述了gitolite的原理和安装/升级方法)。

这里需要关注原文里如下两步:

sudo -u gitolite cat /var/lib/gitolite/.ssh/id_rsa.pub#(now select the output in your terminal and copy it to the clipboard)sudo dpkg-reconfigure gitolite

后面这一步到底干了啥,因为 dpkg-reconfigure 是Debian/Ubuntu系的东西,RedHat上不玩这个啊。 我从Debian下载了gitolite的安装包,看了一下里面的postinst脚本,其实上面两步等价于

sudo -u gitolite -H gl-setup /var/lib/gitolite/.ssh/id_rsa.pub# or su -c "gl-setup /var/lib/gitolite/.ssh/id_rsa.pub" gitolite

注意,执行这一步时要保证gitolite没有被配置过,如果觉得有问题,就把 /var/lib/gitolite/ 目录下的内容全删掉 (包括 /var/lib/gitolite/.ssh, /var/lib/gitolite/.gitolite.rc ),然后重新开始这一步。 详情可参考gitolite的文档里 这一节。

Step 4: Install Ruby 1.9

编译ruby之前要从epel安装libyaml-devel和libffi-devel包(原文没说),否则后面的 gem install bundler 会 有问题:

yum install libyaml-devel

Step 5: Install Gitlab

5.1 通过proxy访问gitlab

在公司内, 从github取代码时只能使用http链接方式,git(ssh)和https都不行,所以在取gitlabhq本身,以及取下来后用bundler安装子模块时,都需要修改(在 bundle install --without development test --deployment 这一步之前, 需要先修改 /opt/gitlabhq/Gemfile ,将所有https换成http。如果不小心先跑了这 一步,则需要再修改 Gemfile.lock )。

另外,git不使用环境变量http_proxy的值,而是需要单独设置:

git config --global http.proxy http://username:password@proxy.foobar.com:8080git clone http://github.com/gitlabhq/gitlabhq.git

5.2 bundle install –without development test –deployment

  • 需要事先安装libicu-devel, mysql-devel, pcre-devel这几个包,这几个包在RHEL中已有
  • sqlite必须要3.6以上,否则ruby模块编译不会成功。RHEL 5.6里面的sqlite太老了,需要自己下载源代码包编译

5.3 建立数据库之前需要先安装mysql和redis(文档中没说)

  • mysql在安装光盘中有
    • mysql用这个命令设置其内root用户的密码: mysqladmin -u root password NEWPASSWD
    • config/database.yml 文件里面(仅production节)的mysql root密码必须跟上面的实际值一致
  • redis在EPEL里面: yum install redis
  • 然后 /etc/init.d/mysqld start && /etc/init.d/redis start
  • 注意: bundle exec rake db:seed_fu RAILS_ENV=production 这一步输出的是最后登录网站的管理员 用户名和密码,请记录下来

Step 6: Generate an SSL certificate

如果不是在互联网上部署,这一步并不需要。因为即使按这里所说的生成了SSL证书,也还要浏览器导入这个证书。 如果是在互联网上部署,应该到VeriSign或者StartSSL申请证书,才会被浏览器信任。可参考。

改用http(不用https)的方法:(注意,这里应该是在Step 7里面完成)

server {  listen       80;  server_name  hadoop-slave-16;  root /opt/gitlabhq/public;  location / {      #    root   html;      #    index  index.html index.htm;      passenger_enabled on;  }}

Step 7: Deploy to Phusion Passenger and Nginx

7.1 部署到nginx

  • 虽然EPEL仓库里有nginx,但不要安装,因为下面的 passenger-install-nginx-module 这一步会下载nginx并重新编译
  • nginx.conf里80端口的rewrite可以取消, "root /nowhere"也可以恢复成缺省配置
  • 如果nginx的配置存在问题,想要重启nginx的话,可以用 kill -QUIT $(pidof nginx) 的方法先停掉nginx, 修改完成后再用 /opt/nginx/sbin/nginx 启动

7.2 部署到apache

如果想将gitlab部署到www root的子目录(比如/gitlab/),可以改用Apache来做Web Server (我不知道在nginx上怎么搞,自己瞎试了一下,没搞定)。

用apache配置gitlab的具体方法, 可以参考如下内容:

  • 中 Install passenger for Apache一节
  • (Google Groups)
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.soPassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13PassengerRuby /usr/local/bin/ruby##Note: ln -s /opt/gitlabgq/public/ /var/www/html/gitlabRailsBaseURI /gitlab
# This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews

BTW: 如果部署gitlab到子目录,另外还需要修改一下 /opt/gitlabhq/app/views/layouts/admin.html.haml 里面Resque的连接,这里是 个绝对连接,需要添加上gitlab的部署前缀(即改为 /gitlab/info/resque )。

参考

转载于:https://www.cnblogs.com/bamanzi/archive/2012/07/08/notes-gitlab-on-rhel.html

你可能感兴趣的文章
跨线程调用窗体控件
查看>>
linq to sql 扩展方法
查看>>
241. Different Ways to Add Parentheses
查看>>
实验10 编写子程序 1.显示字符串
查看>>
Effect-Compiler Tool(fxc.exe)
查看>>
django中的缓存 单页面缓存,局部缓存,全站缓存 跨域问题的解决
查看>>
常见HTTP状态码(200、301、302、500等)
查看>>
Atiti.大企业病与小企业病 大公司病与小公司病
查看>>
处理器管理与进程调度
查看>>
解决随机数生成的坐标在对角线上的问题
查看>>
服务器ganglia安装
查看>>
回炉重造-基本规则之语言的理解
查看>>
查找字符串中出现最多的字符
查看>>
C++执行内存memcpy的效率测试
查看>>
Event Store框架探究
查看>>
部分STL_hanhan~
查看>>
16进制的简单运算(不同进制的计算,输入,输出)
查看>>
vue.js安装
查看>>
CUDA并行计算 | 线程模型与内存模型
查看>>
android JNI库实现reboot,recovery
查看>>