配置gitlab使用外部数据库

vim /opt/gitlab/embedded/service/gitlab-rails/.bundle/config
将BUNDLE_WITHOUT: "development:test:mysql" 修改为
BUNDLE_WITHOUT: "development:test:postgres"

yum -y install ruby-devel
cd /opt/gitlab/embedded/bin
./gem install mysql2

1、创建数据库
#创建数据库
create database gitlab DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

#创建用户并添加权限
GRANT ALL PRIVILEGES ON gitlab.*TO 'gitlab'@'%' IDENTIFIED BY 'gitlab' WITH GRANT OPTION;

MySQL8.0需要执行如下:
mysql> create user 'gitlab'@'%' IDENTIFIED BY '1qaz!QAZ';
Query OK, 0 rows affected (0.08 sec)

mysql> GRANT ALL PRIVILEGES ON gitlab.* TO 'gitlab'@'%';
Query OK, 0 rows affected (0.06 sec)

#刷新权限
flush privileges;

2、配置gitlab.rb,添加mysql
vim /etc/gitlab/gitlab.rb

#修改数据库配置
gitlab_rails['db_adapter'] = "mysql2"
gitlab_rails['db_encoding'] = "utf8"
gitlab_rails['db_database'] = "gitlab"
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "gitlab"
gitlab_rails['db_host'] = "127.0.0.1"
gitlab_rails['db_port'] = 3306
postgresql['enable'] = false

3、配置gitlab的依赖
3.1去掉掉postgres依赖
#缺少 mysql2,用ruby的gem工具下载一个,在下载之前,得先配置下ruby的gem与bundle
#编辑config
vim /opt/gitlab/embedded/service/gitlab-rails/.bundle/config
将原来的mysql替换成postgres,我们不需要postgers的包了。
这里写图片描述

3.2安装mysql依赖
安装依赖,需要指定版本,可以先安装后,在执行gitlab-rake gitlab:check查看安装的版本。

gitlab几乎所有的命令都在此目录下

cd /opt/gitlab/embedded/bin/

##安装mysql
./gem install mysql2
检查配置:根据红色提示安装相应的包。注意一定要指定版本,如:
/opt/gitlab/embedded/bin/gem install mysql2 -v'0.4.10'
/opt/gitlab/embedded/bin/gem install peek-mysql2 -v'1.1.0'
gitlab-rake gitlab:check

这一步很坎坷,一直报错。类似如下:
make: *** No rule to make target /include/x86_64-linux/ruby/config.h', needed byclient.o'. Stop.

解决办法就是按照提示,创建目录,并cp所需文件。如下:
我执行了三次,其中还有一个backward.h文件是在网上找的。

mkdir -p /opt/gitlab/embedded/lib/ruby/include/
cp /usr/include/ruby/* /opt/gitlab/embedded/lib/ruby/include/

mkdir -p /opt/gitlab/embedded/lib/ruby/include/ruby/
cp -r /opt/gitlab/embedded/lib/ruby/include/*.h /opt/gitlab/embedded/lib/ruby/include/ruby/

mkdir -p /include/x86_64-linux/ruby/
cp -r /opt/gitlab/embedded/lib/ruby/include/* /include/x86_64-linux/ruby/

#删除mysql
./gem uninstall mysql2

#安装指定版本
./gem install mysql2 -v "0.3.20"

#查看版本
./gem list | grep mysql

4、检查配置
这个检查,是为了保证咋们的配置绝对的正确。不然直接搞,会死得很惨的。这个地方会有很多错误的,具体可以看我的常见问题,说不定有一样的。

#查看配置是否ok,如果数据库ok了 可以直接执行gitlab-rake gitlab:setup,来创建数据库的表。
gitlab-rake gitlab:check

5、初始化gitlab
执行gitlab-rake gitlab:setup命令,来初始化gitlab.

#初始化gitlab
gitlab-rake gitlab:setup

我们执行了gitlab-rake gitlab:setup 之后,会提示以前的数据信息会丢失掉。当然我们不设定为yes,后面咋玩啊。

成功后之后,就会创建一个root用户

6、重启服务
#####后面几个gitlab-ctl 常用命令,这次配置用不到
#配置服务
gitlab-ctl reconfigure;

#重启服务
gitlab-ctl restart;

#查看启动情况
gitlab-ctl tail

7、查看数据库信息
可以看到数据库中,多出了好多张表,然后服务也正常启动了

#可以看到好多表已经自动创建了。
show tables;

服务正常启动

常见问题
1、仓库存储目录权限
人家提供了解决方案了,解决办法就是给仓库设定gt用户的权限 sudo chown -R git:git /var/opt/gitlab/git-data/repositories

default... no
User id for git: 995. Groupd id for git: 993
Try fixing it:
sudo chown -R git:git /var/opt/gitlab/git-data/repositories
For more information see:
doc/install/installation.md in section "GitLab Shell"
Please fix the error above and rerun the checks.

2、gitlab没有mysql2的依赖
Specified 'mysql2' for database adapter, but the gem is not loaded. Add gem 'mysql2' to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). excluded from capture due to environment or should_capture callback
1
解决办法,安装依赖

#到bin目录下,执行gem的命令
cd /opt/gitlab/embedded/bin

#安装指定版本的mysql驱动
gem install mysql2 -v "0.3.20"

3、gitlab找不到表的问题
如果驱动安装成功后,执行gitlab-rake gitlab:check,如果是表不存在,可以执行下面代码,来创建表。

gitlab-rake gitlab:setup

4、gitlab-shell self-check failed
自动检查失败,导致这个问题的原因是没找到自己的服务器,解决方案是在本地的hosts中指向自己的服务器。
解决方案,/etc/hosts添加 127.0.0.1 localhost 就可以了、我先测试功能

vim /etc/hosts

#添加
127.0.0.1 localhost

转载于:https://blog.51cto.com/207698/2133703

你可能感兴趣的:(配置gitlab使用外部数据库)