gitlab升级和迁移

由于近期公司gitlab服务器老是卡顿和出现其他问题,然后也很久没有升级过了,现在版本还是8.10.5,而官网最新版本已经是11.2了。另一个原因是gitlab所在的这台服务器快到期了,想换一台配置更好些的服务器,故对此进行升级和迁移。

  升级思路:先在新服务器上安装一个和原版本相同的gitlab,然后备份原版本gitlab数据,备份完在新服务器恢复,恢复完在进行升级。

  本文参照:https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos

安装环境:

      操作系统CentOS  6.10

#Distribution     : CentOS  6.10

#GitLab version    : 8.10.5

#GitLab-shell      : 3.2.1

#Ruby version      : ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]

#Gem version       : 2.4.5

#Redis-server      : Redis server version3.2.11

#Web Server        : Nginx/1.10.2

#Database          : mysql 5.7

1、添加epel库

#wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://getfedora.org/static/0608B895.txt
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6验证密钥是否已成功安装:#rpm -qa gpg*#gpg-pubkey-0608b895-4bd22942

2、安装epel-release-6-8.noarch包,它将在您的系统上启用EPEL存储库:(这里虽然我们是6.10的系统,但装这个也能用)

#rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

验证是否已启用EPEL和remi-safe存储库:

如果看不到它们,请使用下面的命令(从yum-utils包中)启用它们:

#yum-config-manager --enable epel --enable remi-safe

3、安装gitlab所需的工具:

#yum -y update
#yum -y groupinstall ‘Development Tools‘
#yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64 nodejs

# For reStructuredText markup language support, install required package:
#yum -y install python-docutils

RHEL备注

如果未安装某些软件包(例如gdbm-devel,libffi-devel和libicu-devel),请将rhel6可选软件包repo添加到服务器以获取这些软件包:

#yum-config-manager --enable rhel-6-server-optional-rpms

4、安装邮件服务器:

#yum -y install postfix

#chkconfig postfix on

5、安装git(这里我们用源码包安装方式)

1)先移除系统中原有的低版本git:

#yum -y remove git

备注:默认centos的git版本是1.7.10,必须删除后,再下载源码进行安装

2)安装git的相关依赖包:

#yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel

3)编译安装git:

#mkdir /tmp/git && cd /tmp/git
#curl --progress https://www.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz | tar xz
#cd git-2.9.0
#./configure --prefix=/usr/local/git
#make  && make install

4)配置环境变量:

在/etc/profile最后面加上下面这行,然后source /etc/profile使之生效

export PATH=/usr/local/git/bin:$PATH

5)验证一下是否成功:

6、安装ruby:

1)移除已有的ruby(如果存在)

yum -y remove ruby

注:如果是源码包安装的:

#cd <your-ruby-source-path> && make uninstall

2)编译安装ruby:

#mkdir /tmp/ruby && cd /tmp/ruby
#curl --progress https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz |tar xz
#cd ruby-2.2.2 && ./configure --prefix=/usr/local/ruby --disable-install-rdoc && make && make install

3)配置环境变量:

同理在/etc/profile文件最后加上下面一句,并且执行source /etc/profile使之生效。

export PATH=/usr/local/ruby/bin:$PATH

4)验证是否成功:

5)安装bundler:

#gem install bundler --no-rdoc

#gem install charlock_holmes

7、安装go编译器:

从GitLab 8.0开始,Git HTTP请求由gitlab-workhorse(以前的gitlab-git-http-server)处理。这是一个用Go编写的小守护进程。要安装gitlab-workhorse,我们需要一个Go编译器

#yum -y install golang golang-bin golang-src

8、为gitlab创建系统用户:

#adduser --system --shell /bin/bash--comment ‘GitLab‘ --create-home --home-dir /data/gitlab/ git

9、数据库安装和相关库的创建:

这里由于我们之前版本gitlab使用的是腾讯云的数据库,这里就不在另外安装数据库了,直接在数据库相关配置文件里配置之前数据库的信息即可。

10、安装配置redis:

1)同样先删除旧的redis

#yum -y remove redis

2)重新安装redis:

#yum -y install redis

装完后查看下版本:

3)修改redis配置文件:

a、备份配置文件

#cp /etc/redis.conf /etc/redis.conf.bak

b、修改/tmp/redis.sock为/var/run/redis/redis.sock

c、修改/var/var/run/redis/redis.sock的权限为755

#chmod 755 /var/run/redis

d、配置redis自启动

#chkconfig --level 35 redis on

e、启动redis并验证

f、附加git到redis组

#usermod -aG redis git

11、安装gitlab

1)取gitlab源代码

#su - git$cd /data/gitlab
$git clone https://gitlab.com/gitlab-org/gitlab-ce.git gitlab
$cd /gitlab
$git branch -a  #查看远程分支
$git checkout -b v8.10.5  #切换到8.10.5版本分支上$cat VERSION8.10.5

2)修改配置文件

$cp config/gitlab.yml.example config/gitlab.yml

$vim config/gitlab.yml

这里host我随便配置的一个域名,以自身情况进行配置

$cp config/secrets.yml.example config/secrets.yml
$chmod 0600 config/secrets.yml
$chmod -R git log
$chmod -R git tmp
$chmod -R u+rwX,go-w log
$chmod -R u+rwX tmp$chmod -R u+rwX tmp/pids/$chmod -R u+rwX tmp/sockets/$mkdir public/uploads/$chmod 0700 public/uploads$chmod -R u+rwX builds$chmod -R u+rwX shared/artifacts$cp config/unicorn.rb.example config/unicorn.rb#查看系统核心数$nproc4$vim config/unicorn.rb      #下面的worker_processes就是配置成上面nproc的值

$vim config/resque.yml (redis配置文件)

配置mysql:

$cp config/database.yml.mysql config/database.yml

$vim config/database.yml

12、安装gem  --网上都说换成淘宝源,但我装的时候用官网源也不卡,所以就没换

$bundle install --deployment --without development test postgres aws

13、安装gitlab-shell

$cat /data/gitlab/gitlab/GITLAB_SHELL_VERSION --先查看此版本的gitlab需安装什么版本的gitlab-shell
3.2.1
$su - git
$sudo -u git -H bundle exec rake gitlab:shell:install[v3.2.1] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

配置config.yml文件

$cp gitlab-shell/config.yml.example  gitlab-shell/config.yml

$vim gitlab-shell/config.yml

执行安装命令,创建对应目录和文件

$./bin/install

14、安装gitlab-workhorse

$cd /data/gitlab
$git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
$cat gitlab/GITLAB_WORKHORSE_VERSION  --查看需要安装哪个版本的gitlab-workhorse
0.7.8
$cd gitlab-workhorse/
$git checkout v0.7.8$cat gitlab-workhorse/VERSION0.7.8$make

15、设置启动脚本

$cp lib/support/init.d/gitlab /etc/init.d/gitlab$chkconfig gitlab on

$vim /etc/init.d/gitlab

16、设置logrotate日志切割(可选操作)

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

17、配置web服务器:

这里我们配置nginx为例:

1)安装nginx:

#yum -y update

#yum -y install nginx

#chkconfig nginx on

2)配置gitlab

#cp /data/gitlab/gitlab/lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf

#vim /etc/nginx/conf.d/gitlab.conf

修改完用nginx -t 检测下语法有没有错误,没有错误的话就可以启动nginx了.

18、检查gitlab环境基础:

$bundle exec rake gitlab:env:info RAILS_ENV=production

为了没有遗漏任何内容,进行更彻底的检查:

$bundle exec rake gitlab:check RAILS_ENV=production

如果检测出来都是绿色的,那么说明没有问题,可以启动gitlab了。

#service gitlab start

至此,gitlab就安装完成了,接下来进行备份迁移。

这里我们把旧版本那台服务器称为A服务器,上面新装的服务器称为B服务器,以便下文书写方便:

1、备份数据:

1)升级迁移前先对A服务器上的gitlab作备份:

#su - git
$cd /data/gitlab/gitlab
$bundle exec rake gitlab:backup:create RAILS_ENV=production

备份的文件在/data/gitlab/gitlab/tmp/backups目录下:

2)备份数据库:这里由于使用的是第三方数据库(腾讯云数据库),上面数据库配置这块已经配了那个数据库地址,这里就不在进行备份了。

3)备份keys

$cp /data/gitlab/.ssh/authorized_keys /tmp/authorized_keys

4)备份repositories目录

$cd /data/gitlab

$tar zxvf repositories.tar.gz ./repositories

把A服务器上备份的数据拷贝到B服务器:

#scp -P 36022 xxx_gitlab_backup.tar authorized_keys repositories.tar.gz [email protected]:/.......

2、恢复数据

1)导入仓库,检查权限

$cd /data/gitlab

$tar xvf repositories.tar.gz  --A服务器拷贝过来的包

$chmod -R git. /data/gitlab/repositories

2)导入keys

$cat authorized_keys >>/data/gitlab/.ssh/authorized_keys

3)导入repos

$cd /data/gitlab/gitlab

$bundle exec rake gitlab:import:repos RAILS_ENV=production

3、检测

$cd /data/gitlab/gitlab

$bundle exec rake gitlab:check RAILS_ENV=production

检测没有问题就可以重启gitlab了

#service gitlab restart

重启完登入web客户端检查下数据一致性,没有问题的话,接着就可以进行升级了。

1、首先停掉B服务器的gitlab服务,在进行升级

#service gitlab stop

2、获取最新版本分支

$su -git
$cd /data/gitlab/gitlab
$git fetch --all$git checkout -- Gemfile.lock db/schema.rb$git checkout v10.8 -b v10.8 --切换到要升级到的版本分支$cat VERSION

3、升级gitlab-shell

$ cd /data/gitlab/gitlab-shell
$ git fetch
$ git checkout v`cat /data/gitlab/gitlab/GITLAB_SHELL_VERSION` -b v`cat /data/gitlab/gitlab/GITLAB_SHELL_VERSION`

4、升级gitlab-workhorse

$ cd /data/gitlab/gitlab-workhorse
$ git fetch
$ git checkout v`cat /data/gitlab/gitlab/GITLAB_WORKHORSE_VERSION` -b v`cat /data/gitlab/gitlab/GITLAB_WORKHORSE_VERSION`$make

5、安装库环境

$cd /data/gitlab/gitlab
# PostgreSQL
    $bundle install --without development test mysql --deployment
# MySQL
    $bundle install --without development test postgres --deployment# Optional:   clean up old gems $bundle clean # Run database migrations   $bundle exec rake db:migrate RAILS_ENV=production# Clean up assets and cache   $bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production

6、启动gitlab

#service gitlab restart
#service nginx restart

7、检查程序状态

检查GitLab及其环境是否配置正确:
$ bundle exec rake gitlab:env:info RAILS_ENV=production
确保没有报错,运行一次更彻底的检查:
$bundle exec rake gitlab:check RAILS_ENV=production
如果所有项目是绿色的,那么恭喜你升级完成!
gitlab从8.10.5升级到10.8到此结束。


原文地址:https://www.cnblogs.com/liangyou666/p/9434158.html

时间: 2024-10-10 19:02:40

gitlab升级和迁移的相关文章

Gitlab配置、备份、升级、迁移

0.Gitlab安装 1.安装和配置必要的依赖关系 在CentOS7,下面的命令将在系统防火墙打开HTTP和SSH访问. yum install curl openssh-server postfixsystemctl enable sshd postfixsystemctl start sshd postfixfirewall-cmd --permanent --add-service=httpsystemctl reload firewalld2.添加gitlab包服务器安装包 curl -

gitlab升级迁移---源码包安装转rpm包(三)

距离上次gitlab升级快过去一年了,期间gitlab已更新了好多新版本,都没有进行升级.理由很简单,因为升级很麻烦,秉着能用就先用着的想法.但是最近gitlab接连发出之前旧版本有安全漏洞,看到的公告是:<GitLab 叕发布安全补丁 12.0.3, 11.11.5 和 11.10.8,请即刻升级>,都出现“叕”字了,说明不得不升级了,毕竟代码是公司的核心资产. 那么说干就干,首先去gitlab官网查看升级文档,看需要升级哪些东西.我这gitlab之前是用源码包安装的,版本是10.8.7,需

ubuntu14.04升级以及gitlab升级

环境:系统版本ubuntu14.04 .gitlab-ce.8.11.3 升级要求:系统升级为目前最新的LTS版本的ubuntu16.04.gitlab升级为最新的版本 升级可以有两种方案: 一种类似于迁移(重新找台机器,系统直接安装ubuntu16.04,然后安装gitlab版本和原版本一致,进行数据迁移后确认数据无误后再对gitlab进行升级). 另一种直接在原机器上,首先对系统升级,然后对gitlab升级. 1.直接在原机器上升级的方案: 升级前备份数据: 停止gitlab备份数据 git

gitlab升级【一】gitlab Omnibus CE安装遇到的一些问题

最近公司打算将内部使用的gitab 7.14.3升级到最新的gitlab的 Omnibus CE版本.但是由于内部使用的gitlab是源码安装的,使用的是外部数据库mysql5.6. 所以升级的方案是: 1.将源码安装的gitlab的数据迁移到Omnibus CE gitlab 7.14.3的版本 2.将Omnibus CE gitlab安装的7.14.3直接在线升级 所以前置条件就是: 1.在新的服务器上面安装好Omnibus CE gitlab 7.14.3 系统版本:CentOS 7.14

CentOS6.5 安装gitlab以及gitolite迁移gitlab

CentOS6.5 安装gitlab以及gitolite迁移gitlab gitlab 的安装使用以及数据结构 安装 环境: CentOS6.5 基于 nignx + unicorn 搭建的应用环境, 如果想要换成passenger,可以参考网上的文档 ruby环境是基于rbenv搭建的 1: install vim yum install -y vim 2: install git > 1.7.10 install git $ rpm -i 'http://pkgs.repoforge.org

Jenkins进阶系列之——17Jenkins升级、迁移和备份

升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件.重启即可. 二进制:卸载旧版本,安装新版本即可. Jenkins程序下载地址:http://mirrors.jenkins-ci.org/ note:升级前,请测试该版本和你本地数据的兼容性.如何测试:将JENKINS_HOME拷贝一份到新的机器,用新版的程序启动.测试对应的插件和配置. 迁移和备

gitlab升级-(一)安装一台旧版本

gitlab升级 首先第一步:先安装一台与现在gitlab版本一致的机器,备份原版本gitlab数据,备份完在新服务器恢复,恢复完在进行升级,以防升级失败 再来一遍如何安装gitlab吧 我这里现在的gitlab版本 8.14.6 如下 下载rpm我安装的是社区版,社区版和企业版的区别请看官网介绍: https://www.gitlab.com.cn/installation/ce-or-ee/?distro=centos-7 我这里有以前版本的rpm就不进行下载,直接放到服务器,然后安装 安装

gitlab 升级

gitlab 升级 官网升级路线: https://docs.gitlab.com/ee/policy/maintenance.html 第一步: 原机器备份 docker exec -t gitlab gitlab-rake gitlab:backup:create CRON=1 备份完成将备份文件和配置目录(/srv/gitlab/config) 通过scp拷贝到新机器上, 备份文件必须拷贝到目标机器的 /srv/gitlab/data/backups 第二步: 打包原机器镜像 打包完成sc

GitLab远程仓库迁移

GitLab上的项目迁移,实质上是更改远程仓库的url.我们在同一个用户下面迁移项目的时候可以更改项目的"project name"来实现项目的迁移.但当用户A的项目迁移到用户B的时候,可以在用户B下面新建一个项目,然后把项目A的文件拷贝过来,但是这种容易丢失commit的log记录.不想丢失commit log记录的话,可以用重置url的方法来实现. 1.首先查看UserA当前项目的remote url: $ git remote -v origin  [email protecte