一、备份
有关备份和恢复的操作,详见我的另一篇博客:Gitlab的备份与恢复
在开始升级之前,一定要做好备份工作,并记录好版本号。
1、查看当前Gitlab的版本号
[root@gitlab ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
9.2.2
2、备份当前的Gitlab
gitlab-rake gitlab:backup:create
在/var/opt/gitlab/backups下会生成一个备份文件如:1557218709_2019_05_07_9.2.2_gitlab_backup.tar,其中1557218709即为此次备份都版本号。
二、升级
注意:Gitlab的升级不能跨越大版本号,因此只能升级到当前大版本号到最高版本,方可升级到下一个大版本号。
由于我现在的版本号是9.2.2,我要升级到现在最新版本的11.10.4,需要做的升级步骤如下:
9.2.2—>9.5.9—>10.8.7—>11.10.4
1、准备好相关的rpm包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-9.5.9-ce.0.el7.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.8.7-ce.0.el7.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.10.4-ce.0.el7.x86_64.rpm
2、依次执行下面指令逐步升级,在每一步安装成功后如果发现界面500,这是因为redis等程序还没完全启动,等一会儿访问就ok了。(一定保证数据可以正常访问方可执行下一步升级指令)
yum localinstall -y gitlab-ce-9.5.9-ce.0.el7.x86_64.rpm
yum localinstall -y gitlab-ce-10.8.7-ce.0.el7.x86_64.rpm
yum localinstall -y gitlab-ce-11.10.4-ce.0.el7.x86_64.rpm
完成之后再查看下当前的版本:
[root@gitlab ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
11.10.4
至此,Gitlab的升级就完成了,赶紧去体验下新版本吧!!
更改gitlab仓库存储位置
更改仓库存储位置
默认时GitLab的仓库存储位置在“/var/opt/gitlab/git-data/repositories”,在实际生产环境中显然我们不会存储在这个位置,一般都会划分一个独立的分区来存储仓库的数据,我这里规划把数据存放在“/data/git-data”目录下。
root@test1:~/tools# mkdir -pv /data/git-data
mkdir: 已创建目录 "/data"
mkdir: 已创建目录 "/data/git-data"
root@test1:~# chown -R git.git /data/git-data #修改创建目录的属主和属组为git用户
root@test1:~/tools# cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak
root@test1:~/tools# vim /etc/gitlab/gitlab.rb
#启用git_data_dirs参数,并修改如下:
git_data_dirs 路径 "/data/git-data"
git_data_dirs({
"default" => {
"path" => "/data/git-data",
"failure_count_threshold" => 10,
"failure_wait_time" => 30,
"failure_reset_time" => 1800,
"failure_timeout" => 30
}
})
#并修改external_url的值修改为规划的访问域名
external_url 'http://test.gitlab.net'
root@test1:~/tools# gitlab-ctl reconfigure #重新编译gitlab.rb文件,使用做的修改生效
重新编辑后,GitLab在仓库目录会自动创建一个repositories文件,如下:
root@test1:~# ls -ld /data/git-data/repositories/
drwxrws--- 2 git git 4096 1月 4 14:15 /data/git-data/repositories/
修改GITLAB默认端口
端口要用9090以后的最好,否则不生效
默认情况下:unicorn会占用8080端口,nginx会占用80端口。改完之后,就可以通过nginx[‘listen_port’] 在浏览器进行访问了。
内部8080端口也不再被占用了。
修改 /etc/gitlab/gitlab.rb 文件如下,然后执行重新配置,重启命令后完成。
gitlab-ctl reconfigure //让配置生效,重新执行此命令时间也比较长
gitlab-ctl restart
解决GITLAB无法启动runsv no running
可以先尝试用
systemctl start gitlab-runsvdir.service
如果冻结不动的话,就需要查看系统服务项了
systemctl -t target
如果系统正常的话,所有任务应该是loaded active active,如果存在inactive dead选型,意味着有些服务出错了。
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cloud-config.target loaded active active Cloud-config availability
cloud-init.target loaded active active Cloud-init target
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded active active Network (Pre)
network.target loaded active active Network
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
slices.target loaded active active Slices
sockets.target loaded active active Sockets
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
time-sync.target loaded active active System Time Synchronized
timers.target loaded active active Timers
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
22 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
multi-user.target loaded inactive dead start Multi-User System
这时候使用
systemctl list-jobs
如果存在某个任务是running,则是该任务堵塞了其他所有服务。
1 graphical.target start waiting
107 plymouth-quit-wait.service start running
2 multi-user.target start waiting
169 ureadahead-stop.timer start waiting
121 gitlab-runsvdir.service start waiting
151 system-getty.slice start waiting
31 setvtrgb.service start waiting
122 systemd-update-utmp-runlevel.service start waiting
此时就可以利用 systemctl stop plymouth-quit-wait.service结束该任务。
然后重启gitlab即可。
卸载GitLab
- 停止gitlab
gitlab-ctl stop
- 1
- 卸载,看一下自己的gitlab版本是ce还是ee
rpm -e gitlab-ce
- 杀死进程
ps -ef|grep gitlab //查看进程
杀死图中标记的进程
kill -9 2287
- 删除gitlab文件
find / -name *gitlab*|xargs rm -rf
find / -name gitlab |xargs rm -rf
- 删除root下备份的文件,先查看一下
ls /root/gitlab*
若没有不需要删除,有则删除
这样就卸载了!