维护命令
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 格式,类似于以下内容:
json1{ 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 ... 22 } 23 } 24}
极狐GitLab 重新配置后,您可以查看 /var/opt/gitlab 目录下对应服务的自动生成的 YAML 配置文件,以检查最新应用的配置。在上面的示例中,您可以检查 gitlab-rails 在 /var/opt/gitlab/gitlab-rails/etc/gitlab.yml 下的配置。
跟踪进程日志
请参阅 Linux 软件包安装的日志。
启动和停止
Linux 软件包安装并配置后,您的服务器会有一个 runit 服务目录(runsvdir)进程在运行,该进程通过 /etc/inittab 或 /etc/init/gitlab-runsvdir.conf Upstart 资源在启动时启动。您不应直接处理 runsvdir 进程;您可以使用 gitlab-ctl 前端来代替。
您可以使用以下命令启动、停止或重启极狐GitLab 及其所有组件。
shell1# Start all GitLab components 2sudo gitlab-ctl start 3 4# Stop all GitLab components 5sudo gitlab-ctl stop 6 7# Restart all GitLab components 8sudo gitlab-ctl restart 9 10# Restart all GitLab components except given services ... (e.g. 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 有以下信号来控制应用程序行为:
| 信号 | Puma |
|---|---|
| HUP | 重新打开定义的日志文件,或停止进程以强制重启 |
| INT | 优雅地停止请求处理 |
| USR1 | 分阶段重启 worker,滚动重启,不重新加载配置 |
| USR2 | 重启 worker 并重新加载配置 |
| 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# Superuser psql access to GitLab's database 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# Superuser psql access to GitLab's Geo tracking database sudo gitlab-geo-psql -d gitlabhq_geo_production
容器镜像仓库垃圾回收
容器镜像仓库会占用大量磁盘空间。为清理未使用的层,仓库包含一个 垃圾回收命令。
限制用户登录极狐GitLab
如果您需要临时限制用户登录极狐GitLab,可以使用 sudo gitlab-ctl deploy-page up。当用户访问您的极狐GitLab URL 时,他们将看到一个任意的 Deploy in progress 页面。
要移除该页面,只需运行 sudo gitlab-ctl deploy-page down。您还可以使用 sudo gitlab-ctl deploy-page status 检查部署页面的状态。
附带说明,如果您想限制登录极狐GitLab 并限制对项目的更改, 您可以 将项目设置为只读, 然后显示 Deploy in progress 页面。
轮换密钥文件
如果出于安全目的需要,您可以轮换 /etc/gitlab/gitlab-secrets.json 密钥文件。在此文件中:
- 不要轮换 gitlab_rails 密钥,因为它包含数据库加密密钥。如果轮换此密钥,您将看到与 密钥文件丢失时相同的行为。
- 您可以轮换所有其他密钥。
如果您的极狐GitLab 环境中有多个节点,请选择一个 Rails 节点来执行初始步骤。
要轮换密钥:
-
验证数据库值能否解密,并记录显示的任何解密错误,或在继续操作前解决这些错误。
-
推荐。提取您当前的 gitlab_rails 密钥,包括完整的数组值。 保存输出,因为稍后需要用到:
shellsudo /opt/gitlab/embedded/bin/ruby -rjson -e ' secrets = JSON.parse(File.read("/etc/gitlab/gitlab-secrets.json")) puts JSON.pretty_generate(secrets.fetch("gitlab_rails")) ' -
将您当前的密钥文件移动到其他位置:
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 -
将新的 /etc/gitlab/gitlab-secrets.json 文件从您的 Rails 节点复制到所有其他极狐GitLab 节点。
-
在所有其他节点上,重新配置极狐GitLab 在每个节点上进行。
-
在所有其他节点上,重启极狐GitLab 在每个 节点上进行,以确保所有服务都使用新的密钥。
-
在所有节点上,对 /etc/gitlab/gitlab-secrets.json 文件运行校验和匹配,以确认密钥匹配:
shellsudo md5sum /etc/gitlab/gitlab-secrets.json
-
-
验证数据库值可以使用当前密钥解密。输出应与之前的执行结果匹配。
-
确认极狐GitLab 按预期工作。如果是,则可以安全地删除旧的密钥。
为 gitlab-ctl 启用 bash 补全
Linux 软件包包含一个用于 gitlab-ctl 命令的 bash 补全脚本。要启用它,请在您的 shell 配置文件中加载该补全脚本。
补全脚本位于 /opt/gitlab/embedded/share/bash-completion/completions/gitlab-ctl-bash-completion。
要启用 bash 补全:
-
将以下行添加到您的 shell 配置文件(.bashrc、.bash_profile 或等效文件)中:
shellsource /opt/gitlab/embedded/share/bash-completion/completions/gitlab-ctl-bash-completion -
重新加载您的 shell 配置:
shellsource ~/.bashrc
启用后,您可以将 Tab 补全与 gitlab-ctl 命令一起使用:
shellgitlab-ctl <TAB>
补全脚本要求您的系统上安装了 bash-completion 软件包。如果尚未安装,您可以使用系统的软件包管理器进行安装:
- Debian/Ubuntu:sudo apt-get install bash-completion
- RHEL/CentOS:sudo yum install bash-completion
弃用
运行 sudo gitlab-ctl check-config 检查您的 Omnibus 配置中是否有将在未来极狐GitLab 版本中移除的标志。
该命令支持以下参数:
- --version <Version>:您要检查配置的目标极狐GitLab 版本。
- --no-fail:即使发现任何弃用/移除项,也不以失败代码退出。
当您升级极狐GitLab 时,此配置检查会自动运行。如果您希望在升级期间跳过此检查,请在 /etc/gitlab/skip-fail-config-check 创建一个文件。