CentOS7下Gitlab迁移数据库至MySQL(亲测有效!避免各种错误!各种安装包可提供)

一、安装前准备

安装gitlab、Git、MySQL(这些安装步骤我其他文章中写的有)

本文中版本为:Git 2.8.3            Gitlab 10.1.4              MySQL 5.7.24   

我的系统版本为:(系统可以不一样)

[root@localhost ~]# cat /etc/redhat-release  ##查看系统版本
CentOS Linux release 7.6.1810 (Core) 
[root@localhost ~]# uname -r
3.10.0-229.el7.x86_64

1、首先编辑vim /opt/gitlab/embedded/service/gitlab-rails/.bundle/config文件

将BUNDLE_WITHOUT: "development:test:mysql" 改为BUNDLE_WITHOUT: "development:test:postgres"

2、创建数据库、用户,并赋予所有权限。(MySQL8以上的版本创建用户和权限的方式不一样,网上自行百度)

create database gitlabhq_production DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  ##创建数据库
GRANT ALL PRIVILEGES ON gitlabhq_production.*TO 'gitlab'@'%' IDENTIFIED BY 'gitlab' WITH GRANT OPTION;  ##创建用户并赋权
flush privileges;  ##刷新数据库
exit;  ##保存退出

3、配置Gitlab添加MySQL,修改gitlab.rb文件中的配置如下:

[root@localhost ~]# vim /etc/gitlab/gitlab.rb 
 gitlab_rails['db_adapter'] = "mysql2"
 gitlab_rails['db_encoding'] = "utf8"
 gitlab_rails['db_collation'] = nil
 gitlab_rails['db_database'] = "gitlabhq_production"
 gitlab_rails['db_username'] = "gitlab"
 gitlab_rails['db_password'] = "gitlab"
 gitlab_rails['db_host'] = "192.168.190.147"
 gitlab_rails['db_port'] = "3306"
 postgresql['enable'] = false

4、重新配置gitlab,并安装相关依赖。

[root@localhost gitlab]# gitlab-ctl reconfigure  ##重新配置下gitlab
[root@localhost gitlab]# yum -y install ruby-devel   ##安装依赖

5、缺少 mysql2,用ruby的gem工具下载一个。进入/opt/gitlab/embedded/bin目录中执行

[root@localhost gitlab]# cd /opt/gitlab/embedded/bin
[root@localhost bin]# ./gem install mysql2
Fetching: mysql2-0.5.2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 1 seconds
1 gem installed
[root@localhost bin]# ./gem install mysql2
Fetching: mysql2-0.5.2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 1 seconds
1 gem installed

6、更换gem源并删除原有gem源,在/opt/gitlab/embedded/bin目录中执行

[root@localhost bin]# /opt/gitlab/embedded/bin/gem source
*** CURRENT SOURCES ***

https://rubygems.org/
[root@localhost bin]# /opt/gitlab/embedded/bin/gem sources --add https://gems.ruby-china.com/   ##这里的gem源要用.com结尾的。老版本的是.org结尾,但是网站更新已经不支持.org了
[root@localhost bin]# gem sources --remove https://rubygems.org/  ##删除原来的gem源
https://rubygems.org/ removed from sources

7、确认系统中的gem 源已更新

[root@localhost bin]# /opt/gitlab/embedded/bin/gem source
*** CURRENT SOURCES ***

https://gems.ruby-china.com/

8、更改配置Gemfile文件的gem源,编辑vim /opt/gitlab/embedded/service/gitlab-rails/Gemfile文件,修改配置源为:source 'https://gems.ruby-china.com'

9、更新gem install rubygems-bundler 和 gem regenerate_binstubs

[root@localhost bin]# gem install rubygems-bundler
Fetching: bundler-unload-1.0.2.gem (100%)
Successfully installed bundler-unload-1.0.2
Fetching: executable-hooks-1.5.0.gem (100%)
Building native extensions.  This could take a while...
# In case of problems run the following command to update binstubs:
    gem regenerate_binstubs
Successfully installed executable-hooks-1.5.0
Fetching: rubygems-bundler-1.4.5.gem (100%)
Successfully installed rubygems-bundler-1.4.5
Parsing documentation for bundler-unload-1.0.2
Installing ri documentation for bundler-unload-1.0.2
Parsing documentation for executable-hooks-1.5.0
Installing ri documentation for executable-hooks-1.5.0
Parsing documentation for rubygems-bundler-1.4.5
Installing ri documentation for rubygems-bundler-1.4.5
3 gems installed
[root@localhost bin]# gem regenerate_binstubs
try also: gem pristine --binstubs
rdoc 4.0.0

10、进入系统Gemfile所在的目录,我的Gemfile文件是放在/opt/gitlab/embedded/service/gitlab-rails/目录中的

[root@localhost bin]# cd /opt/gitlab/embedded/service/gitlab-rails/
[root@localhost gitlab-rails]# /opt/gitlab/embedded/bin/bundle install

11、重新启动数据库,否则在执行下一步gitlab检查时会报错,提示找不到数据表。必要时重新配置下gitlab也行。

[root@localhost gitlab-rails]# service mysqld restart

12、gitlab-rake gitlab:check检查配置,这一步会花费一点时间,中间有需要输入的地方,直接回车或者输入yes都可以。

[root@localhost gitlab-rails]# gitlab-ctl reconfigure

13、初始化gitlab,执行gitlab-rake gitlab:setup 之后,会提示以前的数据信息会丢失掉。输入yes继续执行。这一步大家要考虑好,最好是提前吧数据库数据备份好。以后可以恢复到新数据库中。

[root@localhost gitlab-rails]# gitlab-rake gitlab:setup

14、重启配置启动。

[root@localhost gitlab-rails]# gitlab-ctl reconfigure      ##重新配置gitlab
[root@localhost gitlab-rails]# service firewalld stop  ##关闭防火墙
[root@localhost gitlab-rails]# gitlab-ctl restart    ##重启服务
[root@localhost gitlab-rails]# gitlab-ctl tail   #查看启动情况,ctl+C 可结束查看状态

15、所有服务都起来后,后台查看数据库gitlabhq_production,可以看到数据库中有了很多表。然后访问gitlab页面,此时第一次登录gitlab,需要重新设置8位数的密码,然后即可登录gitlab,账户为root。

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章