介绍
GitLab CE https://GitLab.com/GitLab-org/GitLab-ce 或 Community Edition 是一个开源应用程序, 主要用于托管 Git 存储库, 以及其他与开发相关的功能, 如问题跟踪. 它旨在使用您自己的基础架构进行托管, 并为您的开发团队提供部署内部存储库的灵活性, 与用户交互的公共方式, 或者为贡献者提供托管自己项目的方法.
GitLab 项目使用简单的安装机制在您自己的硬件上设置 GitLab 实例变得相对简单. 在本指南中, 我们将介绍如何在 Ubuntu 18.04 服务器上安装和配置 GitLab.
准备
在本教程中, 您将需要:
一个 Ubuntu 18.04 服务器, 一台已经设置好可以使用 sudo 命令的非 root 账号的 Ubuntu 服务器, 并且已开启防火墙. 没有服务器的同学可以在这里购买 https://cloud.tencent.com/product/cvm , 不过我个人更推荐您使用免费的腾讯云开发者实验室 https://cloud.tencent.com/developer/labs 进行试验, 学会安装后再购买服务器 https://cloud.tencent.com/product/cvm .
已发布的 GitLab 硬件要求建议使用服务器:
2 个核心
8GB 的 RAM
虽然您可以通过替换一些交换空间来获取 RAM, 但不建议这样做. 对于本指南, 我们假设您至少拥有上述资源.
域名指向您的服务器.
第 1 步 - 安装依赖项
在我们自己安装 GitLab 之前, 安装一些在安装过程中持续使用的软件非常重要. 幸运的是, 可以从 Ubuntu 的默认包存储库轻松安装所有必需的软件.
由于这是我们第一次 apt 在此会话期间使用, 我们可以刷新本地包索引, 然后键入以下内容来安装依赖项:
- sudo apt update
- sudo apt install ca-certificates curl openssh-server postfix
您可能已经安装了一些此软件. 对于 postfix 的安装, 请在出现提示时选择 "Internet 站点". 在下一个屏幕上, 输入服务器的域名以配置系统发送邮件的方式.
第 2 步 - 安装 GitLab
现在依赖关系到位, 我们可以自己安装 GitLab. 这是一个简单的过程, 它利用安装脚本使用 GitLab 存储库配置系统.
进入 / tmp 目录然后下载安装脚本:
- cd /tmp
- curl -LO https://packages.GitLab.com/install/repositories/GitLab/GitLab-ce/script.deb.sh
您可以随意检查下载的脚本, 以确保您对所需的操作感到满意. 您还可以在此处找到该脚本的托管版本:
Less /tmp/script.deb.sh
一旦您对脚本的安全性感到满意, 请运行安装程序:
sudo bash /tmp/script.deb.sh
该脚本将设置您的服务器以使用 GitLab 维护的存储库. 这使您可以使用与其他系统软件包相同的软件包管理工具来管理 GitLab. 完成后, 您可以使用以下 apt 命令安装实际的 GitLab 应用程序:
sudo apt install GitLab-ce
这将在您的系统上安装必要的组件.
第 3 步 - 调整防火墙规则
在配置 GitLab 之前, 您需要确保防火墙规则足够宽松以允许 web 流量. 如果您遵循先决条件中链接的指南, 则将启用 ufw 防火墙.
键入以下内容查看活动防火墙的当前状态:
- sudo ufw status
- Status: active
- To Action From
- -- ------ ----
- OpenSSH ALLOW Anywhere
- OpenSSH (v6) ALLOW Anywhere (v6)
如您所见, 当前规则允许 SSH 流量通过, 但对其他服务的访问受到限制. 由于 GitLab 是一个 Web 应用程序, 我们应该允许 HTTP 访问. 因为我们将利用 GitLab 从 Let's Encrypt https://letsencrypt.org/ 请求和启用免费 TLS / SSL 证书的功能, 所以我们也允许 HTTPS 访问.
/etc/services 文件中提供了 HTTP 和 HTTPS 的端口映射协议, 因此我们可以按名称允许该流量. 如果您尚未启用 OpenSSH 流量, 则现在也应该允许该流量:
- sudo ufw allow http
- sudo ufw allow https
- sudo ufw allow OpenSSH
再次检查 ufw status; 您应该看到配置为至少这两个服务的访问权限:
- sudo ufw status
- Status: active
- To Action From
- -- ------ ----
- OpenSSH ALLOW Anywhere
- 80/tcp ALLOW Anywhere
- 443/tcp ALLOW Anywhere
- OpenSSH (v6) ALLOW Anywhere (v6)
- 80/tcp (v6) ALLOW Anywhere (v6)
- 443/tcp (v6) ALLOW Anywhere (v6)
上面的输出表明配置应用程序后可以访问 GitLab Web 界面.
第 4 步 - 编辑 GitLab 配置文件
在使用该应用程序之前, 需要更新配置文件并运行重新配置命令. 首先, 打开 GitLab 的配置文件:
sudo nano /etc/GitLab/GitLab.rb
顶部附近是 external_url 配置线. 更新它以匹配您的域. 更改 http 为 https 以便 GitLab 会自动将用户重定向到受 Let's 加密证书保护的站点:
- ##! For more details on configuring external_url see:
- ##! https://docs.GitLab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-GitLab
- external_url 'https://example.com'
接下来, 查找 letsencrypt['contact_emails'] 设置. 此设置定义了一个电子邮件地址列表, 如果您的域存在问题, Let 的加密项目可以用来与您联系. 取消注释并填写此内容是一个好主意, 以便您知道任何问题:
letsencrypt['contact_emails'] = ['sammy@example.com']
保存并关闭文件. 运行以下命令重新配置 GitLab:
sudo GitLab-ctl reconfigure
这将使用它可以找到的有关您的服务器的信息初始化 GitLab. 这是一个完全自动化的过程, 因此您不必回答任何提示. 该过程还将为您的域配置 Let's Encrypt 证书.
步骤 5 - 通过 Web 界面执行初始配置
在允许 GitLab 运行和访问的情况下, 我们可以通过 Web 界面执行应用程序的一些初始配置.
首次登录
在 Web 浏览器中访问 GitLab 服务器的域名:
https://example.com
在您第一次访问时, 您应该看到为管理帐户设置密码的初始提示:
在初始密码提示中, 提供并确认管理帐户的安全密码. 完成后单击 "更改密码" 按钮.
您将被重定向到传统的 GitLab 登录页面:
在这里, 您可以使用刚刚设置的密码登录. 凭证是:
用户名: root
密码:[您设置的密码]
在现有用户的字段中输入这些值, 然后单击 "登录" 按钮. 您将登录该应用程序并进入登录页面, 提示您开始添加项目:
您现在可以进行一些简单的更改, 以便按照您的方式设置 GitLab.
调整配置文件设置
在全新安装后您应该做的第一件事就是让您的个人资料更好. GitLab 选择了一些合理的默认值, 但是一旦开始使用该软件, 这些默认值通常都不合适.
要进行必要的修改, 请单击界面右上角的用户图标. 在显示的下拉菜单中, 选择设置:
您将进入设置的 "个人资料" 部分:
将名称和电子邮件地址从 "管理员" 和 " " 调整为更准确的名称. 您选择的名称将显示给其他用户, 而电子邮件将用于默认头像检测, 通知, 通过界面的 Git 操作等.
完成后, 单击底部的 "更新配置文件设置" 按钮:
确认电子邮件将发送至您提供的地址. 按照电子邮件中的说明确认您的帐户, 以便您可以开始使用 GitLab.
更改您的帐户名称
接下来, 单击左侧菜单栏中的 Account 项:
在这里, 您可以找到您的私有 API 令牌或配置双因素身份验证. 但是, 我们目前感兴趣的功能是更改用户名部分.
默认情况下, 第一个管理帐户的名称为 root. 由于这是一个已知的帐户名称, 因此将其更改为其他名称会更安全. 您仍将拥有管理权限; 唯一会改变的是名字. 用您首选的用户名替换 root:
单击 "更新用户名" 按钮进行更改:
下次登录 GitLab 时, 请记住使用新用户名.
在您的帐户中添加 SSH 密钥
在大多数情况下, 您需要使用带有 Git 的 SSH 密钥与 GitLab 项目进行交互. 为此, 您需要将 SSH 公钥添加到 GitLab 帐户.
如果您已在本地计算机上创建了 SSH 密钥对, 则通常可以通过键入以下内容来查看公钥:
cat ~/.SSH/id_rsa.pub
您应该看到一大块文本, 如下所示:
SSH-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
复制此文本并返回 GitLab Web 界面中的 "配置文件设置" 页面.
相反, 如果您收到类似这样的消息, 则表示您的计算机上尚未配置 SSH 密钥对:
cat: /home/sammy/.SSH/id_rsa.pub: No such file or directory
如果是这种情况, 您可以通过键入以下内容来创建 SSH 密钥对:
SSH-keygen
接受默认值并选择提供密码以在本地保护密钥:
- Generating public/private rsa key pair.
- Enter file in which to save the key (/home/sammy/.SSH/id_rsa):
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /home/sammy/.SSH/id_rsa.
- Your public key has been saved in /home/sammy/.SSH/id_rsa.pub.
- The key fingerprint is:
- SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@GitLab.docsthat.work
- The key's randomart image is:
- +---[RSA 2048]----+
- | ..%o==B|
- | *.E =.|
- | . ++= B |
- | ooo.o . |
| . S .o . .|
| . + .. . o|
- | + .o.o ..|
- | o .++o . |
- | oo=+ |
- +----[SHA256]-----+
完成此操作后, 您可以通过键入以下内容显示上述公钥:
- cat ~/.SSH/id_rsa.pub
- SSH-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
复制显示的文本块, 然后返回到 GitLab Web 界面中的配置文件设置.
单击左侧菜单中的 SSH Keys 项:
在提供的空间中粘贴从本地计算机复制的公钥. 为其指定一个描述性标题, 然后单击 "添加" 键按钮:
您现在应该能够从本地计算机管理 GitLab 项目和存储库, 而无需提供 GitLab 帐户凭据.
第 6 步 - 限制或禁用公共注册 (可选)
您可能已经注意到, 当您访问 GitLab 实例的登录页面时, 任何人都可以注册一个帐户. 如果您希望托管公共项目, 这可能是您想要的. 然而, 很多时候, 需要更多限制性设置.
首先, 点击页面顶部主菜单栏中的扳手图标, 进入管理区域:
在随后的页面上, 您可以看到整个 GitLab 实例的概述. 要调整设置, 请单击左侧菜单底部的 "设置" 项:
您将进入 GitLab 实例的全局设置. 在这里, 您可以调整一些影响新用户是否可以注册的设置及其访问级别.
禁用注册
如果您希望完全禁用注册 (您仍然可以为新用户手动创建帐户), 请向下滚动到 "注册限制" 部分.
取消选中已启用注册复选框:
向下滚动到底部, 然后单击 "保存更改" 按钮:
现在应该从 GitLab 登录页面中删除注册部分.
通过域限制注册
如果您将 GitLab 用作提供与域关联的电子邮件地址的组织的一部分, 则可以按域限制注册, 而不是完全禁用它们.
在 "注册限制" 部分中, 选择 "在注册时发送确认电子邮件" 框, 这样, 用户只有在确认其电子邮件后才能登录.
接下来, 将您的域或域添加到白名单域以进行注册, 每行一个域. 您可以使用星号 "*" 指定通配符域:
向下滚动到底部, 然后单击 "保存更改" 按钮:
现在应该从 GitLab 登录页面中删除注册部分.
限制项目创建
默认情况下, 新用户最多可以创建 10 个项目. 如果您希望允许来自外部的新用户进行可见性和参与, 但希望限制他们创建新项目的权限, 则可以在 "帐户和限制设置" 部分中执行此操作.
在内部, 您可以将默认项目限制更改为 0 以完全禁用新用户创建项目:
新用户仍可手动添加到项目中, 并可访问其他用户创建的内部或公共项目.
向下滚动到底部, 然后单击 "保存更改" 按钮:
新用户现在可以创建帐户, 但无法创建项目.
更新让我们加密证书
默认情况下, GitLab 的计划任务设置为每隔四天午夜后更新 Let 的加密证书, 确切的分钟基于您的 external_url. 您可以在 / etc/GitLab/GitLab.rb 文件中修改这些设置. 例如, 如果您想在 12:30 每 7 天更新一次, 可以按如下方式进行配置:
- letsencrypt['auto_renew_hour'] = "12"
- letsencrypt['auto_renew_minute'] = "30"
- letsencrypt['auto_renew_day_of_month'] = "*/7"
您还可以通过添加其他设置到 / etc/GitLab/GitLab.rb 来禁用自动续订:
letsencrypt['auto_renew'] = false
通过自动续订, 您无需担心服务中断.
结论
您现在应该在自己的服务器上托管一个正常工作的 GitLab 实例. 您可以开始导入或创建新项目, 并为您的团队配置适当的访问级别. GitLab 会定期添加功能并对其平台进行更新, 因此请务必查看项目主页以及时了解最新任何改进或重要通知.
来源: https://www.qcloud.com/developer/article/1349230