垃圾Gitee狗都不用

今天早上收到一封邮件,居然是Gitee发来的,我一看,好家伙,给我仓库封了,理由是侵权。当初这个仓库就是随手写的模拟我们学校疫情期间的出校请假证明,而且写完之后学校系统就升级了我这个就没用了,一直放在GitHub上面没管。

后面有一次学校实训,非要用Gitee提交代码,我就顺手把GitHub上面的仓库都同步过来了,好家伙,我都一年多没上了,这会告诉我我仓库给我封了。

我深深地对国内这些托管机构产生了信任危机,当机立断发邮件要求删除我的被封仓库并注销我的账户。

1640873259867.png

被封邮件

GitLab

由于GitHub有的时候不挂代理真的太慢了,在国内给别人看代码实在不方便,而且还准备教工作室的学弟学妹们用这些,所以萌生了一个自己部署Git托管的想法。

上一家离职的公司代码托管是自己部署的GitLab,用着也算是熟了。

之前一直没自己部署是因为没有啥性能靠谱的服务器,这次是趁着年底,买了个天翼云的8H16G的机子,然后把mc放到那上面去了,这样我原来的4H8G的腾讯云的机器就闲下来了,我寻思还不如找点东西部署上去,正好要一个Git托管,就放在这上面好了。

部署

GitLab分两个版本,一个是企业版,就是GitLab EE,一个是社区版,GitLab CE。EE的话多了一些功能(其实具体的我也不知道多了啥,想知道去官方看文档吧。反正我就仓库管理流水线啥的标准版也有)。查了半天CE其实是EE的非空真子集,而且EE不激活订阅的话CE的功能一样也能用,所以这里建议直接部署EE,反正也没什么损失,万一以后想订阅了呢。

部署方式

部署方式的话有两种,一个是用官方的脚本直接把服务部署在系统上,另一种是用docker。考虑到未来迁移、维护的一些问题,我选择了docker部署。

安装docker

docker的安装直接使用官方提供的脚本即可

sudo curl -sSL get.docker.com | sh

如果希望使用docker compose的话可以再装一个,我用的是pip安装的(需要python3)(虽然后面我也没用到这玩意部署所以你也可以不用)

pip3 install docker-compose

获取镜像

不少人获取的是非官方的中文镜像,其实没必要,官方的汉化已经达到95%了,不过需要用户自己更改自己的语言,网站默认还是英文。

docker pull gitlab/gitlab-ee    # 这里要是不想装EE的话,后面的ee改成ce就行 

启动服务

事先找个路径,创建三个文件夹,比如在/home下,创建一个gitlab文件夹,在gitlab文件夹下创建config、logs、data这三个文件夹用于保存docker映射出的文件

由于gitlab自带nginx和数据库PostgreSQL ,我们需要将其暴露出来并作反向代理。

docker run -d \                 # 启动docker              
--hostname git.utopiaxc.cn \    # 规定域名
-p 8443:443 \                   # 建立docker端口映射以便后面做反向代理,将SSL的443端口映射到主机8443
-p 880:80 \                     # 将Nginx的80端口映射到主机880
-p 822:22 \                     # 将SSH的22端口映射到主机822
--name gitlab \                 # docker服务命名,起什么都可以
--restart always \              # 崩溃自动重启设置为一直
-v xxx/config:/etc/gitlab \     # 将配置文件路径映射出来,xxx为上面提到的路径,如/home/gitlab
-v xxx/logs:/var/log/gitlab \   # 将日志文件路径映射出来方便后续查找问题
-v xxx/data:/var/opt/gitlab \   # 将数据目录映射出来方便管理与迁移
-m 5000M \                      # 最小内存,这里建议设置超过2000M,我一共8G所以设置了5G
--memory-swap=5000M \           # 最小交换内存,这里不得小于最小内存
gitlab/gitlab-ee:latest         # 指定docker镜像,即我们上面拉取到的最新版的gitlab镜像

执行完这个巨长的shell之后,我们的gitlab服务就启动好了,我们直接通过域名的880端口就可以访问到了。默认管理员账户为root,初始密码在config文件夹中的initial_root_password文件中。(启动会有点慢,虽然已经显示启动成功但是访问的时候还是会显示502,这时的502是带有gitlab标志的502,稍等片刻即可)

反向代理

我们使用主机的nginx反向代理gitlab服务,注意这里反代的域名和上面启动gitlab的域名要一致。以下为nginx反代配置文件。

#PROXY-START/

location ^~ /
{
    proxy_pass http://127.0.0.1:880;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;

    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache

    set $static_fileHUnD4FzV 0;
    if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
    {
        set $static_fileHUnD4FzV 1;
        expires 12h;
        }
    if ( $static_fileHUnD4FzV = 0 )
    {
    add_header Cache-Control no-cache;
    }
}

#PROXY-END/

配置文件

下面我们来修改gitlab的配置文件,由于上一步我们已经将config映射出来了,所以我们可以很容易的在xxx/config中修改gitlab的配置。由于配置实在是太多了,大家可以去看官方的文档,这里只主要展示我做的修改。只需要修改gitlab.rb文件即可,里面有大量的可配置模板,可以直接将里面的注释去掉进行修改,也可以直接加在文件的最末尾。

域名

这个用docker部署的话其实不需要修改

registry_external_url 'https://registry.example.com'    # 将https://registry.example.com改成自己的域名

SSH服务端口

这一步修改的不是SSH服务的运行端口,而是在克隆的时候的链接中的端口。由于我主机没做SSH反代,所以直接使用的822

gitlab_rails['gitlab_shell_ssh_port'] = 822

邮件服务

这里我用的是outlook的office365企业版,所以是这么配置,至于其他邮箱的配置方法可以参考官方文档,有细微差异。

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.office365.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "example@youdomain.com"
gitlab_rails['smtp_password'] = "your password"
gitlab_rails['smtp_domain'] = "youdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

时区

gitlab_rails['time_zone'] = 'Asia/Shanghai'

应用配置

配置文件修改后需要应用并重启,在主机执行docker exec指令即可。

docker exec -t gitlab gitlab-ctl reconfigure    # 应用配置
docker exec -t gitlab gitlab-ctl restart        # 重启docker

当然,出了通过docker exec对内部执行命令行之外,也可以直接重启docker服务。

重启后会显示带gitlab标志的502,这是正常现象,说明正在启动,等完全启动后就不会显示502了。

其他配置

剩下的配置就自己用管理员账户去管理员后台看就行了,看不懂英文的可以在用户配置中将location改为中国-简体中文。具体怎么改随便一搜就能搜到。

最后

最后声明一下吧,我这个gitlab不是公开的,是我自用还有和工作室的小伙伴用的,需要实名注册,我会审核,不认识的账户我会直接删掉,所以就别费工夫来注册薅羊毛之类的了(我的机器硬盘确实小)。

然后,预告一下,下一篇可能是一篇杂文或者是别的,因为最近这不是从北京回大连了么,可能会写一些关于这方面的东西,也是好久没更新博客了,最近比较闲,所以可能会多更新几篇。

本篇内容为原创内容,采用CC BY-NC-SA 4.0协议许可
2021-12-30 22:59
UtopiaXC
于大连


尽管如此,世界依旧美丽