gitlab服务器搭建教程

----2016年终总结 三
大量参考以上两篇文档,整理并实际操作的总结


目录:

1.原料

2.基础环境

3.数据库安装

4.Gitlab相关安装

5.恢复及备份

1 原料

CentOS 6 kvm虚拟机一台

root用户权限

2 基础环境

以root用户登陆

2.1 更新epel源

 

 

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPG-KEY-EPEL-6
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
rpm -Uvh http://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm

 

2.2 更新epel源

 

 

yum groupinstall "Development tools"
yum install libicu-devel cmake nodejs

2.3 git

要求版本:git >=2.7.4

 

yum install git

 

2.4 ruby环境

要求版本:ruby >=2.1

 

yum remove ruby
mkdir /tmp/ruby && cd /tmp/ruby
curl -O --progress http://mirrors.ustc.edu.cn/ruby/2.1/ruby-2.1.6.tar.gz
tar xzf ruby-2.1.8.tar.gz cd ruby-2.1.8
 ./configure
make && make install
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
gem install bundler --no-ri
sudo -u git -H bundle config mirror.https://rubygems.org https://gems.ruby-china.org/

2.5 go

要求版本:未知

 

mkdir /tmp/go && cd /tmp/go
curl -O --progress http://www.golangtc.com/static/go/1.6/go1.6.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
go version

2.6 用户

 

adduser -c 'Gitlab' -s /bin/bash git
vim /etc/sudoers 						#添加git用户添加sudo权限,添加免密sudo
groupadd redis && useradd -g redis redis -s /sbin/nologin	#添加redis用户
sudo usermod -aG redis git					#git用户添加到redis组

3 数据库安装

3.1 MySQL

这里使用MySQL数据库。

要求版本:MySQL >= 5.5.14

3.1.1 安装

 

rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
yum install mysql mysql-server
service mysqld start
3.1.2 初始化

连接数据库,执行:

 

CREATE USER 'git'@'localhost' IDENTIFIED BY '$password'; #新建密码
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, CREATE TEMPORARY TABLES, DROP, INDEX, ALTER, LOCK TABLES, REFERENCES ON `gitlabhq_production`.* TO 'git'@'localhost';
quit;
echo 'max_allowed_packet=500M' >> /etc/my.cnf
service mysqld restart

3.2 Redis

要求版本:Redis >=2.8

3.2.1 安装

 

mkdir /tmp/redis && cd /tmp/redis
curl -O --progress http://download.redis.io/releases/redis-3.2.5.tar.gz
tar xzf redis-3.2.5.tar.gz
cd redis-3.2.5
make
cd src
make install
mkdir -p /etc/redis
cp redis.conf /etc/redis
3.1.2 初始化

 

cp /etc/redis/redis.conf /etc/redis/redis.conf.orig
sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf
echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf
sed -i 's/daemonize no/daemonize yes/g' /etc/redis/redis.conf
mkdir /var/run/redis
sudo chown redis:redis /var/run/redis
sudo chmod 755 /var/run/redis
if [ -d /etc/tmpfiles.d ]; then
    echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fi
curl -L http://packages.gitlab.cc/install/init-script/redis/cenots6/redis-server -o /etc/init.d/redis-server
chmod +x /etc/init.d/redis-server
service redis-server start
chkconfig redis-server on

4 Gitlab相关安装

4.1 Gitlab-CE

要求版本-无 

选择版本-8.9.6

 

su - git
cd /home/git/
sudo -u git -H git clone https://git.oschina.net/qiai365/gitlab-ce.git -b 8-9-stable gitlab
cd /home/git/gitlab/
git checkout v8.9.6
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
sudo -u git -H vim config/gitlab.yml    #修改host配置项为本机IP
sudo -u git -H vim config/secrets.yml
sudo -u git -H chmod 0600 config/secrets.yml
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 chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/
sudo -u git -H mkdir public/uploads/
sudo chmod 0700 public/uploads
sudo chmod -R u+rwX builds/
sudo chmod -R u+rwX shared/artifacts/
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H vim config/unicorn.rb 								#修改worker数量为cpu核心数
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
sudo -u git -H git config --global gc.auto 0
sudo -u git -H cp config/resque.yml.example config/resque.yml 					#如果redis的sock在其它位置,则修改
sudo -u git cp config/database.yml.mysql config/database.yml
sudo -u git -H vim config/database.yml 								#修改production环境的socket为mysql的sock文件,通常在/var/lib/mysql/mysql.sock。确认MySQL的用户、密码、库名等配置
sudo -u git -H chmod o-rwx config/database.yml

4.2 Gems

 

sudo -u git -H bundle install --deployment --without development test postgres aws kerberos -jn #n为cpu数目 提升安装速度
#如果前面严格按照步骤执行,通常是不会遇到问题的。如果有异常自行排查~~

4.3 Gitlab-shell

 

sudo -u git -H sed -i 's/https:\/\/gitlab.com\/gitlab-org\/gitlab-shell.git/https:\/\/git.oschina.net\/qiai365\/gitlab-shell.git/g' /home/git/gitlab/lib/tasks/gitlab/shell.rake
sudo -u git -H bundle exec rake gitlab:shell:install REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production	#如果安装成功,会有一系列ok提示
sudo -u git -H vim /home/git/gitlab-shell/config.yml 									#确认一下配置

4.4 Gitlab-workhorse

要求版本-无 

选择版本-0.7.5

 

cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
 cd gitlab-workhorse
sudo -u git -H git checkout v0.7.5
sudo -u git -H make

4.5 Gitlab初始化数据库

 

cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production #中途需要输入yes

4.6 安装Gitlab执行脚本

 

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
chkconfig gitlab on #设置gitlab开机启动 推荐

4.7 安装logrotate

 

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

 

4.8 检查环境配置

 

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

 

4.9 生成Gitlab前端资源

 

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

 

4.10 安装、配置Nginx

 

sudo yum install nginx
sudo vim /etc/nginx/nginx.conf #配置80端口到8080端口到proxy_pass
sudo service nginx restart

4.11 启动gitlab 

 

sudo service gitlab start

 

4.12 最后确认

 

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
#根据上述命令产生的检查结果和推荐命令,执行并再次检查

5 恢复及备份

5.1 在备份机上恢复备份

 

su - git
cd /home/git/gitlab
sudo -u git -H vim config/gitlab.yml    							#确认backup path配置,确保备份的包在该目录下存在、或移动至该位置。备份的包为$时间戳_gitlab_backup.tar
sudo -u git -H vim config/secrets.yml 
sudo vim /etc/my.cnf										#确保该配置文件添加了 max_allowed_packet=500M 配置
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=$时间戳 RAILS_ENV=production	#执行恢复备份 中途需要输入yes确认

 
 posted on 2017-01-30 01:36  TerrellChen  阅读(340)  评论(0编辑  收藏  举报