Help us learn about your current experience with the documentation. Take the survey.

如何重启 GitLab

  • 版本:免费、高级、旗舰
  • 部署方式:GitLab 自管版

根据您安装 GitLab 的方式,重启其服务的方法也有所不同。

所有方法都可能会导致短暂的停机。

Linux 包安装

如果您使用 Linux 包 安装了 GitLab,那么您的 PATH 环境变量中应该已经有了 gitlab-ctl

gitlab-ctl 用于与 Linux 包安装进行交互,可以用来重启 GitLab Rails 应用程序(Puma)以及其他组件,例如:

  • GitLab Workhorse
  • Sidekiq
  • PostgreSQL(如果您使用的是捆绑版本)
  • NGINX(如果您使用的是捆绑版本)
  • Redis(如果您使用的是捆绑版本)
  • Mailroom
  • Logrotate

重启 Linux 包安装

在文档中,有时会要求您_重启_ GitLab。要重启 Linux 包安装,请运行:

sudo gitlab-ctl restart

输出结果应与此类似:

ok: run: gitlab-workhorse: (pid 11291) 1s
ok: run: logrotate: (pid 11299) 0s
ok: run: mailroom: (pid 11306) 0s
ok: run: nginx: (pid 11309) 0s
ok: run: postgresql: (pid 11316) 1s
ok: run: redis: (pid 11325) 0s
ok: run: sidekiq: (pid 11331) 1s
ok: run: puma: (pid 11338) 0s

要单独重启某个组件,您可以在 restart 命令后附加其服务名称。例如,要重启 NGINX,您可以运行:

sudo gitlab-ctl restart nginx

要检查 GitLab 服务的状态,请运行:

sudo gitlab-ctl status

请注意,所有服务都显示 ok: run

有时,组件在重启过程中会超时(在日志中查找 timeout),有时则会卡住。 在这种情况下,您可以使用 gitlab-ctl kill <service> 向服务(例如 sidekiq)发送 SIGKILL 信号。 之后,重启应该就能正常进行了。

作为最后的手段,您可以尝试重新配置 GitLab。

重新配置 Linux 包安装

在文档中,有时会要求您_重新配置_ GitLab。请记住,此方法仅适用于 Linux 包安装。

要重新配置 Linux 包安装,请运行:

sudo gitlab-ctl reconfigure

当 GitLab 的配置文件 (/etc/gitlab/gitlab.rb) 发生更改时,就应该重新配置 GitLab。

当您运行 gitlab-ctl reconfigure 时,作为 Linux 包安装底层配置管理应用的 Chef 会执行一些检查。 Chef 会确保目录、权限和服务都已就绪并能正常工作。

如果任何组件的配置文件发生更改,Chef 也会重启相应的 GitLab 组件。

如果您手动编辑了 /var/opt/gitlab 目录下由 Chef 管理的任何文件,运行 reconfigure 将会撤销这些更改,并重启依赖这些文件的服务。

自行编译安装

如果您按照官方安装指南自行编译安装了 GitLab,请运行以下命令来重启:

# For systems running systemd
sudo systemctl restart gitlab.target

# For systems running SysV init
sudo service gitlab restart

这将会重启 Puma、Sidekiq、GitLab Workhorse 以及 Mailroom(如果已启用)。

Helm chart 安装

对于通过云原生 Helm chart 安装的 GitLab,没有可以重启整个应用的单一命令。 通常,单独重启某个特定组件(例如 gitalypumaworkhorsegitlab-shell)就足够了,方法是删除与其相关的所有 pod:

kubectl delete pods -l release=<helm release name>,app=<component name>

release 名称可以从 helm list 命令的输出中获取。

Docker 安装

如果您更改了 Docker 安装的配置,必须重启以下内容才能使更改生效:

  • gitlab 容器。
  • 任何单独的组件容器。

例如,如果您将 Sidekiq 部署在单独的容器中,要重启这些容器,请运行:

sudo docker restart gitlab
sudo docker restart sidekiq