垃圾Gitee狗都不用
今天早上收到一封邮件,居然是Gitee发来的,我一看,好家伙,给我仓库封了,理由是侵权。当初这个仓库就是随手写的模拟我们学校疫情期间的出校请假证明,而且写完之后学校系统就升级了我这个就没用了,一直放在GitHub上面没管。
后面有一次学校实训,非要用Gitee提交代码,我就顺手把GitHub上面的仓库都同步过来了,好家伙,我都一年多没上了,这会告诉我我仓库给我封了。
我深深地对国内这些托管机构产生了信任危机,当机立断发邮件要求删除我的被封仓库并注销我的账户。
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
于大连
Comments | NOTHING