- 获取服务状态
- 跟踪进程日志
- 启动和停止
- 调用 Rake 任务
- 启动 Rails 控制台会话
-
启动 PostgreSQL 超级用户
psql
会话 - Container Registry 垃圾回收
- 限制用户登录极狐GitLab
- 更新密钥文件
维护命令
安装后可以运行以下命令。
获取服务状态
运行 sudo gitlab-ctl status
,查看每个组件的当前状态和正常运行时间。
输出将类似于以下内容:
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
)。
跟踪进程日志
查看设置日志文档。
启动和停止
Omnibus GitLab 安装和配置后,您的服务器将运行一个 runit 服务目录(runsvdir
)进程,该进程在启动时通过 /etc/inittab
或 /etc/init/gitlab-runsvdir.conf
启动。不要直接处理 runsvdir
进程;您可以改用 gitlab-ctl
前端。
您可以使用以下命令启动、停止或重新启动极狐GitLab 及其所有组件。
# Start all GitLab components
sudo gitlab-ctl start
# Stop all GitLab components
sudo gitlab-ctl stop
# Restart all GitLab components
sudo gitlab-ctl restart
# Restart all GitLab components except given services ... (e.g. gitaly, redis)
sudo gitlab-ctl restart-except gitaly redis
请注意,在单核服务器上,重启 Puma 和 Sidekiq 可能需要长达一分钟的时间。您的极狐GitLab 实例将出现 502 错误,直到 Puma 再次启动。
您也可以启动、停止或重新启动单个组件。
sudo gitlab-ctl restart sidekiq
Puma 确实支持几乎零停机的重新加载。可以按如下方式触发:
sudo gitlab-ctl hup puma
请注意,您必须等待 hup
命令完成,这可能需要一些时间。将该节点从池中移出,并且在完成之前不要在调用该节点的节点上重新启动服务。您也无法使用 Puma 重新加载来更新 Ruby 运行时。
Puma 有以下 signal 来控制应用程序行为:
Signal | Puma |
---|---|
HUP |
重新打开定义的日志文件,或停止进程以强制重启 |
INT |
优雅地停止请求处理 |
USR1 |
分阶段重启 workers,滚动重启,无需重新加载配置 |
USR2 |
重新启动 workers 并重新加载配置 |
QUIT |
退出主进程 |
对于 Puma,gitlab-ctl hup puma
将发送一系列 SIGINT
和 SIGTERM
(如果进程没有重新启动)signal。一旦收到 SIGINT
,Puma 就会停止接受新连接。它完成所有正在运行的请求,然后 runit
重新启动服务。
调用 Rake 任务
要调用极狐GitLab Rake 任务,请使用 gitlab-rake
。例如:
sudo gitlab-rake gitlab:check
如果您是 git
用户,请省略 sudo
。
与传统的极狐GitLab 安装相反,无需更改用户或 RAILS_ENV
环境变量;由 gitlab-rake
包装脚本处理。
启动 Rails 控制台会话
获取更多信息,查看 Rails 控制台。
启动 PostgreSQL 超级用户 psql
会话
如果您需要超级用户访问捆绑的 PostgreSQL 服务,您可以使用 gitlab-psql
命令。它采用与常规 psql
命令相同的参数。
# Superuser psql access to GitLab's database
sudo gitlab-psql -d gitlabhq_production
仅在您至少运行一次 gitlab-ctl reconfigure
后才有效。gitlab-psql
命令不能用于连接远程 PostgreSQL 服务器,也不能用于连接本地非 Omnibus PostgreSQL 服务器。
在 Geo 跟踪数据库中启动 PostgreSQL 超级用户 psql
会话
与前面的命令类似,如果您需要超级用户访问捆绑的 Geo 跟踪数据库(geo-postgresql
),则可以使用gitlab-geo-psql
。它采用与常规 psql
命令相同的参数。
# Superuser psql access to GitLab's Geo tracking database
sudo gitlab-geo-psql -d gitlabhq_geo_production
Container Registry 垃圾回收
Container Registry 可能会使用大量磁盘空间。为了清除未使用的镜像层,镜像库包含一个垃圾收集命令。
限制用户登录极狐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 并限制对项目的变更,您可以将项目设置为只读,然后挂上“正在部署”的页面。
更新密钥文件
如果处于安全目的的需要,您可以更新 /etc/gitlab/gitlab-secrets.json
密钥文件。在此文件中:
- 不要更新
gitlab_rails
密钥,因为它包含数据库的解密 key。如果更新了此密钥,你会看到和密钥文件丢失时一样的错误。 - 你可以更新其他所有的密钥。
如果您的极狐GitLab 环境有多个节点,选择其中一个 Rails 节点执行初始化操作。
如果要更新密钥:
- 确认数据库的值能够被解密并且记录任何显示的错误信息,在继续之前解决掉这些错误。
- 推荐。提取您当前的
gitlab_rails
密钥。保存好输出结果,因为后续您会用到这些信息:
sudo grep "secret_key_base\|db_key_base\|otp_key_base\|encrypted_settings_key_base\|openid_connect_signing_key" /etc/gitlab/gitlab-secrets.json
- 将当前的密钥文件移到其他位置:
sudo 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
下面键/值对的值替换为第 2 步中生成的密钥输出值。 - 重新配置极狐GitLab 以便密钥文件的变更能够生效。
- 重启极狐GitLab 以确保所有的服务都在使用新的密钥。
-
如果您的极狐GitLab 环境中有多个节点,您必须将密钥文件拷贝到其他所有的节点上:
a. 在其他节点上,将当前的密钥文件移到其他位置
shell sudo mv /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json.old
b. 从您的 Rails 节点上将新的/etc/gitlab/gitlab-secrets.json
文件拷贝到其他的极狐GitLab 节点。 c. 在其他的节点上,每个节点都要重新配置极狐GitLab。 d. 在其他的节点上,重启极狐GitLab 以确保所有的服务都在使用新的密钥。 e. 在其他的节点上,对/etc/gitlab/gitlab-secrets.json
文件运行校验和匹配,以确认密钥是否匹配:shell sudo md5sum /etc/gitlab/gitlab-secrets.json
- 确认数据库的值能够被解密。输出的值要能够跟之前(替换密钥之前)的值相匹配。
- 确认极狐GitLab 如期工作。如果一切正常,就可以删除旧的密钥文件了。