分类: 云计算
2014-07-07 15:21:33
我是按照这篇文章来搭建的: Tutorial: setting up Gitlab on Debian 6 (下面简称gitlab-debian),不过实际上却是在一台RHEL 5.6上搭建的。由于我对RedHat系列不熟(后来才看见和,要按照这两篇估计能省点力),加上RHEL的光盘和在线仓库都比较难找,另外自己还是个ruby/rails小白,还是比较痛苦的 ——不过后来在公司内找到了RHEL 5.6的ISO,然后又发现了一个第三方仓库EPEL——Extra Packages for Enterprise Linux,省了些力。
搭建过程中有不少收获,整理了一下,贴出来(注:内容主要针对Tutorial: setting up Gitlab on Debian 6这篇文章进行补充说明)。
export http_proxy=
如果要让http_proxy能透过sudo传递给apt-get或者gem install,需要在/etc/sudoers里面添加如下配置:
Defaults env_keep = "http_proxy ftp_proxy"
cat > /etc/yum.repos.d/fedora-epel.repo <[fedora-epel] name=Extra Packages for Enterprise Linux $releasever - $basearch baseurl= enabled=1 gpgcheck=0 gpgkey= EOF yum check-update
然后就可以用 yum install wget curl python-pygments 来安装EPEL上的第三方包了。
因为需要来回切换用户,加上http_proxy的设置问题,还是用screen/tmux方便。
Gitolite使得多个人通过同一个ssh账号(即不用建立多个UNIX用户)访问不同的git仓库,是GitLab/Gitorious提供 git服务的关键。推荐看看它的文档: gitolite documentation 尤其是 这一节。对英文有 障碍的话,可以看看这篇 (这篇文章详细讲述了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的文档里 这一节。
编译ruby之前要从epel安装libyaml-devel和libffi-devel包(原文没说),否则后面的 gem install bundler 会 有问题:
yum install libyaml-devel
在公司内, 从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 git clone
如果不是在互联网上部署,这一步并不需要。因为即使按这里所说的生成了SSL证书,也还要浏览器导入这个证书。 如果是在互联网上部署,应该到VeriSign或者StartSSL申请证书,才会被浏览器信任。可参考Nginx + https + 免费SSL证书配置指南。
改用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; } }
如果想将gitlab部署到www root的子目录(比如/gitlab/),可以改用Apache来做Web Server (我不知道在nginx上怎么搞,自己瞎试了一下,没搞定)。
用apache配置gitlab的具体方法, 可以参考如下内容:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.13 PassengerRuby /usr/local/bin/ruby ##Note: ln -s /opt/gitlabgq/public/ /var/www/html/gitlab RailsBaseURI /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 )。