维护命令

  • Tier: 基础版,专业版,旗舰版
  • Offering: 私有化部署

以下命令可以在安装后运行。

获取服务状态#

运行 sudo gitlab-ctl status 来查看每个极狐GitLab 组件的当前状态和运行时间。

输出将类似于以下内容:

plaintext
run: nginx: (pid 972) 7s; run: log: (pid 971) 7s run: postgresql: (pid 962) 7s; run: log: (pid 959) 7s run: redis: (pid 964) 7s; run: log: (pid 963) 7s run: sidekiq: (pid 967) 7s; run: log: (pid 966) 7s run: puma: (pid 961) 7s; run: log: (pid 960) 7s

作为演示,前面示例的第一行可以解释为:

  • Nginx 是进程名称。
  • 972 是进程标识符。
  • NGINX 已经运行了 7 秒钟(7s)。
  • log 表示附加到前面的进程的 svlogd 日志进程。
  • 971 是日志进程的进程标识符。
  • 日志进程已经运行了 7 秒钟(7s)。

显示配置#

运行 sudo gitlab-ctl show-config 来显示由 gitlab-ctl reconfigure 生成的配置。输出为 JSON 格式,将类似于以下内容:

plaintext
1{ 2 "gitlab": { 3 "gitlab_sshd": { 4 5 }, 6 "gitlab_shell": { 7 "secret_token": "<SECRET_TOKEN>", 8 "auth_file": "/var/opt/gitlab/.ssh/authorized_keys" 9 }, 10 "gitlab_rails": { 11 "smtp_address": "smtp.example.com", 12 "smtp_port": 587, 13 "smtp_user_name": "user@example.com", 14 "smtp_password": "<SMTP_PASSWORD>", 15 "smtp_domain": "smtp.example.com", 16 "smtp_authentication": "login", 17 "monitoring_whitelist": [ 18 "127.0.0.0/8", 19 "::1/128", 20 ], 21 ...

极狐GitLab 重新配置后,您可以在 /var/opt/gitlab 目录下查看自动生成的 YAML 配置文件,以检查应用的最新配置。在上述示例中,您可以在 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml 下检查 gitlab-rails 的配置。

查看进程日志#

请参阅 settings/logs.md.

启动和停止#

Linux 软件包安装和配置后,您的服务器有一个 runsvdir 服务目录进程,该进程通过 /etc/inittab/etc/init/gitlab-runsvdir.conf Upstart 资源在启动时启动。您不需要直接处理 runsvdir 进程;您可以使用 gitlab-ctl 前端。

您可以使用以下命令启动、停止或重启极狐GitLab 及其所有组件。

shell
1# 启动所有极狐GitLab 组件 2sudo gitlab-ctl start 3 4# 停止所有极狐GitLab 组件 5sudo gitlab-ctl stop 6 7# 重启所有极狐GitLab 组件 8sudo gitlab-ctl restart 9 10# 重启除指定服务以外的所有极狐GitLab 组件...(例如 gitaly,redis) 11sudo gitlab-ctl restart-except gitaly redis

注意,在单核服务器上重启 Puma 和 Sidekiq 可能需要长达一分钟的时间。在 Puma 再次启动之前,您的极狐GitLab 实例会出现 502 错误。

也可以启动、停止或重启单个组件。

shell
sudo gitlab-ctl restart sidekiq

Puma 确实支持几乎零停机时间的重载。可以通过以下方式触发:

shell
sudo gitlab-ctl hup puma

您必须等待 hup 命令完成。这可能需要一些时间。在此完成之前,请将节点留在池外,并且不要在调用此命令的节点上重启服务。您还不能使用 Puma 重载来更新 Ruby 运行时。

Puma 有以下信号来控制应用程序行为:

SignalPuma
HUP重新打开定义的日志文件,或停止进程以强制重启
INT优雅地停止请求处理
USR1分阶段重启工作进程,滚动重启,不重新加载配置
USR2重启工作进程并重新加载配置
QUIT退出主进程

对于 Puma,gitlab-ctl hup puma 将发送一系列 SIGINTSIGTERM (如果进程不重启)信号。Puma 一旦接收到 SIGINT 就会停止接受新的连接。它会完成所有正在运行的请求。然后 runit 重启服务。

调用 Rake 任务#

要调用极狐GitLab Rake 任务,请使用 gitlab-rake。例如:

shell
sudo gitlab-rake gitlab:check

如果您是 git 用户,请省略 sudo

与传统极狐GitLab 安装不同,您无需更改用户或 RAILS_ENV 环境变量;这些都由 gitlab-rake 包装脚本处理。

启动 Rails 控制台会话#

有关详细信息,请参阅 Rails 控制台

启动 PostgreSQL 超级用户 psql 会话#

如果您需要访问捆绑的 PostgreSQL 服务的超级用户,您可以使用 gitlab-psql 命令。它接受与常规 psql 命令相同的参数。

shell
# 超级用户 psql 访问极狐GitLab 数据库 sudo gitlab-psql -d gitlabhq_production

这只能在您至少运行过一次 gitlab-ctl reconfigure 后才有效。gitlab-psql 命令不能用于连接到远程 PostgreSQL 服务器,也不能连接到本地非 Linux 软件包的 PostgreSQL 服务器。

启动 Geo 跟踪数据库中的 PostgreSQL 超级用户 psql 会话#

类似于前面的命令,如果您需要访问捆绑的 Geo 跟踪数据库(geo-postgresql)的超级用户,您可以使用 gitlab-geo-psql。它接受与常规 psql 命令相同的参数。对于 HA,请参阅:检查配置

shell
# 超级用户 psql 访问极狐GitLab 的 Geo 跟踪数据库 sudo gitlab-geo-psql -d gitlabhq_geo_production

容器注册表垃圾收集#

容器注册表可能会占用大量磁盘空间。为了清理未使用的层,注册表包含一个 垃圾收集命令

限制用户登录极狐GitLab#

如果您需要暂时限制用户登录极狐GitLab,可以使用 sudo gitlab-ctl deploy-page up。当用户访问您的极狐GitLab URL 时,他们将看到一个任意的 正在部署 页面。

要移除该页面,您只需运行 sudo gitlab-ctl deploy-page down。您还可以使用 sudo gitlab-ctl deploy-page status 检查部署页面的状态。

作为附带说明,如果您想限制登录极狐GitLab 并限制对项目的更改,可以 将项目设置为只读,然后放置 正在部署 页面。

轮换密钥文件#

如果出于安全目的需要,您可以轮换 /etc/gitlab/gitlab-secrets.json 密钥文件。在此文件中:

  • 不要轮换 gitlab_rails 密钥,因为它包含数据库加密密钥。如果此密钥被轮换,您会看到与 密钥文件丢失时相同的行为。
  • 您可以轮换所有其他密钥。

如果您的极狐GitLab 环境中有多个节点,请选择其中一个 Rails 节点来执行初始步骤。

要轮换密钥:

  1. 验证数据库值是否可以解密,并记下显示的任何解密错误,或在继续之前解决它们。

  2. 推荐。提取您当前的 gitlab_rails 密钥。保存输出,因为稍后需要它:

    shell
    sudo grep "secret_key_base\|db_key_base\|otp_key_base\|encrypted_settings_key_base\|openid_connect_signing_key\|active_record_encryption_primary_key\|active_record_encryption_deterministic_key\|active_record_encryption_key_derivation_salt" /etc/gitlab/gitlab-secrets.json
  3. 将您当前的密钥文件移动到其他位置:

    shell
    sudo mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.old
  4. 重新配置极狐GitLab。极狐GitLab 将生成一个新的 /etc/gitlab/gitlab-secrets.json 文件,包含新的密钥值。

  5. 如果您提取了之前的 gitlab_rails 密钥,请编辑新的 /etc/gitlab/gitlab-secrets.json 文件,并用之前的密钥输出替换 gitlab_rails 下的键值对。

  6. 再次 重新配置极狐GitLab,以便应用对密钥文件的更改。

  7. 重启极狐GitLab,以确保所有服务都使用新的密钥。

  8. 如果您的极狐GitLab 环境中有多个节点,您必须将密钥复制到所有其他节点:

    1. 在所有其他节点上,将您当前的密钥文件移动到其他位置:

      shell
      sudo mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.old
    2. 从您的 Rails 节点复制新的 /etc/gitlab/gitlab-secrets.json 文件到所有其他极狐GitLab 节点。

    3. 在所有其他节点上,重新配置极狐GitLab 在每个节点上进行。

    4. 在所有其他节点上,重启极狐GitLab 在每个节点上进行,以确保所有服务都使用新的密钥。

    5. 在所有节点上,对 /etc/gitlab/gitlab-secrets.json 文件运行校验和匹配,以确认密钥匹配:

      shell
      sudo md5sum /etc/gitlab/gitlab-secrets.json
  9. 验证数据库值是否可以解密。输出应与之前的执行相匹配。

  10. 确认极狐GitLab 工作正常。如果正常,可以安全地删除旧密钥。