目录
前言
我个人参加了一个外包项目,其中他们有一台 Dell 服务器,里面装有最新版本的 Gitlab,我的任务就是将这个 Gitlab 通过 DDNS 暴露到公网中去。
在这里,我记录一下其中遇到的一些问题。
准备工作
花生壳帐号(有一个免费或者收费的域名)
路由器(带有 DDNS 功能的路由器,我这里采用 小米路由器)
一个域名
一台刚刚安装完成并且成功启动的 Gitlab 服务器
至于如何申请花生壳,我就不在这里多说了,不过我要说一点,在花生壳里面,你注册的时候会给你一个免费的域名。这个域名有一个神奇的名字,叫过壳域名
,我第一次没有意识到,这个就是免费域名,找了好久,也没有找到在哪里。😂
在路由器中设置 DDNS
进入路由器设置,寻找 DDNS 或者动态域名解析,选择花生壳服务,填写相关的用户名和密码,以及送与的免费的域名地址。
链接测试,路由器显示链接成功,并且进入花生壳域名管理,查看域名解析的情况。
如果失败了,请查看是否免费的域名填写错误,或者密码用户名错误等等。
此时,如果你运行如下命令
1 | ping your.deamon.com |
会正常的 ping
到自己的主机。
配置端口转发
当解析成功的时候,仅仅说明域名可以正常的找到这台路由器,但是还不能找到路由器内部的主机。
所以我们需要将路由器的部分端口映射到内部的服务器的主机的端口,这就是端口转发。
根据需要,将服务器的 80 映射到路由器的 8000。
因为 Gitlab 需要 ssh 服务端口,所以还需要将 20 端口映射到路由器上。
为什么要将 80 映射到 8000,而 ssh 却不用?
这是因为,我们的网络都是接入到外部运营商提供的网络,而运营商不允许用户私自搭建服务器(至于为啥,谁知道这群运营商怎么想的)。所以会封锁 80 端口。
这也就会产生一个很神奇的现象,如果你映射 80 端口,你在内网中,可以通过域名正常,但是你在外网,却不能访问。
为啥呢?根据 计算机网络
中所说的,获取目标 ip
,之后,发现是局域网,于是就直接不走运营商了。。。。
弄完之后,就可以在地址中输入 http://your.domain.com:8000
访问 Gitlab 了。
为什么我一切都配置好了,为啥还是不行?
答案:请尝试关闭防火墙,或者将端口加入白名单。
PS: 因为服务器是 Centos 7, 所以采用了 firewall
的管理方式,而不是以前的 iptables
,这一点需要注意。
配置 Gitlab 中的 external_url
在安装之后,你还需要配置 external_url
来在 repo 中正确显示url。
之所以没有从 host 中获取 URL ,是因为,很多情况下,git 仓库和前端管理是分离的,所以你需要自己去配置。
至于配置方式,详情请查看 Configuring the external URL for GitLab
然后按照教程 gitlab-ctl reconfigure
即可
Over
至此,在添加了 Gitlab 成员之后,我就可以洗洗睡了,晚安~~~