我正在尝试将 GitLab (EE) 安装到运行 Ubuntu Server 20.04 的本地裸机服务器 PC 上,但失败了。该服务器计划以后提供面向互联网的访问,但目前它只需要内部 LAN,如果可能的话,可以通过 IP 或主机名访问。该 PC 目前通过 netplan 设置了静态内部 IP。我们目前没有为此服务器保留的域名或 SSL 证书。
我在机器上设置了一个可以正常工作的 Git 服务器,可以通过 SSH 和 HTTP(Apache2,然后切换到 Nginx)成功访问。我的目标是在机器上设置与现有 Git 服务器并行运行的 GitLab。
昨天 Nginx 运行正常后,我尝试通过 Omnibus 安装 GitLab,使用的步骤如下:Ubuntu 版 GitLab 官方安装页面,首先curl
添加存储库,然后运行EXTERNAL_URL="http://10.7.2.xxx" apt install gitlab-ee
(内部 IP,但以防万一进行了审查)。该过程完成时没有错误,但是当尝试使用该 URL 连接到服务器时,我只从 Nginx 获得 403。我怀疑这是因为 Nginx 之前已经在 上运行了普通 Git /srv/www/git
。我尝试使用 删除它,然后删除、、和apt remove gitlab-ee
处的剩余目录。当时我不知道这是卸载 GitLab 的错误方法。/etc/gitlab
/var/opt/gitlab
/opt/gitlab
/var/log/gitlab
今天早上我尝试重新安装。首先,我用 停止并禁用 Nginx systemctl
,通过将配置移出到/etc/nginx/enabled-sites
我的主目录来备份我的配置,然后使用 卸载它apt remove nginx
。重新启动并确认它和 Apache2 都没有运行后,我再次尝试使用 重新安装 GitLab apt install gitlab-ee
。它出乎意料地快速完成,因为它的资源似乎仍然存在于系统中。从浏览器连接完全失败,根本没有连接。
我再次尝试重新安装,这次使用以下命令完全卸载 GitLab:
# gitlab-ctl uninstall
# gitlab-ctl cleanse
# gitlab-ctl remove-accounts
# dpkg -P gitlab-ee
删除帐户挂了 10 分钟,没有任何输出,所以我不得不^C
这么做。删除它之后dpkg
,我删除了与之前相同的四个目录,但只剩下/opt/gitlab
和/var/log/gitlab
。
在据称完全卸载之后,我重新启动并尝试进行我认为完全重新安装的操作。它* ruby_block[wait for logrotate service socket] action run
无休止地挂起了一个多小时。研究表明,在 omnibus 挂起时打开另一个终端并运行以下命令:
# nohup /opt/gitlab/embedded/bin/runsvdir-start &
# gitlab-ctl reconfigure
这不起作用,gitlab-ctl reconfigure
挂了 10 分钟才放弃,另一个终端上的 Omnibus 没有继续。它甚至不会响应^C
。我不得不从另一个会话强制重新启动,并尝试“干净”卸载、重新启动,然后重新安装。
这次卸载没有出现任何问题remove-accounts
(Pastebin 日志、用户名、主机名、IP 被审查)。然而,它再次在 处挂起logrotate
,持续了一个多小时,并且再次对 不作出响应^C
。Pastebin 输出,来自 /var/log/gitlab/reconfigure/1636492507.log 的 Pastebin 日志。
什么没有解决我的问题:
systemctl start logrotate.service
(立即停止/完成,等待计时器),logrotate.timer
(已在运行)。启动时 Omnibus 均无响应。- 跑步
runsvdir-start
和gitlab-ctl reconfigure
(见上文) - 奔跑
gitlab-ctl tail
(投掷tail: cannot follow '-' by name
) multi-user.target
已加载并处于活动状态,根据systemctl -t target
。
我能找到的所有其他结果都与 GitLab 失败的特定方面有关,而不是初始安装。我被难住了,找不到任何其他相关内容。我该怎么办?
答案1
昨晚我sudo reboot
又强制执行了一次,今天早上运行后,apt upgrade
dpkg 提示我运行dpkg --configure -a
,成功恢复安装并完成。我甚至可以通过浏览器连接到 IP 并获取 GitLab 登录页面。我不知道为什么现在这样有效。
虽然这确实解决了我遇到的这个问题的特定实例,但为了后代,我想暂时保留这个问题,以试图理解为什么会出现这个问题(在 logrotate 上挂起两次),以及为什么这样可以解决这个问题。如果其他人也遇到这个问题,知道为什么会发生这种情况会比使用一个可能有效也可能无效的魔法命令更有帮助,因为魔法命令无法解释原因。如果有人能帮助解释为什么会发生这个问题或者为什么这个命令对我有效,我将不胜感激。
答案2
完全一样的情况。对我有帮助:
gitlab-ctl status
输出:
run: logrotate: (pid 558) 114s; run: log: (pid 557) 114s
然后:
gitlab-ctl stop logrotate
输出:
ok: **down**: logrotate: 1s, normally up
然后命令gitlab-ctl reconfigure
完成并且没有错误