GitLab维护指南

GitLab安装和升级

1.gitlab-ce安装

这里使用的环境是Ubantu 16.04 LTS,注意gitlab-ce 镜像仅支持 x86-64 架构。我们使用的清华大学开源软件镜像站提供的版本,国内站点速度很快。

首先信任 GitLab 的 GPG 公钥:

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null

把软件源配置写进 /etc/apt/sources.list.d/gitlab-ce.list

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main

安装 gitlab-ce:

sudo apt-get update
sudo apt-get install gitlab-ce

如果是centOS,那么信任软件源需要新建 /etc/yum.repos.d/gitlab-ce.repo,内容为:

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

然后进行安装:

sudo yum makecache
sudo yum install gitlab-ce

如果需要指定版本安装:

# 查看可用版本
yum list gitlab-ce  --showduplicates| sort  -r 

# 安装指定版本
yum -y install docker-ce-17.06.0.ce

配置生效启动服务:

gitlab-ctl reconfigure
gitlab-ctl restart

2.版本升级

升级需要先关闭部分服务:

gitlab-ctl stop unicorn 
gitlab-ctl stop sidekiq 
gitlab-ctl stop nginx

升级命令与安装命令相同

sudo apt-get update
sudo apt-get install gitlab-ce

然后重置配置和服务重启

gitlab-ctl reconfigure
gitlab-ctl restart

服务器迁移

1.备份数据

首先备份原GIT服务器数据

gitlab-rake gitlab:backup:create RAILS_ENV=production 

注:默认备份后文件一般位于/var/opt/gitlab/backups/,文件名类似:1513578325_2017_12_18_gitlab_backup.tar

然后备份配置文件:

/etc/gitlab/gitlab.rb  #配置文件须备份

/var/opt/gitlab/nginx/conf #nginx配置文件

/etc/postfix/main.cfpostfix #邮件配置备份

2.复制备份文件到新服务器

使用远程拷贝命令复制文件到新的服务器

scp /var/opt/gitlab/backups/1513578325_2017_12_18_gitlab_backup.tar username@src_ip:/var/opt/gitlab/backups

3.新GitLab服务数据恢复

注意:需要保证新服务器的版本与旧服务器一致
查询版本:

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

执行命令进行数据恢复:

#cd /var/opt/gitlab/backups
#gitlab-rake gitlab:backup:restore BACKUP=备份文件编号
#gitlab-rake gitlab:backup:restore BACKUP=1502357536_2019_04_14_11.9.8

注:BACKUP的时间点必须与原服务器备份后的文件名一致

4.重启服务检测数据恢复情况

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

如果check命令出现错误,说明备份的GitLab服务和新的GitLab服务版本不匹配,请安装正确的版本

修改服务端口号

修改nginx端口:

sudo vi /etc/gitlab/gitlab.rb
nginx['listen_port'] = 8081

sudo vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
server {
 
  listen *:8081;

修改unicorn端口:

sudo vi /etc/gitlab/gitlab.rb
unicorn['port'] = 3648
sudo vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen "127.0.0.1:3648", :tcp_nopush => true

保存配置,重启:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-ctl status

修改默认端口号后出现502问题恢复,可能是权限问题,尝试以下命令来解决:

# chmod -R 777 /var/log/gitlab
# gitlab-ctl tail unicorn

修改HTTP连接方式中的IP和端口

修改gitlab.yml文件

cd /opt/gitlab/embedded/service/gitlab-rails/config
vim gitlab.yml

修改host和port

host:要修改的IP
port:要修改的端口

重启gitlab

gitlab-ctl restart

邮件通知功能设置

为邮件通知功能配置smtp服务和发件邮箱:

vim  /etc/gitlab/gitlab.rb

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.ym.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxuser@163.com"
gitlab_rails['smtp_password'] = "xxpassword"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true

gitlab_rails['gitlab_email_from'] = "xxuser@163.com"
user["git_user_email"] = "xxuser@163.com"

重置配置:

sudo gitlab-ctl reconfigure

如有问题可以查看日志:

gitlab-ctl tail

使用gitlab-rails console测试邮件功能:

username@hostname$ gitlab-rails console

username@hostname$ Notify.test_email('xxxxx@xxx.com','Message Subject','message Body').deliver_now

常见问题

1.页面500问题解决

在升级过后,或者恢复配置之后,对项目进行删除修改等操作会出现失败,报500,这是因为升级造成gitlab数据库中token参数错误,需要重置,方法入下, 对指定id的项目将token设置为null

root@gitserver:/etc/gitlab# sudo gitlab-rails dbconsole
psql (9.6.11)
Type "help" for help.

gitlabhq_production=> UPDATE projects SET runners_token = null, runners_token_encrypted = null WHERE id = 5 ;
UPDATE 1

2.升级500问题错误

前面高兴的太早,访问GitLab发现报500错误,观察log得知大意为DB数据关系错误,需要升级数据库关系

输入以下指令查看数据升级状态

sudo gitlab-rake db:migrate:status

果然发现有一些显示为Down,显示为Up即表示正常同,再执行数据库关系升级

sudo gitlab-rake db:migrate

执行完成再重复重建、重启命令,问题解决

3.配置加载阻塞:

安装过程中执行gitlab-ctl reconfigure,出现长时间卡住的情况:

运行:sudo systemctl restart gitlab-runsvdir;

再次执行:sudo gitlab-ctl reconfigure

4.修改注册权限问题报500:

https://gitlab.com/gitlab-org/gitlab-ce/issues/56403

参考文章:

https://www.cnblogs.com/TechSnail/p/7745459.html

https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/

https://www.jianshu.com/p/dfcfd5a66b8b

https://blog.csdn.net/liuruiqun/article/details/50000213

https://www.jianshu.com/p/5df942809cea

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容