在 Lightsail 上设置和配置 GitLab CE 实例 - Amazon Lightsail

在 Lightsail 上设置和配置 GitLab CE 实例

以下是在 Amazon Lightsail 上启动并运行 GitLab CE 实例后要开始使用时应采取的几个步骤:

内容

步骤 1:阅读 Bitnami 文档

阅读 Bitnami 文档以了解如何配置 GitLab CE 应用程序。有关更多信息,请参阅 Bitnami 为 AWS Cloud 打包的 GitLab CE

步骤 2:获取默认应用程序密码以访问 GitLab CE 管理区域

完成以下程序以获取访问 GitLab CE 网站的管理区域所需的默认应用程序密码。有关更多信息,请参阅在 Amazon Lightsail 中获取 Bitnami 实例的应用程序用户名和密码

  1. 在实例管理页面上的 Connect(连接)选项卡下,选择使用 SSH 连接

    在 Lightsail 控制台中使用 SSH 连接
  2. 连接后,请输入以下命令来获取应用程序密码:

    cat $HOME/bitnami_application_password

    您应该会看到与以下示例类似的响应,其中包含默认应用程序密码:

    Bitnami 默认应用程序密码。

步骤 3:将静态 IP 地址附加到实例

在您首次创建实例时分配给实例的公有 IP 地址会在您每次停止和启动实例时发生更改。您应为实例创建和附加静态 IP 地址,以确保其公有 IP 地址不变。之后当您将注册域名(如 example.com)指向实例时,无需在每次停止和重启实例时都更新域的 DNS 记录。您可以将静态 IP 附加到实例。

在实例管理页面上的联网选项卡下,选择创建静态 IP附加静态 IP(如果您之前创建了可附加到实例的静态 IP),然后按照页面上的说明操作。有关更多信息,请参阅创建静态 IP 并将其附加到实例

将静态 IP 地址附加到 Lightsail 控制台

将新的静态 IP 地址附加到实例后,您必须完成以下步骤,以使应用程序知道新的静态 IP 地址。

  1. 记下实例的静态 IP 地址。它列在实例管理页面的标题部分。

    Lightsail 实例的公有或静态 IP 地址
  2. 在实例管理页面上的 Connect (连接) 选项卡下,选择使用 SSH 连接

    使用 SSH 连接到您的实例
  3. 连接后,请输入以下命令。将 <StaticIP> 替换为实例的新静态 IP 地址。

    sudo /opt/bitnami/configure_app_domain --domain <StaticIP>

    示例

    sudo /opt/bitnami/configure_app_domain --domain 203.0.113.0

    您应看到类似于以下示例的响应。现在,实例上的应用程序应该识别到了新的静态 IP 地址。

    域配置工具的结果

步骤 4:登录到 Gitlab CE 网站的管理区域

现在您已有默认用户密码,请导航到 GitLab CE 网站的主页,然后登录管理区域。登录后,您可以开始自定义网站并进行管理更改。有关您可以在 GitLab CE 中执行的操作的更多信息,请参阅本指南后面部分中的步骤 7:阅读 GitLab CE 文档并继续配置网站一节。

  1. 在实例管理页面上的 Connect(连接)选项卡下,记下实例的公有 IP 地址。公有 IP 地址也显示在实例管理页面的标题部分。

    实例的公有 IP 地址
  2. 浏览到实例的公有 IP 地址,例如,转到 http://203.0.113.0

    应该会出现您的 Gitlab CE 网站的主页。您可能还会看到一个浏览器警告,指出您的连接不是私有的、不是安全的或存在安全风险。发生这种情况的原因是您的 GitLab CE 实例尚未应用 SSL/TLS 证书。在浏览器窗口中,选择高级详细信息更多信息以查看可用的选项。然后选择继续连接该网站,即使它不是私有或安全的。

  3. 使用之前在本指南中检索到的默认用户名(root)和默认密码登录。

    此时将显示 Gitlab CE 管理控制面板。

    Gitlab CE 管理控制面板

步骤 5:将注册域名的流量路由到 GitLab CE 网站

要将注册域名(如 example.com)的流量路由到 GitLab CE 网站,您需要向域的域名系统(DNS)添加记录。DNS 记录通常由您注册域的注册商进行托管和管理。但是,我们建议您将域的 DNS 记录管理工作转移到 Lightsail,这样您就可以使用 Lightsail 控制台进行管理。

在 Lightsail 控制台主页上的联网选项卡下,选择创建 DNS 区域,然后按照页面上的说明操作。有关更多信息,请参阅创建 DNS 区域以管理域的 DNS 记录

在 Lightsail 控制台中创建一个 DNS 区域

在您的域名将流量路由到实例之后,您必须完成以下程序才能让 GitLab CE 知道域名。

  1. 在实例管理页面上的 Connect (连接) 选项卡下,选择使用 SSH 连接

    使用 SSH 连接到您的实例
  2. 连接后,请输入以下命令。将 <DomainName> 替换为将流量路由到实例的域名。

    sudo /opt/bitnami/configure_app_domain --domain <DomainName>

    示例

    sudo /opt/bitnami/configure_app_domain --domain example.com

    您应看到类似于以下示例的响应。现在,您的 GitLab CE 实例应该识别到了域名。

    域配置工具的结果

    如果此命令失败,您可能是在使用旧版本的 GitLab CE 实例。尝试运行以下命令。将 <DomainName> 替换为将流量路由到实例的域名。

    cd /opt/bitnami/apps/gitlab sudo ./bnconfig --machine_hostname <DomainName>

    运行这些命令后,输入以下命令,以防止 bnconfig 工具在服务器每次重启时自动运行。

    sudo mv bnconfig bnconfig.disabled

接下来,您应该生成并配置 SSL/TLS 证书,以启用 GitLab CE 网站的 HTTPS 连接。有关更多信息,请继续到本指南的下一节步骤 6:配置 GitLab CE 网站的 HTTPS

步骤 6:配置 GitLab CE 网站的 HTTPS

完成以下程序以在 GitLab CE 网站上配置 HTTPS。这些步骤向您展示如何使用 Lego 客户端,这是一个命令行工具,用于请求 Let's Encrypt SSL/TLS 证书。

重要

在开始此过程之前,请确保对域进行配置,以将流量路由到 GitLab CE 实例。否则,SSL/TLS 证书验证过程将失败。要路由注册域名的流量,您需要向域的 DNS 添加一条记录。DNS 记录通常由您注册域的注册商进行托管和管理。但是,我们建议您将域的 DNS 记录管理工作转移到 Lightsail,这样您就可以使用 Lightsail 控制台进行管理。

在 Lightsail 控制台主页上的Domains & DNS(域和 DNS)选项卡下,选择 Create DNS zone(创建 DNS 区域),然后按照页面上的说明操作。有关更多信息,请参阅在 Lightsail 中创建 DNS 区域以管理域的 DNS 记录

  1. 在实例管理页面上的 Connect(连接)选项卡下,选择使用 SSH 连接

    在 Lightsail 控制台中使用 SSH 连接
  2. 连接后,请输入以下命令以将目录更改为临时(/tmp)目录。

    cd /tmp
  3. 输入以下命令,下载 Lego 客户端的最新版本。此命令将下载磁带存档(tar)文件。

    curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
  4. 输入以下命令以从 tar 文件中提取文件。将 X.Y.Z 替换为您已下载的 Lego 客户端的版本。

    tar xf lego_vX.Y.Z_linux_amd64.tar.gz

    示例

    tar xf lego_v4.7.0_linux_amd64.tar.gz
  5. 输入以下命令以创建您会将 Lego 客户端文件移动到的 /opt/bitnami/letsencrypt 目录。

    sudo mkdir -p /opt/bitnami/letsencrypt
  6. 输入以下命令以将 Lego 客户端文件移动到的您创建的目录中。

    sudo mv lego /opt/bitnami/letsencrypt/lego
  7. 逐个输入以下命令以停止在您的实例上运行的应用程序服务。

    sudo service bitnami stop sudo service gitlab-runsvdir stop
  8. 输入以下命令以使用 Lego 客户端请求 Let's Encrypt SSL/TLS 证书。

    sudo /opt/bitnami/letsencrypt/lego --tls --email="EmailAddress" --domains="RootDomain" --domains="WwwSubDomain" --path="/opt/bitnami/letsencrypt" run

    在该命令中,将以下示例值替换为自己的值:

    • EmailAddress – 用于注册通知的电子邮件地址。

    • RootDomain – 将流量路由到 GitLab CE 网站的主要根域(例如,example.com)。

    • WwwSubDomain – 将流量路由到 GitLab CE 网站的主要根域(例如,www.example.com)的 www 子域。

      您可以通过在命令中指定其他 --domains 参数来为证书指定多个域。当您指定多个域时,Lego 会创建一个使用者替代名称(SAN)证书,这会导致只有一个证书对您指定的所有域有效。列表中的第一个域作为证书的“CommonName”添加,其余域将作为“DNSNames”添加到证书内的 SAN 扩展中。

    示例

    sudo /opt/bitnami/letsencrypt/lego --tls --email="user@example.com" --domains="example.com" --domains="www.example.com" --path="/opt/bitnami/letsencrypt" run
  9. 在提示时,按下 YEnter 以接受服务条款。

    您应看到类似于以下示例的响应。

    Lego 客户端成功响应证书请求

    如果成功,一组证书将会保存到 /opt/bitnami/letsencrypt/certificates 目录。该组证书包括服务器证书文件(例如,example.com.crt)和服务器证书密钥文件(例如,example.com.key)。

  10. 逐个输入以下命令以重命名实例上的现有证书。稍后,您将用新的 Let's Encrypt 证书替换这些现有证书。

    sudo mv /etc/gitlab/ssl/server.crt /etc/gitlab/ssl/server.crt.old sudo mv /etc/gitlab/ssl/server.key /etc/gitlab/ssl/server.key.old sudo mv /etc/gitlab/ssl/server.csr /etc/gitlab/ssl/server.csr.old
  11. 逐个输入以下命令,在 /etc/gitlab/ssl 目录中为您的新 Let's Encript 证书创建符号链接,该目录是 GitLab CE 实例上的默认证书目录。

    sudo ln -sf /opt/bitnami/letsencrypt/certificates/Domain.key /etc/gitlab/ssl/server.key sudo ln -sf /opt/bitnami/letsencrypt/certificates/Domain.crt /etc/gitlab/ssl/server.crt

    在命令中,将 Domain 替换为您在请求 Let's Encrypt 证书时指定的主要根域。

    示例

    sudo ln -sf /opt/bitnami/letsencrypt/certificates/example.com.key /etc/gitlab/ssl/server.key sudo ln -sf /opt/bitnami/letsencrypt/certificates/example.com.crt /etc/gitlab/ssl/server.crt
  12. 逐个输入以下命令,以在您将其移动到的目录中更改新的 Let's Encrypt 证书的权限。

    sudo chown root:root /etc/gitlab/ssl/server* sudo chmod 600 /etc/gitlab/ssl/server*
  13. 输入以下命令以在 GitLab CE 实例上重新启动应用程序服务。

    sudo service bitnami start

下次使用配置的域浏览到 GitLab CE 网站时,您应该会看到它重定向到 HTTPS 连接。请注意,GitLab CE 实例可能需要一个小时才能识别新证书。如果您的 GitLab CE 网站拒绝连接,请停止并启动实例,然后重试。

步骤 7:阅读 GitLab CE 文档并继续配置网站

阅读 GitLab CE 文档,以了解如何管理和自定义网站。有关更多信息,请参阅 GitLab 文档

步骤 8:创建实例的快照

按照您所需的方式配置 GitLab CE 网站后,创建实例的定期快照以进行备份。您可以手动创建快照,或者启用自动快照来让 Lightsail 为您创建每日快照。如果实例出现错误,则可使用快照来创建新的替代实例。有关更多信息,请参阅快照

在实例管理页面的快照选项卡下,选择创建快照或选择启用自动快照。

在 Lightsail 控制台中创建实例快照

有关更多信息,请参阅在 Amazon Lightsail 中创建 Linux 或 Unix 实例的快照在 Amazon Lightsail 中启用或禁用实例或磁盘的自动快照