介绍
GitLab 是一款开源应用程序,主要用于托管 Git 代码仓库,并提供问题跟踪等其他开发相关功能。它采用自有基础设施进行托管,因此可以灵活部署为开发团队的内部代码仓库、与用户公开沟通的平台,或供贡献者托管其项目的平台。.
GitLab 项目允许您通过安装机制在您的硬件上创建至少一个 GitLab 实例。本指南将教您如何在 Ubuntu 服务器上安装和配置 GitLab 社区版。.
先决条件
- 一台运行Ubuntu系统的服务器,使用具有权限的非root用户。
sudo并启用防火墙。. - 你的CPU有4个核心
- 4 GB 内存
- 指向您服务器的域名
步骤 1 – 安装依赖项
在安装 GitLab 之前,务必先安装安装过程中以及后续运行中需要用到的软件。所需的软件可以从 Ubuntu 的默认软件包仓库安装。.
首先,刷新本地软件包列表:
sudo apt update然后输入以下命令安装依赖项:
sudo apt install ca-certificates curl openssh-server postfix tzdata perl您可能已经安装了部分此类软件。要安装 Postfix,请在提示时选择“Internet 站点”。在下一页中,输入服务器的域名以配置系统发送邮件的方式。.
现在依赖项已经安装完毕,可以开始安装 GitLab 了。.
步骤 2 – 安装 GitLab
尽管存在一些依赖项,您仍然可以安装 GitLab。此过程使用安装脚本来配置您的系统以连接 GitLab 代码仓库。.
首先,进入 /tmp 文件夹:
cd /tmp然后下载安装脚本:
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh请随意查看下载的脚本,确保您了解其功能。您也可以在 GitLab 安装说明中找到该脚本的托管版本:
less /tmp/script.deb.sh确认脚本安全后,运行安装程序:
sudo bash /tmp/script.deb.sh该脚本会将您的服务器配置为使用 GitLab 维护的仓库。这样,您就可以使用与管理系统上其他软件包相同的软件包管理工具来管理 GitLab。配置完成后,您可以使用 apt 安装实际的 GitLab 应用程序:
sudo apt install gitlab-ce这将在您的系统上安装必要的组件,可能需要一些时间才能完成。.
步骤 3 – 设置防火墙规则
配置 GitLab 之前,您需要确保防火墙规则足够宽松,允许网络流量通过。如果您已按照先决条件中的链接指南操作,则 ufw 防火墙应该已经启用。.
运行以下命令查看当前活动防火墙的状态:
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)当前规则允许 SSH 流量通过,但限制了对其他服务的访问。由于 GitLab 是一个 Web 应用程序,您必须允许 HTTP 访问。鉴于您将使用 GitLab 从 Let's Encrypt 申请并激活免费 TLS/SSL 证书的功能,也请允许 HTTPS 访问。.
HTTP 和 HTTPS 的端口映射协议在 /etc/services 文件中可用,因此您可以按名称允许这些流量。如果您尚未启用 OpenSSH 流量,则需要允许该流量:
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH您可以再次检查ufw状态,以确保您至少可以访问以下两项服务:
sudo ufw statusOutput
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 配置文件。本示例使用 nano 编辑器:
sudo nano /etc/gitlab/gitlab.rb找到 external_url 配置行。将其更新为您的域名,并确保将 http 更改为 https,以便自动将用户重定向到受 Let's Encrypt 证书保护的网站:
...
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
##!
##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'https://your_domain'
...接下来,找到 `letsencrypt['contact_emails']` 设置。如果您使用的是 nano 编辑器,可以按 CTRL+W 启用搜索功能。在命令行中输入 `letsencrypt['contact_emails']`,然后按 Enter 键。此设置定义了 Let's Encrypt 项目可以在您的域名出现问题时联系您的电子邮件地址列表。建议您取消注释并填写此设置,以便在出现任何问题时收到通知:
letsencrypt['contact_emails'] = ['[email protected]']
修改完成后,保存并关闭文件。如果您使用的是 nano 编辑器,可以通过按 Ctrl+C 来完成此操作。 CTRL+X, 然后 是 进而 进入 去做。.
运行以下命令重新配置 GitLab:
sudo gitlab-ctl reconfigure这将使用 GitLab 获取的服务器信息初始化 GitLab。这是一个完全自动化的过程,因此您无需响应任何请求。此过程还会为您的域名配置 Let's Encrypt 证书。.
步骤 5 – 通过 Web 界面执行初始配置
GitLab 运行后,您可以通过 Web 界面对应用程序进行初始配置。.
首次登录
在您的网络浏览器中访问您的 GitLab 服务器域名:
https://your_domain首次访问时,您将看到登录页面:
GitLab 将为您生成一个安全的初始密码。该密码将存储在一个您可以以管理员 sudo 用户身份访问的文件夹中:
sudo nano /etc/gitlab/initial_root_password# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the firs$
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: YOUR_PASSWORD
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.在登录页面,输入以下内容:
- 用户名:root
- 密码:[/etc/gitlab/initial_root_password 中列出的密码]
在相应字段中输入这些值,然后点击“登录”按钮。您将登录到应用程序并被重定向到一个引导页面,该页面会提示您开始添加项目:
现在您可以对 GitLab 实例进行微调。.
更新您的密码
登录后,您应该做的第一件事就是更改密码。为此,请点击导航栏右上角的图标,然后选择“编辑个人资料”:
然后您将被引导至用户设置页面。在左侧导航栏中,选择“密码”将您生成的 GitLab 密码更改为安全密码,更新完成后,单击“保存密码”按钮:
您将被重定向到登录页面,并收到密码已更改的通知。请输入新密码以重新登录您的 GitLab 实例:

调整您的个人资料设置
GitLab 提供了一些合理的默认设置,但这些设置通常在您开始使用该软件后就不再适用。要进行必要的更改,请点击导航栏右上角的用户图标,然后选择“编辑个人资料”。.
您可以将名称和电子邮件地址从«Administrator»和«[email protected]»更改为更具体的名称和电子邮件地址。您选择的名称将显示给其他用户,而电子邮件地址将用于识别默认头像、通知、通过界面执行的 Git 操作等:
更新完成后,点击底部的“更新个人资料设置”按钮。系统会提示您输入密码以确认更改。确认邮件将发送至您提供的邮箱地址。请按照邮件中的说明验证您的帐户,以便将其与 GitLab 配合使用。.
更改帐户名称
然后,在左侧导航栏中选择“帐户”:
您可以在这里启用双因素身份验证并更改用户名。默认情况下,第一个管理员帐户名为 root。由于这是一个众所周知的帐户名,因此将其更改为其他名称更为安全。您仍然拥有管理员权限。唯一更改的是帐户名称。请将 root 替换为您想要的用户名:
点击“更新用户名”按钮进行更改。之后系统会要求您确认更改。下次登录 GitLab 时,请记得使用您的新用户名。.
向您的帐户添加 SSH 密钥
您可以通过 Git 启用 SSH 密钥来与 GitLab 项目进行交互。为此,您需要将您的 SSH 公钥添加到您的 GitLab 帐户。.
在左侧导航栏中,选择 SSH 密钥:
如果您已经在本地计算机上创建了 SSH 密钥对,则可以通过输入以下命令查看公钥:
cat ~/.ssh/id_rsa.pubOutput
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop复制此文本并将其粘贴到 GitLab 实例中的“密钥”文本框中。如果您收到其他消息,则说明您尚未在计算机上配置 SSH 密钥对:
Output
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory如果需要,您可以通过输入以下命令生成 SSH 密钥对:
[environment local]
ssh-keygen接受默认设置,并可选择提供密码以保护本地密钥:
Output
[environment local]
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 [email protected]
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.pubOutput
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop将此文本块粘贴到 GitLab 实例中的“密钥”文本框中。为其指定一个描述性标题,然后单击“添加密钥”按钮。.
现在,您无需提供 GitLab 帐户凭据,即可从本地计算机管理您的 GitLab 项目和存储库。.
第六步——限制或禁用公开注册
按照您目前的设置,任何人在访问您的 GitLab 示例登录页面时都可以注册账号。如果您想要托管一个公共项目,这可能正是您所需要的。然而,很多时候,功能更有限的设置才是更理想的选择。.
首先,点击顶部导航栏中的汉堡菜单,然后从下拉菜单中选择“管理”,即可进入管理部分:
从左侧导航栏中选择“设置”:
您将被引导至 GitLab 实例的全局设置页面。在这里,您可以配置多项设置,这些设置会影响新用户的注册方式及其访问权限。.
禁用注册
如果要完全禁用注册,请转到“注册限制”部分,然后按“展开”查看选项。.
然后取消勾选“启用注册”选项:
修改完成后,请记得点击“保存更改”按钮。GitLab 首页的注册部分已移除。.
限制域名注册
如果您所在的组织使用 GitLab,并且提供的电子邮件地址与某个域名关联,您可以按域名限制注册,而不是完全禁用注册功能。在“注册限制”部分,选中“注册时发送确认邮件”复选框,这样用户只有在验证电子邮件地址后才能登录。.
接下来,将您的域名添加到注册白名单中,每行添加一个域名。您可以使用星号“*”指定通配符域名:
完成后,点击“保存更改”按钮。注册部分现已从 GitLab 登录页面移除。.
限制项目创建
默认情况下,新用户最多可以创建 10 个项目。如果您希望允许外部新用户查看和贡献项目,但限制他们创建新项目的权限,您可以在“帐户设置和限制”部分进行设置。.
在设置中,您可以将默认项目限制更改为 0,以完全禁止新用户创建项目:
新用户仍然可以手动添加到项目中,并访问其他用户创建的内部或公共项目。更新后,请记得点击“保存更改”按钮。新用户现在可以创建帐户,但无法创建项目。.
续订 Let's Encrypt 证书
默认情况下,GitLab 会设置一个定时任务,每隔四天在午夜之后,根据您提供的 external_url 精确到分钟地续订 Let's Encrypt 证书。您可以在 /etc/gitlab/gitlab.rb 文件中更改此设置。.
例如,如果您希望每隔七天在 12:30 续订,您可以进行相应配置。首先,请打开配置文件:
sudo nano /etc/gitlab/gitlab.rb然后找到文件中的以下几行,删除 # 并替换为以下内容:
...
################################################################################
# Let's Encrypt integration
################################################################################
# letsencrypt['enable'] = nil
letsencrypt['contact_emails'] = ['sammy@digitalocean'] # This should be an array of email addresses to add as contacts
# letsencrypt['group'] = 'root'
# letsencrypt['key_size'] = 2048
# letsencrypt['owner'] = 'root'
# letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
# See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
...您还可以通过将 letsencrypt['auto_renew'] 设置为 false 来禁用自动续订:
...
letsencrypt['auto_renew'] = false
...自动续订,您无需担心服务中断。.
结果
您现在已在服务器上托管了一个 GitLab 实例。您可以开始导入或创建新项目,并为团队配置合适的访问级别。GitLab 会不断为其平台添加功能和更新,因此请务必查看项目主页,以便及时了解任何重要进展或公告。.























