gitlab 从古老的 bitnami 版本 迁移到官方最新版本

这是我之前发布在 yuque 的文章。是我刚来新公司的时候帮公司搬迁 git 记录下来的,现在看来去掉敏感部分直接发布也没啥问题啦,就搬家过来,我自己也方便查 XD .

8.1.6 -> 10.1.4

首先需要分几个步骤

第一步

我将老版本 这里是从 bitnami gitlab 上安装的 8.1.4 版本

将这个版本下的所有现在有的数据进行备份。 使用

找到/opt/gitlab-7.x.x-x/apps/gitlab/htdocs/config/gitlab.yml,将backup一项的路径改为"/data/backups_gitlab",注意目录的权限更改。

这个路径下面可以找到我们的 gitlab 配置文件,将 backup 的地址指定为我们想要其备份的地址。

之后开始备份,使用

cd /opt/gitlab-7.x.x-x/
./use_gitlab
cd /opt/gitlab-7.x.x-x/apps/gitlab/htdocs
bundle exec bin/rake gitlab:backup:create RAILS_ENV=production
  • 报错情况1:You have already activated rake 0.9.2.2,but our Gemfile requires rake 10.1.0,Using bundle exec may solve this.
    原因是默认的path路径不对,需要执行下bitnami自带的环境变量设置脚本: 执行安装目录下use_gitlab 即可解决。
  • 报错情况2:笔者使用的数据库为MySQL,报错Can‘t connect to local MySQL server through socket.
    解决方法为用find指令找到MySQL实际使用的.sock文件,在报错中的目录下建立软链接。

之后我们就能在原来的机器上获得一个备份好的压缩包

这里注意 backup 的时候不能停机,备份的时候可能会去尝试链接还在运行的数据库,如果服务 down 了会链接失败。

第二步

由于我要到新机器上部署我的新版本,所以我在另外一台机器上下载好了跟之前 bitnami 一样的版本,这个版本是官方的 Omnibus 版本。我手动下载的 .rpm 包。

我这里采用手动安装:

sudo EXTERNAL_URL="http://127.0.0.1:8081" rpm -i gitlab-ee-9.5.2-ee.0.el7.x86_64.rpm

Installing the GitLab Package

With the desired package downloaded, use your systems package management tool to install it. For example:

  • DEB based (Ubuntu, Debian, Raspberry Pi): sudo EXTERNAL_URL="http://gitlab.example.com" dpkg -i gitlab-ee-9.5.2-ee.0_amd64.deb
  • RPM based (CentOS, RHEL, Oracle, Scientific, openSUSE, SLES): sudo EXTERNAL_URL="http://gitlab.example.com" rpm -i gitlab-ee-9.5.2-ee.0.el7.x86_64.rpm

Change http://gitlab.example.com to the URL at which you want to access your GitLab instance. Installation will automatically configure and start GitLab at that URL.

[[email protected] gitlab]# sudo EXTERNAL_URL="http://git.hundun.cn" rpm -i gitlab-ce-8.1.4-ce.0.el7.x86_64.rpm

gitlab: Thank you for installing GitLab!

gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:

sudo gitlab-ctl reconfigure

gitlab: GitLab should be reachable at http://iZ2ze9mbirr18cl7fb5ewtZ

gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file

gitlab: And running reconfigure again.

gitlab:

gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme

gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

gitlab:

It looks like GitLab has not been configured yet; skipping the upgrade script.

执行 sudo gitlab-ctl reconfigure 会开始配置下载好的 gitlab ,之后我们就可以使用 gitlab-ctl 来执行 gitlab 的 start|end|restart 等等命令了。

可以通过 ps -ef 查看 gitlab 的 nginx 读取哪儿的配置文件如下:

nginx: master process /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx

所以我们可以在 /var/opt/gitlab 下面找到最新的配置文件。

Next, install the GitLab package. Change `http://gitlab.example.com` to the URL at which you want to access your GitLab instance. Installation will automatically configure and start GitLab at that URL. HTTPS requires additional configuration after installation.

sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee

其实当我们在安装的时候 让我们设置的一个地址可以让外部访问,那个地址会让 gitlab 自动生成一个 nginx 配置文件,监听的 server_name 就是我们设置的地址,如果需要反向代理我们可能需要去 gitlab 的 nginx 配置目录下面修改这个监听地址。如果没有反向代理,看上去直接设置之后就可以使用了(这里一般都是需要定制的,感觉 gitlab 这个也给自动设置有点过于优化了。不过也体现出人家尽量提升用户体验的感觉吧)。

第三步

拷贝备份到新机器上 这个简单 scp 一下就行了 like this

scp /home/a.txt [email protected]:/home/root

从本地 传输到 192.168.0.8

然后就是 restore

现将之前的复制包 拷贝到 omnibus 版本的 backup 目录

之后停掉其中两个服务并且 check 其状态。

恢复完毕之后让我们 check 其状态。

sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/

Stop the processes that are connected to the database. Leave the rest of GitLab running:

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

Verify

sudo gitlab-ctl status

Next, restore the backup, specifying the timestamp of the backup you wish to restore:

This command will overwrite the contents of your GitLab database!

这里会重写数据库和内容,因为是恢复备份所有都会清掉所以特意让我们注意。

sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce

Next, restore /etc/gitlab/gitlab-secrets.json if necessary as mentioned above.

Restart and check GitLab:

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

If there is a GitLab version mismatch between your backup tar file and the installed version of GitLab, the restore command will abort with an error. Install the correct GitLab version and try again.

这里特别注意,所有的恢复迁移工作都是建立在备份的版本和安装的新版本相同的情况下。

第四步

通过官方渠道升级到最新版本。(未完待续)

# Debian/Ubuntu
dpkg -i gitlab-ce-XXX.deb

# CentOS/RHEL
rpm -Uvh gitlab-ce-XXX.rpm

分别使用这两个包管理工具进行升级。

升级过于老旧的版本需要脚本放得很缓慢,基本上最多 3个 mirror 一升,否则就会出错。而且是无法挽回的错误又得重来。另外记得每次升级完成后 重启然后修改 nginx 参数。

完成升级之后可以留意一下 git 的 host 是否正常。例如如果你使用阿里云却不配置对外访问地址,那么git host 应该会出现非常奇怪的地址。所以需要配置 gitlab 配置文件将对外地址项改成域名。然后 gitlab-ctl reconfigure 一下生效即可。

虽然这里记录的东西最少,但是这里几乎最耗时,来来回回包括查资料差不多 8 小时吧。最开始还想一步到位升上去简直太天真了。

之后 linux 下删除软件尽量使用对方提供的现成方法,并且找到所有的删掉可以使用 find 方法。

find / -iname ‘xxx‘

QA:

Q: 卡在卸载gitlab然后再次安装执行sudo gitlab-ctl reconfigure的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行!

A:

1、按住CTRL+C强制结束;

2、运行:sudo systemctl restart gitlab-runsvdir;

3、再次执行:sudo gitlab-ctl reconfigure

https://www.cnblogs.com/springwind2006/p/6872773.html

Q: 数据库恢复密码丢了。

A: https://docs.gitlab.com/ee/security/reset_root_password.html#doc-nav

Reference:

https://packages.gitlab.com/app/gitlab/gitlab-ce/search  gitlab 发布包地址

http://xlindo.com/2015/08/18/gitlab备份与恢复操作方法/  gitlab bitnami 备份恢复文档

https://community.bitnami.com/t/upgrade-bitnami-gitlab-ce-version/48641  bitnami 官方论坛关于升级问题

https://docs.gitlab.com.cn/omnibus/update/README.html#updating-from-gitlab-66-and-higher-to-the-latest-version  gitlab 官方文档 -> Updating GitLab via omnibus-gitlab

https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore  restore for Omnibus

https://about.gitlab.com/installation/#centos-7  官方安装文档

https://docs.gitlab.com/ee/policy/maintenance.html#versioning  官方推荐升级路径

https://about.gitlab.com/blog/categories/releases/  官方 relase 文档

https://www.jianshu.com/p/a86a1529d253  nginx反向代理 gitlab

https://docs.gitlab.com/omnibus/settings/smtp.html  gitlab SMTP settings

原文地址:https://www.cnblogs.com/piperck/p/11620413.html

时间: 2024-11-14 20:27:11

gitlab 从古老的 bitnami 版本 迁移到官方最新版本的相关文章

Oracle 数据迁移(从Oracle11G高版本迁移到Oracle10G低版本)

1,数据库状况    生产环境是11G,linux系统,测试环境是10G,windows系统,需要从生产环境导出一个用户下所有的数据,导入测试环境中.    因为数据量比较小,准备采用EXP和IMP工具来做. 2,在生产环境上导出用户数据    命令:       exp \'system/syspl as sysdba\' owner=PLAS buffer=10240000 FILE=/tmp/PLAS_20141113.DMP 执行过程:[[email protected] ~]$  ex

CoreData的简单使用(二)数据的增删改查,轻量级的版本迁移

上一篇中我们已经使用CoreData创建了一个SQLite数据库 CoreData的简单使用(一)数据库的创建 现在对数据库进行数据的CRUD(增删改查) 1.Data Model 的设置 创建一个DataModel,取名CRUD.xcdatamodeld,添加Entity(Library和Book),添加属性,在Book中设置和Library的关联关系(一个Book可以存放在一个Library里) Book的属性和关联关系(选择Destination为Library,关系名称取名为librar

Core Data 学习:轻量级版本迁移(Lightweight Migration)

什么时候需要版本迁移呢? 答案很简单,什么时候改变数据模型,什么时候就需要版本迁移. Core Data支持对数据模型(data model)改变的管理.改变数据模型将造成该数据模型与之前的持久化存储(stores)不兼容,而出现错误.所以,如果我们改变了自己的数据模型,就需要将原有的持久化存储中的数据转移到新的模型版本,这一过程就称为版本迁移(migration). 为什么需要进行版本迁移? 当我们发布应用之后,再添加一些新的特性,我们将需要更新持久化存储.在我们开发的过程中,很好操作,删除A

Elasticsearch最新版本2.20特性及如何安装

版本选择:Elasticsearch最新版本2.20 Elasticsearch的更新速度实在太快了,16年2月2日更新到了2.2版本,首先看一下这个版本增加了哪些新的特性.首先是基于Lucene 5.4.1,修复了Elasticsearch 2.1.2和Elasticsearch 1.7.5版本中存在的很多bug,同时Elasticsearch 2.2.0增加了两个很棒的新功能:查询分析器和增强地理位置字段.这个版本增加了更加严格的安全性和修复了2.1的一个重大bug,就是在分片恢复的时候会非

Linux CentOS6系统安装最新版本Node.js环境及相关文件配置

Node.js,当前应用非常广泛的Javascript运行环境,采用C++编写的,目前应用较多的用于WEB应用中,执行效率还是非常高的,虽然老左不从业程序的开发,但是有些时候在玩VPS的时候还是会遇到使用Node.JS环境基础的,比如这几天在玩HEXO轻博客程序的搭建有用到Nodejs环境配置,这不正好把基于CentOS6系统的配置记录下来. 因为,我们常用默认的CentOS系统中自带的Nodejs源版本比较低,有些时候兼容不是太好,所以,我们在安装和配置Node.js环境的时候还是直接手工安装

【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

原文地址:https://www.cnblogs.com/lzpong/p/5755678.html 我这里是centos7 升级到gcc8.1,过程差不多,参考这篇文章,记录一下. ---原文--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加yum 的 repo 文件 也不行, 只能更新到 4.4.7! then,  只能手动编译安装了,那么开始第一步下载源代码吧,

Python3第三方组件最新版本追踪实现

一.说明 在安全基线中有一项要求就是注意软件版本是否是最新版本,检查是否是最新版本有两方面的工作一是查看当前使用的软件版本二是当前使用软件的最新版本.在之前的“安全基线自动化扫描.生成报告.加固的实现(以Tomcat为例)”中只是做了前一项把当前使用的软件版本查出来,并没有做当前使用软件的最新版本. 当然其实这也是没办法的事,因为基线扫描一般而言都是离线扫描,而追踪最新版本肯定需要联网查询:一般就一个应用来说,少说也会用到几十个第三方库,我们不如索性把最新版本追踪功能单独独立出来实现. 追踪最新

linux环境升级python2.7到python最新版本

1.首先检查系统Python版本 pyhon --version 2.如果是Python2.7版本的话,我们通过sudo apt-get install -y python或者其它yum方式 3.再去查看的时候,Python默认版本还是Python2.7版本 4.我们进入到/usr/bin目录查看有几个版本Python 然后我们删除关于Python2.7的目录, 编辑目录vim ~/.profile 加入这行代码 PATH=$PATH:$HOME/bin:/usr/bin/python3/bin

[WebView学习之四]:迁移到Android4.4版本的WebView

上一篇我们学习了([WebView学习之三]:使用WebView来创建Apps),今天我们来继续学习. (博客地址:http://blog.csdn.net/developer_jiangqq),转载请注明. Author:hmjiangqq Email:[email protected] Android4.4(API版本19)提供了一个基于Chromium版本的新版本WebView.该变化提高了WebView的性能,并且和最新的Web浏览器支持最新的HTML5,CSS3样式以及Javascri