使用docker
you need to use magic
由于docker在国内的镜像源基本都失效了,在Linux机器上配置镜像源的方式不好用了。即使配置了一个可以用的镜像源,过不了多久也会失效。所以最好的办法还是本地安装个docker desktop,然后本地下载images ,再使用save和load命令导入镜像到Linux机器上。
openEuler24安装docker(转载大佬文章)
拉取镜像
在Windows主机上安装docker desktop,然后拉取gitlab-ce(社区版)相应的版本的Images。
导出镜像
cmd
当镜像拉取完成,进入cmd命令提示符。
结合repository和tag来导出镜像。
docker save <repository>:<tag> -o <path with file name>
git bash(建议)
如果在Windows上安装了git bash,你还可以使用gzip工具输出并压缩镜像。
建议先切换到要导出的目录下,然后直接设置导出的文件名,就不用考虑文件路径的差异问题。
docker save <IMAGE ID> | gzip > <FILE NAME>
or
(建议)
docker save <repository>:<tag> | grep > <file name>
这时在导出目录下就可以看到导出的两个文件了。可以发现压缩之后,文件大小减小了很多,还是比较香的,之后文件传输和上传都会更加方便。
上传镜像
我使用的是finalshell的上传工具,免费(推荐)
[root@Euler03 soft]# ll
总计 561848
-rw-rw-r-- 1 root root 1671653308 12月 5 16:10 gitlab-image.tar.gz
-rw-r--r-- 1 root root 196231207 11月27日 12:03 jdk1.8.0_172.tar.gz
drwxr-xr-x 9 500 500 4096 2018年 6月11日 jdk-8
-rw-r--r-- 1 root root 92 12月 4日 16:17 README.txt
上传完毕。
解压(如果只传输了tar包则无需解压)。
gzip -d gitlab-image.tar.gz
导入镜像
现在镜像准备好了,先检查一下linux机器上的docker是否启动。
[root@Euler03 soft]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
Active: active (running) since Thu 2024-12-05 13:32:46 CST; 9min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 1189 (dockerd)
Tasks: 10
Memory: 111.0M ()
CGroup: /system.slice/docker.service
└─1189 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
12月 05 13:32:45 Euler03 dockerd[1189]: time="2024-12-05T13:32:45.561949567+08:00" level=info msg="Starting up"
12月 05 13:32:45 Euler03 dockerd[1189]: time="2024-12-05T13:32:45.762215784+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
12月 05 13:32:45 Euler03 dockerd[1189]: time="2024-12-05T13:32:45.767926751+08:00" level=info msg="Loading containers: start."
docker启动起来后,则可以使用load命令导入镜像了。
docker load --input gitlab-image.tar
配置gitlab的家目录和挂载目录
[root@Euler03 ~]# mkdir -p /opt/soft/gitlab/config
[root@Euler03 ~]# mkdir -p /opt/soft/gitlab/data
[root@Euler03 ~]# mkdir -p /opt/soft/gitlab/logs
[root@Euler03 ~]# cd /opt/soft/gitlab/
[root@Euler03 gitlab]# ls
config data logs
[root@Euler03 ~]#
[root@Euler03 ~]# cat /etc/profile.d/my_env.sh
export JAVA_HOME=/opt/soft/jdk-8
export GITLAB_HOME=/opt/soft/gitlab
export PATH=$PATH:$JAVA_HOME/bin:$GITLAB_HOME
[root@Euler03 ~]# echo $GITLAB_HOME
/opt/soft/gitlab
[root@Euler03 ~]#
删除旧的gitlab容器
如果你的容器名是gitlab,就照着我这样做即可。
[root@Euler03 ~]# docker stop gitlab
gitlab
[root@Euler03 ~]# docker rm gitlab
gitlab
[root@Euler03 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@Euler03 ~]#
创建和运行容器
首先检查/etc/sysctl.conf文件中net.ipv4.ip_forward的参数,设置为1。
使用 Docker Engine的镜像执行脚本,创建并运行gitlab容器。
docker run -d \
--publish 443:443 --publish 9980:9980 --publish 222:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:17.6.1-ce.0
查看gitlab容器是否启动成功。
核心配置
修改$GITLAB_HOME/config/gitlab.rb文件。这里直接是在宿主机挂载的数据卷里的配置文件修改的。我的理解:在这里修改影响的是容器内部的gitlab,所以相关的端口都要改成容器内的设置,而不是外部宿主机的设置。因此,根据运行时的命令,内部的nginx端口要改成9980,而内部的ssh端口不需要改变,只是外部需要使用ssh命令服务gitlab相关服务时,需要使用222端口来访问。
vim $GITLAB_HOME/config/gitlab.rb
external_url 'http://192.168.213.130:9980'
gitlab_rails['gitlab_ssh_host'] = '192.168.213.130'
gitlab_rails['gitlab_shell_ssh_port'] = 222
nginx['listen_port'] = 9980
重启gitlab。
docker restart gitlab
登录
重新启动后,就可以通过IP:9980端口进入到登录页面了。
账号用户名使用管理员的root,密码是一个默认初试密码位于容器内的/etc/gitlab/initial_root_password文件中。
首先进入到容器内部
docker exec -it gitlab /bin/bash
输入命令获取初始密码:
cat /etc/gitlab/initial_root_password | grep 'Password:'
于是就可以进入到主页,然后需要修改root用户密码,因为初始密码在24小时之后失效。
直接在地址栏IP后加上/admin/users/root/edit,到新的页面,编辑输入新密码,点击保存。
重新登录。
完成
使用rpm
卸载旧版
如果之前安装过,则需要先卸载。
先查询一下之前的安装包,我之前安装的是gitlab16.10的社区版。
rpm -qa | grep gitlab
[root@Euler01 ~]# rpm -qa | grep gitlab
gitlab-ce-16.10.7-ce.0.el7.x86_64
停止gitlab程序
gitlab-ctl stop
[root@Euler01 ~]# gitlab-ctl stop
ok: down: alertmanager: 1s, normally up
ok: down: gitaly: 0s, normally up
ok: down: gitlab-exporter: 0s, normally up
ok: down: gitlab-kas: 0s, normally up
ok: down: gitlab-workhorse: 0s, normally up
ok: down: logrotate: 1s, normally up
ok: down: nginx: 0s, normally up
ok: down: node-exporter: 1s, normally up
ok: down: postgres-exporter: 0s, normally up
ok: down: postgresql: 1s, normally up
ok: down: prometheus: 0s, normally up
ok: down: puma: 0s, normally up
ok: down: redis: 0s, normally up
ok: down: redis-exporter: 1s, normally up
ok: down: sidekiq: 0s, normally up
使用rpm -e命令卸载
[root@Euler01 ~]# rpm -e gitlab-ce-16.10.7-ce.0.el7.x86_64
[root@Euler01 ~]# rpm -qa | grep gitlab
[root@Euler01 ~]#
查看gitlab进程
ps aux | grep gitlab
[root@Euler01 ~]# ps aux | grep gitlab
root 1660 0.0 0.0 2440 1364 ? Ss 12:28 0:00 runsvdir -P /opt/gitlab/service log: ...........................................................................................................................................................................................................................................................................................................................................................................................................
root 1672 0.0 0.0 2288 1256 ? Ss 12:28 0:00 runsv gitlab-workhorse
root 1674 0.0 0.0 2288 1336 ? Ss 12:28 0:00 runsv gitlab-kas
root 1677 0.0 0.0 2288 1352 ? Ss 12:28 0:00 runsv gitlab-exporter
root 1680 0.0 0.0 2432 1276 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/puma
root 1681 0.0 0.0 2432 1152 ? Ss 12:28 0:00 svlogd /var/log/gitlab/gitlab-workhorse
root 1683 0.0 0.0 2432 1112 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/nginx
root 1688 0.0 0.0 2432 1272 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/logrotate
root 1691 0.0 0.0 2432 1216 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/redis
root 1693 0.0 0.0 2432 1320 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/postgres-exporter
root 1697 0.0 0.0 2432 1236 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/gitlab-kas
root 1698 0.0 0.0 2432 1216 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/alertmanager
root 1699 0.0 0.0 2432 1288 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/gitlab-exporter
root 1701 0.0 0.0 2432 1228 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/postgresql
root 1707 0.0 0.0 2432 1152 ? Ss 12:28 0:00 svlogd /var/log/gitlab/gitaly
root 1709 0.0 0.0 2432 1368 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/node-exporter
root 1711 0.0 0.0 2432 1032 ? Ss 12:28 0:00 svlogd /var/log/gitlab/sidekiq
root 1714 0.0 0.0 2432 1220 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/prometheus
root 1715 0.0 0.0 2432 1236 ? Ss 12:28 0:00 svlogd -tt /var/log/gitlab/redis-exporter
root 420526 0.0 0.1 21984 7856 pts/0 S+ 13:33 0:00 grep --color=auto gitlab
根据pid结束第一个进程,再检查是否还有残留进程。如果还有再单独清理一遍。
[root@Euler01 ~]# kill -15 1660
[root@Euler01 ~]# ps aux | grep gitlab | grep -v grep
[root@Euler01 ~]#
删除所关于gitlab的文件
find / -name gitlab | xargs rm -rf
下载gitlab的rpm包
可以到清华大学开源软件镜像站或者gitlab官方的packeges网站找适合自己的安装版本。我使用的是gitlab-ce-17.6.1-ce.0.el9.x86_64。下载完毕后把rpm包上传到Linux机器上。
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el9/gitlab-ce-17.6.1-ce.0.el9.x86_64.rpm
准备依赖
yum install curl policycoreutils openssh-server openssh-clients postfix -y
[root@Euler01 soft]# yum install curl policycoreutils openssh-server openssh-clients postfix -y
Last metadata expiration check: 0:12:29 ago on 2024年12月06日 星期五 17时16分13秒.
Package curl-8.4.0-11.oe2403.x86_64 is already installed.
Package policycoreutils-3.5-3.oe2403.x86_64 is already installed.
Package openssh-server-9.3p2-4.oe2403.x86_64 is already installed.
Package openssh-clients-9.3p2-4.oe2403.x86_64 is already installed.
Package postfix-2:3.8.4-1.oe2403.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
安装
先创建一个软链接
ln -s /usr/lib64/libcrypt.so.1 /usr/lib64/libcrypt.so.2
yum localinstall gitlab-ce-17.6.1-ce.0.el9.x86_64.rpm -y
[root@Euler01 soft]# yum install gitlab-ce-17.6.1-ce.0.el9.x86_64.rpm -y
Last metadata expiration check: 0:46:50 ago on 2024年12月06日 星期五 17时16分13秒.
Dependencies resolved.
===============================================================================================================================================================================================================
Package Architecture Version Repository Size
===============================================================================================================================================================================================================
Installing:
gitlab-ce x86_64 17.6.1-ce.0.el9 @commandline 1.3 G
Transaction Summary
===============================================================================================================================================================================================================
Install 1 Package
Total size: 1.3 G
Installed size: 3.1 G
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: gitlab-ce-17.6.1-ce.0.el9.x86_64 1/1
Installing : gitlab-ce-17.6.1-ce.0.el9.x86_64 1/1
Running scriptlet: gitlab-ce-17.6.1-ce.0.el9.x86_64 1/1
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=17-6
Verifying : gitlab-ce-17.6.1-ce.0.el9.x86_64 1/1
Installed:
gitlab-ce-17.6.1-ce.0.el9.x86_64
Complete!
核心配置
先切到配置文件目录!
cd /etc/gitlab/
[root@Euler01 gitlab]# cd /etc/gitlab/
[root@Euler01 gitlab]# ll
总计 156
-rw------- 1 root root 156675 12月 6日 18:17 gitlab.rb
修改配置文件
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.213.130:9980'
gitlab_rails['gitlab_ssh_host'] = '192.168.213.130'
gitlab_rails['gitlab_shell_ssh_port'] = 222
nginx['listen_port'] = 9980
重置
gitlab-ctl reconfigure
这是如果你发现突然卡在ruby_block[wait for redis service socket] action run这,那么你可以参考一下这篇文章【Gitlab初始化卡住不动】
我选择了另外打开一个终端,并且输入下面这个命令,你也可以选择适合你的办法。
/opt/gitlab/embedded/bin/runsvdir-start
稍等片刻,初始化成功:
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.
NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
gitlab Reconfigured!
[root@Euler01 gitlab]#
登录
查看初始密码:
cat initial_root_password | grep 'Password:'
[root@Euler01 gitlab]# cat initial_root_password | grep 'Password:'
Password: ciivwJsGL/Xq1coJh4MNrBiG0d4hYVnOaRyDeAkBTG4=
浏览器输入url:ip:9980
好了,剩下的重置密码的部分和docker部署的方式一样,一定要重置,回去翻看上文docker方式的登录部分,不再赘述。