由于公司需要搭建一个代码服务器,我当然选择了Git啦,不过如果只是安装Git的话,缺少了web界面去管理这个Git代码库,所以选择了Gitlab。不过Gitlab的官方安装指引只有ubuntu。我在ubuntu安装的时候没有遇到任何问题。不过在redhat6上安装就遇到较多的问题。所以在此记录一下,方便后人。讲真,为了安装这个代码服务器前前后后折腾了差不多成个星期,从成本效益来说,还不如去使用第三方的服务,例如,githut、bitbucket,或者国内的一些类似的服务商。还免维护。不过老板最终决定自己搭建。老细永远是对的。那就只能做。
由于文章我从markdown编辑器Mou copy过来的,可能在wordpress排版有点问题,大家将就看吧。
在github上找到一篇装教程 https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos。
在安装前先看看注意事项。
注意事项:
- 由于redhat上没有设置yum源,所以除了说明文档上添加那些源之外,需要自己另外添加系统更新的源,这里使用163的CentOS6的镜像源。
# cd /etc/yum.repos.d/
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
# vi CentOS6-Base-163.repo
编辑文件,把文件里面的$releasever全部替换为版本号,即6 最后保存。官方说明并没有说明需要修改$releasever,但是不修改就是不行,可能redhat和CentOS还是有区别吧。
- 由于源的nginx的版本好旧,会出问题,所以添加nginx源,更新到最新版本。目前使用的版本
nginx version: nginx/1.4.6
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/6/$basearch/
gpgcheck=0
enabled=1
- 有可能出现安装libffi-devel包有问题,如果有问题请安装下边的源
#Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
#URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
#baseurl = http://apt.sw.be/redhat/el5/en/$basearch/dag
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
- 由于redhat的libz.so.1的库有问题,导致运行git会报错,需要更新到zlib-1.2.5.tar.gz包,执行去google搜索下载。根据下边操作更新到最新的包。
tar zxvf zlib-1.2.5.tar.gz
cd zlib-1.2.5
./configure
make
make install
# 替换成最新版本
cp /usr/local/lib/libz.so.1.2.5 /lib64/
rm -f libz.so.1
cp -l libz.so.1.2.5 libz.so.1
- 安装过程出下边的错误,不过没有处理,应该是说明文档安装失败。
Transaction Check Error:
file /usr/share/man/man7/stappaths.7.gz from install of systemtap-devel-2.3-4.el6_5.x86_64 conflicts with file from package systemtap-server-1.4-6.el6.x86_64
file /usr/share/man/man7/stappaths.7.gz from install of systemtap-client-2.3-4.el6_5.x86_64 conflicts with file from package systemtap-server-1.4-6.el6.x86_64
file /usr/share/man/man7/stappaths.7.gz from install of systemtap-runtime-2.3-4.el6_5.x86_64 conflicts with file from package systemtap-server-1.4-6.el6.x86_64
- 最好Nginx的配置,如果不使用https的话按照如下配置
server {
listen *:80 default_server;
server_name gitlab.donview;
server_tokens off;
root /home/git/gitlab/public;
# Set value of client_max_body_size to at least the value of git.max_size in gitlab.yml 这个需要在gitlab.yml上做相应修改。
client_max_body_size 500m;
# individual nginx logs for this gitlab vhost
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
location / {
# serve static files from defined root folder;.
# @gitlab is a named location for the upstream fallback, see below
try_files $uri $uri/index.html $uri.html @gitlab;
}
# if a file, which is not found in the root folder is requested,
# then the proxy pass the request to the upsteam (gitlab unicorn)
location @gitlab {
proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
proxy_redirect off;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Forwarded-Ssl off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://gitlab;
}
}
- 我们安装的时候是选择了mysql和nginx。
- 如果需要安装https的话,配置证书步骤。
$ cd /etc/nginx/sites-available
$ su
$ openssl genrsa -des3 -out server.key 2048
$ openssl req -new -key server.key -out server.csr
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- 由于git会验证https的证书,自签证书会有问题。需要客户端做设置。参考stackouverflow的问题。
git config http.sslVerify false
或
git -c http.sslVerify=false clone https://domain.com/path/to/git
2014年11月26日更新:其实直接安装在主机上不是一个好方法,应该使用docker进行安装,或者直接下载一些制作好的docker.请参考这个网站http://www.damagehead.com/docker-gitlab/
《在redhat6上安装gitlab》有一个想法