前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当GitLab遇上Lighthouse……

当GitLab遇上Lighthouse……

原创
作者头像
嘉钰
修改2022-12-12 22:10:22
3.8K1
修改2022-12-12 22:10:22
举报
文章被收录于专栏:玩转Lighthouse玩转Lighthouse
Lighthouse - Docker - GitLab
Lighthouse - Docker - GitLab

手把手带你通过 Docker 搭建 GitLab

代码版本控制为什么重要

在大家熟知的版本控制工具(如CVS、 SVN、Git等)在生产环境中发光发热之前,代码管理是一件十分痛苦的事情。散落在各个存储目录(单机)甚至各个存储设备(多机)上的代码,单是将它们重新正确地组合,都并非易事。

版本控制工具本身的发展也经历了演变:

  • “史前时代”三件套——diff、patch与tar包;
  • CVS(Concurrent Versions System),它是由荷兰阿姆斯特丹 VU 大学的 Dick Grune 教授通过脚本语言对RCS(一个针对单独文件的版本管理工具)进行封装;
  • SVN(Subversion),SVN由CollabNet公司于2000年资助并开始开发,目的是替代 CVS;
  • Git是由 Linus Torvalds 自行开发的版本控制系统,用以替代收回无偿使用许可的 BitKeeper。

Git 是个啥

Git 最初是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开源的版本控制软件。与常用的版本控制工具 CVS , Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

使用 Git 进行版本控制的一般工作流程如下:

  • 克隆 Git 仓库中的资源作为 WorkSpace
  • 对该资源进行操作(增删改等)
  • 从 Git 仓库同步最新资源
  • 查看修改状态
  • 提交修改
  • 提交成功,如果发现问题,可以撤回提交

GitLab 又是个啥

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并支持在此基础上搭建 Web 服务。GitLab由乌克兰程序员 DmitriyZaporozhets 和 ValerySizov 开发,它由 Ruby 写成。后来,一些部分用 Go 语言重写。除了基本的代码管理之外,GitLab且具有wiki以及在线编辑、issue跟踪功能、CI/CD等功能。

Why Lighthouse

腾讯云轻量应用服务器,它默认集成了Docker基础镜像,其中打包了Docker容器基础环境,这意味着您无需关注 GitLab 运行环境的搭建,仅通过docker pull、docker run两行命令,便能立刻基于Docker容器快速构建私有代码托管的服务。

服务器准备

搭建 GitLab 的第一步,当然是准备一台服务器了,我们来到腾讯云轻量应用服务器的购买页,选择「Docker 基础镜像」

选择地域与镜像
选择地域与镜像

选好实例套餐、购买时长等之后,点击立即购买即可。

选择实例套餐等
选择实例套餐等

如果您想用已有的轻量应用服务器来尝试,只需要在控制台重装系统即可:

部署 GitLab

购买完成后, Docker 容器运行的基础环境也将自动完成构建,此时我们登录轻量应用服务器,通过 Docker 命令开始 GitLab 的部署。

代码语言:javascript
复制
# 切换为 root 用户进行操作
sudo -i
代码语言:javascript
复制
# 拉取最新或指定版本的 GitLab 镜像
# 更多版本 Tag 可参考:https://hub.docker.com/r/gitlab/gitlab-ce/tags
docker pull gitlab/gitlab-ce:latest
docker pull
docker pull
代码语言:javascript
复制
# 运行 GitLab 容器
docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
docker run
docker run

修改配置文件

此时我们的 GitLab 就已经安装完成了,接下来需要对 GitLab 的配置文件进行亿些调整(初始情况下,GitLab的配置文件均为注释,需要添加需要的语句以启用)。

代码语言:javascript
复制
# 打开配置文件后,按“i”进入编辑模式
vim /home/gitlab/config/gitlab.rb
代码语言:javascript
复制
# 配置访问地址,默认监听 80 端口,
# 注意将 xxx 替换为轻量应用服务器的公网 IP 地址
external_url 'http://xxx.xxx.xxx.xxx'
# 配置 ssh 协议的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = 'xxx.xxx.xxx.xxx'
# 前述将 GitLab 容器的 22 端口映射为 222
gitlab_rails['gitlab_shell_ssh_port'] = 222
调整配置文件
调整配置文件

编辑完成后保存并退出

代码语言:javascript
复制
# 按下 ESC 键,输入下方命令后,回车
:wq

此时,需要重启 GitLab 容器,来让我们刚刚的配置生效:

代码语言:javascript
复制
docker restart gitlab
docker restart
docker restart

出现如图所示的现象后,说明重启完成,此时已经可以通过 IP 地址来访问搭建好的 GitLab 了。不过有可能会遇到以下页面,不要慌,原因是重启有一个生效时间,稍等片刻即可。

502……
502……

尝试访问

成功访问的页面如下,不过此时需要登录 GitLab,我们似乎没有获取到用户名&密码,要怎么办?

初次访问
初次访问

GitLab初始的用户名为 root,初始密码则需要通过以下命令来获取:

代码语言:javascript
复制
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

Tips:建议在首次登录之后就修改密码,因为 GitLab 的初始密码存储在临时文件中,这个文件将在首次执行reconfigure后24小时自动删除。

获取初始密码
获取初始密码

解析域名

单单通过 IP 地址来访问并不十分优雅,况且如果在配置 url 的时候,设置了 80 之外的端口号,访问时还需要拼上端口,具有很大的安全隐患。这个时候我们就要用到域名了,腾讯云轻量应用服务器控制台已经支持轻量的域名管理,可以选择新购域名或者托管已有域名,并能够快速解析到您的 GitLab 服务器上:

购买或添加域名
购买或添加域名
解析域名
解析域名

在控制台解析完成之后,我们还需要对配置文件做一点小小的调整:

代码语言:javascript
复制
# 打开配置文件后,按“i”进行编辑
vim /home/gitlab/config/gitlab.rb
代码语言:javascript
复制
# 配置访问地址,默认监听 80 端口,
# 注意将 xxx 替换为刚刚在控制台解析的域名
external_url 'http://xxx.xxx'
代码语言:javascript
复制
# 重启 GitLab 容器
docker restart gitlab

稍等片刻,等待重启生效后,就可以通过域名来访问 GitLab 服务器了,不过这个时候还有一点不完美的地方,就是在访问时浏览器会提示我们“连接不安全”,为了解决这个问题,我们需要进行 HTTPS 的设置。

设置HTTPS

成功设置HTTPS的前提,是拥有一张刚刚解析的域名可用的「SSL 证书」,SSL 证书可以为网站、移动 App、Web API 等应用提供身份验证和数据加密传输等能力。

我们首先来到 腾讯云 SSL 证书控制台,选择新购证书、申请免费证书或上传已有证书,成功拥有一张“已签发”状态的证书之后,我们将证书文件下载至本地:

下载 SSL 证书
下载 SSL 证书

接着将证书上传至轻量应用服务器,这一步我们用自动化助手 TAT 来完成

自动化助手 / 公共命令库
自动化助手 / 公共命令库

通过 TAT 上传文件只需要三步:

  1. 选择文件
  2. 选择上传目录
  3. 选择实例
使用自动化助手上传文件
使用自动化助手上传文件

我们需要将图示的文件上传至 /data/gitlab-volume/gitlab/config/ssl 目录下:

上传如下文件
上传如下文件

上传完成后,我们需在 GitLab 的配置文件中做一点修改:

代码语言:javascript
复制
# 注意把 http 换成 https
external_url  'https://xxx.xxx'
# 配置强制 https
nginx['redirect_http_to_https'] =true

然后重启,静候成功。

Git基础操作

代码语言:javascript
复制
# 为 Git 配置用户名 & 密码 & 邮件
git config --global user.name "xxx"
git config --global user.password "xxxxxxxx"
git config --global user.email "xxx@xxx.xxx"
git config
git config
代码语言:javascript
复制
# 从远程仓库克隆 Git 资源至本地
git clone https://gitlab.xxx.com/gitlab-instance-xx/mytestproj.git
git clone
git clone
代码语言:javascript
复制
# 添加一个 text.txt 的文件,输入“Okay”
vi text.txt
Okay……
Okay……
代码语言:javascript
复制
# 检查 WorkSpace 和暂存区的状态
git status
git status
git status
代码语言:javascript
复制
# 将项目添加至缓存
git add .
代码语言:javascript
复制
# 将项目提交至本地仓库
git commit -m "Okay"
git commit
git commit
代码语言:javascript
复制
# 前从远程仓库同步最新版本并合并本地版本
git pull origin master
git pull
git pull
代码语言:javascript
复制
# 将本地的分支版本上传到远程并合并
git push origin master
git push
git push

我们来看看效果吧~

text.txt
text.txt

Lighthouse X GitLab的搭建教程到这里就结束啦,以后大家就好好探索 GitLab 的妙用吧!

参考资料

1、《 Git 权威指南》,蒋鑫;

2、https://zh.wikipedia.org/wiki/Git

3、https://en.wikipedia.org/wiki/GitLab

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码版本控制为什么重要
  • Git 是个啥
  • GitLab 又是个啥
  • Why Lighthouse
  • 服务器准备
  • 部署 GitLab
  • 修改配置文件
  • 编辑完成后保存并退出
  • 尝试访问
  • 解析域名
  • 设置HTTPS
  • Git基础操作
  • 参考资料
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档