本来是想直接在centos上面安装架设,还是考虑到复用问题,因为我的日常工作是java开发,不会花很多时间来专门维护Git服务器,再则如果上门服务都直接在一个服务器上面配置,总会有一些影响的。还是隔离开比较好,所以选择使用docker镜像来架设。

架设过程中自然要踩很多坑的,有一些关键的地方网上的资料也不是很详细,鼓捣了半个工作日,还好把架设的任务完成了。

首先,拉取gitlab镜像,网上资料拉取镜像都是在一个地方,这倒是好事。

docker pull gitlab/gitlab-ce

拉取下来是latest版本,也就是最新的,完整的镜像库名称是docker.io/gitlab/gitlab-ce:latest

在宿主机创建几个文件夹,我习惯把自己用的文件夹创建在home

cd /home

mkdir gitlab

cd gitlab

mkdir config

mkdir logs

mkdir data

接下来开始运行。不过在运行之前,我要跳过一个坑,就是把宿主机的22端口让出来,22端口是宿主机ssh端口,但是因为gitlab也需要,目前没有找到办法处理,只好去改宿主机了。还有,有的资料提示把容器的80端口映射到宿主机的80端口上,这样配置到简单,使用也方便,但是我的服务器还要配置一些nginx路由、负载均衡什么的,总是觉得这个gitlab也太霸道了。但是因为一直不成功,所以只好关掉nginx,把80端口映射出来,结果还真成功了。不过我不服气,删掉容器重新跑了一遍,就是不映射80端口,也成功了。

现在该宿主机的22端口。

vi /etc/ssh/sshd_config

找到# Port 去掉注释,改成Port 1022,以后宿主机的远程ssh登录就用1022端口了。

重启sshd

systemctl restart sshd

运行以下命令提供对外服务

semanage port -a -t ssh_port_t -p tcp 1022

以上内容来自https://www.jianshu.com/p/8d8e6b45a514?from=timeline&isappinstalled=0

我在这里踩过一个坑,不过很快解决了。我运行以上命令,并不成功,而是出现提示:

Traceback (most recent call last):
  File "/usr/sbin/semanage", line 32, in <module>
    import seobject
ModuleNotFoundError: No module named 'seobject'

提示缺少seobject这个模块,还好我记起来了,我在服务器上面安装过python3,之后经常出现这种问题,需要下载模块并且重新编译python3.因为centos很多原生的命令使用python2来编写的。不过提示已经说得很明白了,打开/usr/sbin/semanage文件,把第一行里面最后的python改为python2就好了。因为我安装python3之后,就把python连接到python3,原来的pyth就是python2了,所以很多处要修改。说到这里我倒是要反省这种做法的必要性了,我其实不会在服务器上面做python开发的,安装python3真的没有必要。

我们还需要让防火墙放行1022端口,我的防火墙直接关闭了,所以不需要这一步。

配置好了,可以用下面的命令重新登录服务器:

ssh root@192.168.1.100 1022

也可以不用现在就重新登录。

后来证明,不用做这个改动也是可以的。

现在来开始运行:

docker run --name gitlab --hostname gitlabserver -p 443:443 -p 10086:10086 -p 22:22 -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab -d docker.io/gitlab/gitlab-ce:latest

443端口怎么处理还没有尝试,心理还是不想映射的。这个以后再去尝试。这个10086端口就是我们页面需要的端口,我们会进入容器做一个设置,容器会把数据发送到10086端口,我们也可以用宿主机的10086端口访问。目前这是最合适的办法,抛开80端口不用,就是用一个自定义的端口,内外一致。

进入容器

docker exec -it gitlab bash

打开配置文件

vi /etc/gitlab/gitlab.rb

修改:

external_url "http://192.168.1.100:10086"

192.168.1.101是我宿主机服务器的内网ip,端口是容器这样设置内部的端口号,可以和宿主机映射的端口号不一样。以后,容器gitlab也会把数据端口调整为10086,我们就要直接用这地址访问。

设置完退出,执行命令使配置生效。

gitlab-ctl reconfigure

这条命令执行时间很长,有点耐心。我就是因为没耐心,以为是前台执行,所以就去看页面,页面总是提示拒绝连接,所以我就认为架设失败了,反复去修改,很多次把对的也改错了,可能还有些不必要的改动。这应该是我这次架设过程中踩过的最大一坑了。

打印了好多日志,等到命令执行完毕,回到正常状态,这时候在本地计算机浏览器输入

http://192.168.1.100:10086/

你就会看到一个初次进入要求修改默认密码的弹框,用户名是root,把密码修改掉,就可以登录进入了。

这是登陆界面:

进去之后是创建组、用户、项目的界面。

我已经创建了一个组java,一个用户chris,加入了java组,在java组下面一个项目MallApi。具体设置不做赘述,架设已完成。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐