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确认