部署GitLab,要求显示服务端真实IP


由于教学环境下部署的GitLab成功后,复制GitLab的地址栏会隐藏服务端的真实IP,在实际工作中不方便。所以,我在网上淘来了可以直接显示真实IP的方法:

一、修改sshd默认端口。

因为Git是通过SSH协议形式访问,后面需要启动GitLab容器,该容器需要占用22端口,而电脑的sshd服务也需要占用22端口(端口冲突),所以需要提前修改sshd默认端口,将端口修改为2022。

注意:修改后需要重新登录一次虚拟机(重新登录需要指定端口)。

[root@git ~]# vim /etc/ssh/sshd_config
Port 2022                                               #17行
[root@git ~]# systemctl restart sshd
[root@git ~]# exit
真机# ssh -p 2022  192.168.4.20

二、准备容器环境。

提示:gitlab_zh.tar在第二阶段素材目录中,需要先将该素材拷贝到192.168.4.20主机。(比如拷贝到/root目录)或者也可以在网上下载gitlab的镜像(docke pull gitlab/gitlab-ee:11.11.0-ee.0)

[root@git ~]# dnf  -y   install   podman
[root@git ~]# podman load < ./gitlab_zh.tar
[root@git ~]# podman images
REPOSITORY               TAG      IMAGE ID          CREATED       SIZE
localhost/gitlab_zh   latest   1f71f185271a       2 years ago   1.73 GB

三、创建数据目录。

容器无法持久保存数据,需要将真机目录和容器目录绑定,实现数据永久保存。

[root@git ~]# mkdir -p /root/gitlab/{config,logs,data}

四、启动GitLab容器(gitlab服务端操作)

1)启动容器

[root@git ~]# touch /etc/resolv.conf                       
#如果没有该文件则创建文件,防止无法podman run启动容器
[root@git ~]# podman run -d -h gitlab \
--hostname gitlab.example.com \         # 指定容器域名,创建镜像仓库用(可以没有)
-p 8443:443 \                           # 容器443端口映射到主机8443端口(https)
-p 8080:80 \                            # 容器80端口映射到主机8080端口(http)
-p 22:22 \                              # 容器22端口映射到主机22端口(ssh)
--name gitlab \                         # 容器名称
--restart always \                      # 容器退出后自动重启
-v /root/gitlab/config:/etc/gitlab \    # 挂载本地目录到容器配置目录
-v /root/gitlab/logs:/var/log/gitlab \  # 挂载本地目录到容器日志目录
-v /root/gitlab/data:/var/opt/gitlab \  # 挂载本地目录到容器数据目录
gitlab/gitlab-ce:latest                 # 使用的镜像:版本(可以没有)
gitlab_zh

注释:

-d将容器放入后台启动。

-h设置容器的主机名为gitlab。

--name设置容器名称为gitlab。

-p进行端口映射,将git主机的443、80、22端口和git上面运行的容器端口绑定

这样以后任何人访问git主机的22端口也就是在访问容器里面的22端口,任何人访问git主机(192.168.4.20)的80端口也就是访问容器里面的80端口。

-v将git主机上面的目录和容器里面的目录绑定,git主机的/root/gitlab/config目录对应容器里面的/etc/gitlab/目录,其他目录同理。

最后的gitlab_zh是镜像名称。

2)配置systemd,实现容器开机自启动(选做实验)

生成service文件,-n是容器的名称,给gitlab容器生成service文件

[root@git ~]# cd /usr/lib/systemd/system
[root@git ~]# podman generate systemd -n gitlab --files
[root@git ~]# cd ~

设置开机自启动

[root@git ~]# systemctl enable container-gitlab.service

五、修改gitlab配置文件(重点)

 cd /root/gitlab/config    #来到配置文件所在目录
cp gitlab.rb gitlab.rb.bak  #备份配置文件

1)修改配置文件。

# gitlab域名
external_url 'http://192.168.8.21'  #填写gitlab的真实IP

# 时区
gitlab_rails['time_zone'] = 'Asia/Shanghai'

# 允许自定义头像
gitlab_rails['gravatar_plain_url'] = 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'    #这里把注释删掉就好了

# 由于设置了端口映射,设置如下选项使得网页端显示正常可用的ssh地址,如“ssh://git@192.168.8.21:2222/xxx/xxx.git”
gitlab_rails['gitlab_shell_ssh_port'] = 22                

# 关闭CI/CD  
gitlab_rails['gitlab_default_projects_features_builds'] = false   #这里可以不用管

# 设置GitLab备份路径
gitlab_rails['manage_backup_path'] = true                #注释删掉就好了
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"  #注释删掉就好了

2)重启容器或进入容器重启gitlab服务,生效配置。

在gitlab容器内执行一下命令  #进入容器命令是:podman exec -it 容器ID /bin/bash
gitlab-ctl reconfigure
gitlab gitlab-ctl restart

或直接重启容器
podman restart gitlab

此时再次进入GitLab页面就可以看见真实的IP地址了,工作中非常方便。