CentOS6.7安装gitlab
GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
前期规划:
1).操作系统Centos 6.7 Minimal
#Distribution : CentOS 6.7 Minimal
#GitLab version : 6.3.1
#GitLab-shell : 1.8.0
#Ruby version : ruby 2.0.0p353(2013-11-22 revision 43784) [x86_64-linux]
#Gem version : 2.0.14
#Redis-server : Redis server version2.4.10 (00000000:0)
#Web Server : Nginx/1.0.15
#Database : MariaDB 10.0.21
2).项目地址:https://github.com/gitlabhq/gitlabhq
参考文档:http://doc.gitlab.com/ce/install/installation.html#clone-the-source
https://github.com/lubia/gitlab-recipes/tree/master/install/centos
3).主机名称及IP地址(测试主机IP地址)
Moxiaokai 192.168.3.251
4).同步主机系统时间
1
|
#/usr/sbin/ntpdate -us stdtime.gov.hk ntp.sjtu.edu.cn;hwclock -w;
|
第一,配置yum源及安装依赖包:
1).安装epel源
1
|
#yum-y install epel-release -y
|
2.安装puias源
1
2
3
4
5
6
7
8
9
10
|
#vi/etc/yum.repos.d/puias-computational.repo
[PUIAS_6_computational]
name=PUIAScomputational Base $releasever - $basearch
mirrorlist=http://puias.math.ias.edu/data/puias/computational/$releasever/$basearch/mirrorlist
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias
#cd/etc/pki/rpm-gpg/
#wget -q http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias
#rpm --import RPM-GPG-KEY-puias
#yum repolist
|
第二,安装依赖包:
1).基础依赖包
1
|
#yum-y install gdbm-devel glibc-devel tcl-devel openssl-devel curl-develexpat-devel db4-devel byacc libyaml libyaml-devel libffi libffi-devel libxml2libxml2-devel libxslt libxslt-devel libicu libicu-devel sudo wget patchlogwatch logrotate perl-Time-HiRes cmake libcom_err-devel.i686libcom_err-devel.x86_64 nodejs python-docutils
|
2).升级系统所有软件包到最新
1
|
#yum-y update
|
3).安装postfix邮件服务器
1
|
#yuminstall postfix
|
第三,安装git:
1).移除低版本git
1
|
#yumremove git -y
|
备注:默认centos的git版本是1.7.10,必须删除后,再下载源码进行安装
2).安装git的依赖包
1
|
#yum-y install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-developenssl-devel
|
3).编译安装git
1
2
3
|
#mkdir/tmp/git && cd /tmp/git
#curl--progress https://www.kernel.org/pub/software/scm/git/git-2.5.1.tar.gz | tarxz
#cd git-2.5.1/ && ./configure --prefix=prefix=/usr/local/git && make&& make install
|
4).配置换变量
1
2
|
#echo "export PATH=/usr/local/git/bin:\$PATH" >> /etc/profile
#source /etc/profile
|
5).验证程序
1
2
|
# which git
#git--version
|
第四,安装ruby
1).移除低版本ruby
ruby版本需要2.0+,所以先卸载系统已存在的
1
|
#yumremove ruby
|
#如果是源码安装的
1
|
cd(your-ruby-source-path) && make uninstall
|
2).编译安装ruby
1
2
3
|
#mkdir/tmp/ruby && cd /tmp/ruby
#curl--progress https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz |tar xz
#cdruby-2.0.0-p353 && ./configure --prefix=/usr/local/ruby--disable-install-rdoc && make && make install
|
3).配置换变量
1
2
|
#echo "export PATH=/usr/local/ruby/bin:\$PATH" >> /etc/profile
#source /etc/profile
|
4).验证程序
1
2
|
#which ruby
#ruby --version
|
5).安装bundler
删除官方源使用淘宝的镜像
1
2
|
#gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
#gem sources -l
|
1
|
#gem install bundler --no-rdoc
|
1
|
# gem install charlock_holmes
|
第五,创建系统用户(git)
1
|
#adduser --system --shell /bin/bash--comment 'GitLab' --create-home --home-dir /home/git/ git
|
第六,配置MariaDB
创建数据库用户并授权
1
2
3
4
|
#mysql-u root -p
mysql> create database gitlabhq_production character set utf8;
mysql> grant all privileges on gitlabhq_production.*to git@localhost identified by '123456';
mysql>flushprivileges;
|
7,配置redis
1).安装redis
1
|
#yuminstall redis
|
验证redis版本:
2).修改redis.conf配置文件
(1).备份配置文件
1
|
# cp /etc/redis.conf /etc/redis.conf.bak
|
(2).修改/tmp/redis.sock为/var/run/redis/redis.sock
(3).修改/var/var/run/redis/redis.sock的权限为755
1
|
# chmod -R 755 /var/run/redis/
|
3).配置redis自启动
1
|
#chkconfig --level 35 redis on
|
4).启动redis并验证
1
2
|
#/etc/init.d/redis restart
#/etc/init.d/redis status
|
5).附加git到redis组
1
|
#usermod-aG redis git
|
第八,安装gitlab
1).取gitlab源代码:
1
2
|
# su - git
$ git clonehttps://github.com/gitlabhq/gitlabhq.git gitlab
|
检查远程分支并切换到对应分支
1
2
3
|
$ cd gitlab
$ git branch -a ##查看远程分支
$ git checkout 6-3-stable
|
1
2
|
$ cat VERSION
6.3.1
|
2).修改配置gitlab.yml
(1).修改18行(版本不同行数不同)的host为IP地址或者域名
1
2
|
$ cp config/gitlab.yml.example config/gitlab.yml
$ vi config/gitlab.yml
|
(2).修正184行(版本不同行数不同)的bin_path为正确的git命令位置
(3).检查创建目录及权限
1
2
3
4
5
|
$ mkdir -p /home/git/gitlab-satellites
$ cd /home/git/gitlab
$ mkdir -p tmp/pids
$ mkdir -p tmp/sockets
$ mkdir -p public/uploads
|
3).配置unicorn.rb文件
(1).修改配置
1
|
$ cp config/unicorn.rb.example config/unicorn.rb
|
#查看系统核心数
1
2
|
#nproc
2
|
$viconfig/unicorn.rb
注意config/unicorn.rb的内容:
working_directory"/home/git/gitlab"
listen"/home/git/gitlab/tmp/sockets/gitlab.socket"
pid"/home/git/gitlab/tmp/pids/unicorn.pid"
4).配置resque.yml文件,(redis文件)
1
|
$ cp config/resque.yml.example config/resque.yml
|
#连接redis配置,默认配置,最终修改结果如下
1
|
$ cat config/resque.yml
|
5).配置database.yml文件(MariaDB),只配置production环境
1
2
|
$ cp config/database.yml.mysql config/database.yml
$ vi config/database.yml
|
第九,安装gem
1).修改gemfile源为淘宝源
1
2
3
|
# su - git
$ cd /home/git/gitlab
$ vi Gemfile
|
修改文件Gemfile 的143行中gem"modernizr","2.6.2"为:gem"modernizr-rails","2.7.1"
修改文件Gemfile.lock 的279行modernizr(2.6.2)为modernizr-rails (2.7.1)
修改文件Gemfile.lock 的605行modernizr(= 2.6.2)为modernizr-rails (= 2.7.1)
2).执行gem安装
1
|
$ bundle install --deployment --without development test postgres aws
|
第十,安装gitlab-shell
1).安装gitlab-shell
1
2
3
4
|
$ su - git
$ git clone https://github.com/gitlabhq/gitlab-shell.git gitlab-shell
$ cd gitlab-shell
$ git checkout v1.8.0
|
2).配置config.yml
1
2
|
$ cp config.yml.example config.yml
$ vi config.yml
|
在正式环境中将gitlan_url换成gitbal访问域名
3).执行安装命令,创建对应目录和文件
1
|
$ ./bin/install
|
第十一,初始化数据库并激活高级功能
1
2
|
$ cd /home/git/gitlab
$ bundle exec rake gitlab:setup RAILS_ENV=production
|
这步完成后,会生一个默认的管理员账号:
root
5iveL!fe
十二,下载gitlab启动服务脚本
1
|
# wget -O /etc/init.d/gitlab https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn
|
1
2
3
4
5
|
# chmod+x /etc/init.d/gitlab
# chkconfig --add gitlab
# chkconfig --level 35 gitlab on
# 设置logrotate(可选操作)
# cp /home/git/gitlab/lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
|
十三,检测应用状态
1).检查基础环境
1
2
3
|
#su - git
$ cd gitlab
$ bundle exec rake gitlab:env:info RAILS_ENV=production
|
2).检查编译环境
1
|
$ bundle exec rake assets:precompile RAILS_ENV=production
|
3).查看应用详细信息
1
|
$bundle exec rake gitlab:check RAILS_ENV=production
|
4).启动服务,并验证
1
|
#service gitlab start
|
如果报错:bash: bin/web: No such file or directory和bash:bin/background_jobs: No such file or directory
解决办法为:
# vi /etc/init.d/gitlab
修改/etc/init.d/gitlab中的 bin/web 路径为 script/web
修改/etc/init.d/gitlab中的 bin/background_jobs 路径为 script/background_jobs
十四,配置web服务
(1).编辑nginx.conf文件
修改/usr/local/nginx/conf/nginx.conf (编译安装的nginx)
1.在include mine.types;这一行上添加:
passenger_root /usr/local/ruby/lib/ruby/gems/2.0.0/gems/passenger-5.0.23;
passenger_ruby /usr/local/ruby/bin/ruby;
2.修改##访问方式为:http://ip/目录名为:
server {
listen 80;
server_name localhost;
location / {
root /home/git/gitlab/public/;
index index.html index.htm;
passenger_enabled on;
}
}
(2).访问http://192.168.3.251/登录
用户名:root
密码:5iveL!fe