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- 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.
#./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. && ./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
#mkdir /var/run/redis
b、修改/tmp/redis.sock为/var/run/redis/redis.sock
c、修改/var/run/redis/redis.sock的权限为755
#chown redis:redis /var/run/redis
#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 VERSION
8.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 config/secrets.yml
$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
#查看系统核心数
$nproc
4
$vim config/unicorn.rb #下面的worker_processes就是配置成上面nproc的值
$cp config/resque.yml.example config/resque.yml
$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.
$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
执行安装命令,创建对应目录和文件
$cd gitlab-shell
$./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.
$cd gitlab-workhorse/
$git checkout v0.7.8
$cat gitlab-workhorse/VERSION
0.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 xxx@xxx.xxx.xxx.xxx:/.......
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..5升级到10.8到此结束。
gitlab升级和迁移的更多相关文章
- gitlab升级迁移(二)
前面我们写了一篇gitlab升级迁移的文章(https://www.cnblogs.com/liangyou666/p/9434158.html),这次我们主要是讲另一种升级迁移方法和其中遇到的一些问 ...
- gitlab 之 升级、迁移
-----故事背景- 公司服务器用vm装的虚拟机,由于公司服务器经常无故重启,且找不到原因,所以公司准备将vm迁移至Hyper-V,Hyper-V可以自启动虚拟机且免费. -----升级.迁移- 首先 ...
- Gitlab配置、备份、升级、迁移
0.Gitlab安装 1.安装和配置必要的依赖关系 在CentOS7,下面的命令将在系统防火墙打开HTTP和SSH访问. yum install curl openssh-server postfix ...
- Gitlab备份与恢复、迁移与升级
0.Gitlab安装 1.安装和配置必要的依赖关系 在CentOS7,下面的命令将在系统防火墙打开HTTP和SSH访问. yum install curl openssh-server postf ...
- Gitlab备份、迁移、恢复和升级
Gitlab备份.迁移.恢复和升级 自建的Gitlab服务器常常会因为使用时间的增长,其空间容量等硬件需求都需要升级,或者迁移至更高配置的服务器上.备份.迁移.恢复.升级过程如下 1.gitlab备份 ...
- gitlab备份及迁移
Gitlab 创建备份 使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:ba ...
- CentOS6.5 安装gitlab以及gitolite迁移gitlab
CentOS6.5 安装gitlab以及gitolite迁移gitlab gitlab 的安装使用以及数据结构 安装 环境: CentOS6.5 基于 nignx + unicorn 搭建的应用环境, ...
- gitlab升级方法
gitlab升级方法:国内网络环境推荐方法二方法一:官网的升级方式 (1)停止git服务 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq gitlab- ...
- gitlab升级、汉化、修改root密码
1.gitlab升级 # 查看当前版本 head -1 /opt/gitlab/version-manifest.txt gitlab-ce 8.9.5 grep "^external_ur ...
随机推荐
- sql server 压缩数据库
收缩日志 ALTER DATABASE 数据库名称 SET RECOVERY SIMPLEDBCC SHRINKDATABASE(数据库名称, 0) 压缩数据库ALTER DATABASE 数据库名称 ...
- 监控elssticSearch健康状态
[4ajr@elk1 scripts]$ curl 172.30.210.175:9200/_cat/health [4ajr@elk1 scripts]$ cat check_es_healthy. ...
- openstack搭建之-horizon配置(14)
一.ctrl控制节点安装horizon #安装软件yum install openstack-dashboard -y vim /etc/openstack-dashboard/local_setti ...
- Redhat6.4安装Oracle 11gr2 64位 注意事项
安装步骤略, 安装步骤参考:https://www.cnblogs.com/jhlong/p/5442459.html 注意的是,会出现找不到一些依赖库,我根据光盘已有的库安装了所有64位的依赖库,强 ...
- JDK环境配置(Windows)
JDK环境配置(Windows): 1.下载jdk版本: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads ...
- Linux 学习 (四) 帮助命令
Linux达人养成计划 I 学习笔记 man 命令 获取指定命令的帮助 man的级别 1:查看命令的帮助 2:查看可被内核调用的函数的帮助 3:查看函数和函数库的帮助 4:查看特殊文件的帮助(主要是/ ...
- [模板] 平衡树: Splay, 非旋Treap, 替罪羊树
简介 二叉搜索树, 可以维护一个集合/序列, 同时维护节点的 \(size\), 因此可以支持 insert(v), delete(v), kth(p,k), rank(v)等操作. 另外, prev ...
- CSS之样式属性(背景固定、圆形头像、模态框)
CSS属性 一.宽和高 width属性可以为元素设置宽度. height属性可以为元素设置高度. 块级标签才能设置宽度,内联标签的宽度由内容来决定. div {width: 1000px;backgr ...
- Javascript初识之数据类型
一.JavaScript概述 1.ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组 ...
- linux文件目录权限和系统基础优化命令(yum源配置)
一.用户 1.介绍 我们都知道linux中有root用户和普通用户,但是同样是普通用户,为什么有些用户的权限却不一样呢?其实这就类似于我们的QQ群,root用户就是QQ群主,他拥有最高的权利,想干什么 ...