维护命令
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
以下命令可以在安装后运行。
获取服务状态
运行 sudo gitlab-ctl status 来查看每个极狐GitLab 组件的当前状态和运行时间。
输出将类似于以下内容:
plaintextrun: 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 格式,将类似于以下内容:
plaintext1{ 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 的配置。
查看进程日志
启动和停止
Linux 软件包安装和配置后,您的服务器有一个 runsvdir 服务目录进程,该进程通过 /etc/inittab 或 /etc/init/gitlab-runsvdir.conf Upstart 资源在启动时启动。您不需要直接处理 runsvdir 进程;您可以使用 gitlab-ctl 前端。
您可以使用以下命令启动、停止或重启极狐GitLab 及其所有组件。
shell1# 启动所有极狐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 错误。
也可以启动、停止或重启单个组件。
shellsudo gitlab-ctl restart sidekiq
Puma 确实支持几乎零停机时间的重载。可以通过以下方式触发:
shellsudo gitlab-ctl hup puma
您必须等待 hup 命令完成。这可能需要一些时间。在此完成之前,请将节点留在池外,并且不要在调用此命令的节点上重启服务。您还不能使用 Puma 重载来更新 Ruby 运行时。
Puma 有以下信号来控制应用程序行为:
| Signal | Puma |
|---|---|
| HUP | 重新打开定义的日志文件,或停止进程以强制重启 |
| INT | 优雅地停止请求处理 |
| USR1 | 分阶段重启工作进程,滚动重启,不重新加载配置 |
| USR2 | 重启工作进程并重新加载配置 |
| QUIT | 退出主进程 |
对于 Puma,gitlab-ctl hup puma 将发送一系列 SIGINT 和 SIGTERM (如果进程不重启)信号。Puma 一旦接收到 SIGINT 就会停止接受新的连接。它会完成所有正在运行的请求。然后 runit 重启服务。
调用 Rake 任务
要调用极狐GitLab Rake 任务,请使用 gitlab-rake。例如:
shellsudo 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 节点来执行初始步骤。
要轮换密钥:
-
验证数据库值是否可以解密,并记下显示的任何解密错误,或在继续之前解决它们。
-
推荐。提取您当前的 gitlab_rails 密钥。保存输出,因为稍后需要它:
shellsudo 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 -
将您当前的密钥文件移动到其他位置:
shellsudo mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.old -
重新配置极狐GitLab。极狐GitLab 将生成一个新的 /etc/gitlab/gitlab-secrets.json 文件,包含新的密钥值。
-
如果您提取了之前的 gitlab_rails 密钥,请编辑新的 /etc/gitlab/gitlab-secrets.json 文件,并用之前的密钥输出替换 gitlab_rails 下的键值对。
-
再次 重新配置极狐GitLab,以便应用对密钥文件的更改。
-
重启极狐GitLab,以确保所有服务都使用新的密钥。
-
如果您的极狐GitLab 环境中有多个节点,您必须将密钥复制到所有其他节点:
-
在所有其他节点上,将您当前的密钥文件移动到其他位置:
shellsudo mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.old -
从您的 Rails 节点复制新的 /etc/gitlab/gitlab-secrets.json 文件到所有其他极狐GitLab 节点。
-
在所有其他节点上,重新配置极狐GitLab 在每个节点上进行。
-
在所有其他节点上,重启极狐GitLab 在每个节点上进行,以确保所有服务都使用新的密钥。
-
在所有节点上,对 /etc/gitlab/gitlab-secrets.json 文件运行校验和匹配,以确认密钥匹配:
shellsudo md5sum /etc/gitlab/gitlab-secrets.json
-
-
验证数据库值是否可以解密。输出应与之前的执行相匹配。
-
确认极狐GitLab 工作正常。如果正常,可以安全地删除旧密钥。