• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

GitLab搭建(续) 

然而,在我真正开始搭建Gitlab的时候,我才发现了一个问题,那就是官方提供的Omnibus package installation默认使用的数据库是PostgreSQL,而redis默认采用了soket通信。而我并不想这么做……

所以,比较适合自己的安装方式还是从源码编译安装吧!

更新依赖包

$sudo apt-get update -y
$sudo apt-get upgrade -y

$sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs

$sudo apt-get install -y git-core
# 确保git版本 > 1.7.10
$git --version

# 安装邮件服务器,gitlab需要发送邮件
$sudo apt-get install -y postfix

安装Ruby

$mkdir /tmp/ruby && cd /tmp/ruby
$curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz | tar xz
$cd ruby-2.1.6
$./configure --disable-install-rdoc
$make
$sudo make install

接着安装Bundler Gem:

$sudo gem install bundler --no-ri --no-rdoc

添加用户Git

$sudo adduser --disabled-login --gecos 'GitLab' git

安装数据库

在这里,我并没有采用官方推荐的PostgreSQL,因为自己熟悉的还是MySQL,所以就安装了MySQL。

# 确保MySQL版本 > 5.5.14
$mysql --version
$mysql -uroot -p

# 添加MySQL用户
mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY 'xxxxxxxx';
mysql> SET storage_engine=INNODB;
mysql> CREATE DATABASE IF NOT EXISTS gitlabhq_production DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON gitlabhq_production.* TO 'git'@'localhost';
mysql> \q

# 测试使用git用户能否正常连接到数据库
$sudo -u git -H mysql -u git -p -D gitlabhq_production

安装Redis

# Ubuntu下安装redis后默认以daemon运行,同时默认为TCP连接
$sudo apt-get install redis-server
$sudo redis-server

 安装GitLab

从官方源克隆项目源码,这里有点坑,服务器上被墙了,所以只要在本地git clone一份后再传到服务器上去

$cd /home/git
$sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-12-stable gitlab

然后就是配置:

$cd /home/git/gitlab
$sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# 根据gitlab.yml里面的提示修改
$sudo -u git -H vim config/gitlab.yml

# 修改目录权限,保证gitlab可以写入以下目录
$sudo chown -R git log/
$sudo chown -R git tmp/
$sudo chmod -R u+rwX,go-w log/
$sudo chmod -R u+rwX tmp/
$sudo -u git -H mkdir /home/git/gitlab-satellites
$sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites
$sudo chmod -R u+rwX tmp/pids/
$sudo chmod -R u+rwX tmp/sockets/
$sudo chmod -R u+rwX public/uploads

# 查看自己服务器的内核数,修改Unicorn workers数量
$nproc
$sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
$sudo -u git -H vim config/unicorn.rb
$sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
$sudo -u git -H git config --global core.autocrlf input

# 配置Redis,这里默认为unix,需要修改为 production: redis://localhost:6379
$sudo -u git -H cp config/resque.yml.example config/resque.yml
$sudo -u git -H vim config/resque.yml

# 配置数据库
$sudo -u git cp config/database.yml.mysql config/database.yml
$sudo -u git -H vim config/database.yml
$sudo -u git -H chmod o-rwx config/database.yml

继续安装

# 安装Gems
# 安装过程中,如果遇到 Ruby 源被墙了,可以将ruby源修改为 http://ruby.taobao.org
$sudo -u git -H bundle install --deployment --without development test postgres aws kerberos

# 安装GitLab Shell
$sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.3] REDIS_URL=redis://localhost:6379 RAILS_ENV=production
$sudo -u git -H vim /home/git/gitlab-shell/config.yml

#初始化数据库
$sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

# 配置系统脚本
$sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab

# 配置开机自动启动
$sudo update-rc.d gitlab defaults 21

# 配置Logrotate
$sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

# 检测配置状态
$sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

# 编译
$sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

# 启动服务
$sudo /etc/init.d/gitlab restart

Nginx配置

# 没有安装nginx的话就安装一个
$sudo apt-get install -y nginx

# 配置
$sudo cp lib/support/nginx/gitlab /etc/nginx/sites-enabled/gitlab
$sudo vim /etc/nginx/site-enabled/gitlab

# 然后测试一下配置有没有问题,没有的话就直接重新载入配置文件
$sudo nginx -t
$sudo nginx -s reload

最后

再一次检查一下有没有什么问题

$sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

没问题,那就大功告成了!默认装完的账号密码是:root,5iveL!fe

然后可以通过下面的命令来启动和停止GitLab:

$sudo service gitlab start
$sudo service gitlab stop

参考:

https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md
https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/database_mysql.md

码字很辛苦,转载请注明来自ChenJiehua《GitLab搭建(续)》

评论