部署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地址了,工作中非常方便。