GitLab Omnibus 在“等”中缺少“nginx”文件夹

Posted

技术标签:

【中文标题】GitLab Omnibus 在“等”中缺少“nginx”文件夹【英文标题】:GitLab Omnibus has missing 'nginx' folder in 'etc' 【发布时间】:2016-09-26 22:18:25 【问题描述】:

我正在尝试在使用 Ubuntu 安装 GitLab 的同一台服务器上托管其他应用程序。根据对GitLab's documentation 的一些搜索,我发现您可以启用自定义.conf 文件并将它们定向到它们通常应该位于/etc/nginx/conf.d/ 路径中的位置。参考资料说要将它们放在指定的路径中,但我在/etc 中缺少 nginx 文件夹。不确定它是否打算不安装在 /etc 中,但是为什么这个参考资料说 nginx 应该在那里?

更新 1:

根据@bradrini 的回复,我已经设法使用名为example.conf 的配置文件在/etc/nginx/conf.d 中创建了目录。我设置的域结构是在 dev.example.com 上有 GitLab,并将这个其他应用程序指向 test.example.com。下面是我对这个新域的 nginx 配置:

server 
    # Using my actual IP here which houses GitLab and my test.example.com domain
    listen                  111.111.111.11:443 default_server ssl;

    # What the domain will be called
    server_name             test.example.com; 

    # Wildcard cert used for GitLab
    ssl_certificate         /etc/gitlab/ssl/dev.example.com.crt 

    # Wildcard key used for GitLab
    ssl_certificate_key     /etc/gitlab/ssl/dev.example.com.key 

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / 
        # Root file directory for the test.example.com domain
        root   /var/www/test.example.com/html;

        index  index.html index.htm;
    


我现在无法连接到我的 test.example.com 域,这很好,因为它最初转发到我的 GitLab 域 (dev.example.com)。

我现在认为问题是由 nginx 配置问题引起的?还有什么我可能错过的我应该检查的吗?我需要担心任何sites-enabledsites-available 文件夹吗?

更新 2:

因此,使用上面的配置,我的 dev.example.comtest.example.com 都不会主动运行。他们都无法根据我的浏览器连接。不知道是什么让他们两个都无法连接。

【问题讨论】:

【参考方案1】:

Gitlab 安装过程创建/etc/nginx/conf.d 是不正确的。

值得庆幸的是,Gitlab 文档中指定的路径只是一个示例。可以在nginx['custom_nginx_config']配置设置中指定任意目录位置,配置nginx搜索额外的配置文件。

考虑到这一点,您有两个选择:

取消注释/etc/gitlab/gitlab.rb 中的nginx['custom_nginx_config'] 行并使用建议的自定义nginx 配置位置/etc/nginx/conf.d/*.conf。如您所见,您需要通过sudo mkdir -p /etc/nginx/conf.d 手动创建目录,然后才能复制自定义nginx 配置。

或者作为替代方案,取消注释 nginx['custom_nginx_config'] 的值并将值从 /etc/nginx/conf.d/*.conf 更改为您希望存储自定义 nginx 配置的其他位置,例如 /opt/nginx/conf.d。当然,您应该再次手动确保该目录确实存在并且包含您要添加的 nginx 配置。

重要提示:每当文件/etc/gitlab/gitlab.rb 更新时,请不要忘记重新运行gitlab-ctl reconfigure 以使您的更改生效。

【讨论】:

很好的答案@bradrini!您解释了一些设置教程中缺少的小细节......这非常有帮助。今天要试试这个,会回来更新! 使用您实施的解决方案更新了原始版本。我想我们已经到了某个地方,只是想确保我的配置文件正常工作。【参考方案2】:

如果您通过 Omnibus 安装程序安装 GitLab,则相关文件可能(由您安装的 GitLab 实例)位于 /etc/gitlab 下 - 而不是 /etc/nginx – 目录。

来自Manually configuring HTTPS – NGINX settings | GitLab:

由于我们示例中的主机名是“gitlab.example.com”,omnibus-gitlab 将分别查找名为/etc/gitlab/ssl/gitlab.example.com.key/etc/gitlab/ssl/gitlab.example.com.crt 的私​​钥和公共证书文件。创建/etc/gitlab/ssl 目录并将您的密钥和证书复制到那里。

$ sudo mkdir -p /etc/gitlab/ssl
$ sudo chmod 700 /etc/gitlab/ssl
$ sudo cp gitlab.example.com.key gitlab.example.com.crt /etc/gitlab/ssl/

【讨论】:

【参考方案3】:

安装 nginx 时,会创建 /etc/nginx/ 文件夹。然后,您可以如您所说,编辑 /etc/nginx/nginx.conf 以检查 /etc/nginx/conf.d/ 文件夹。请确保您're 'root' 能够看到所有内容,并检查 /usr/local/nginx/ 文件夹(他们说 conf 文件也可以在那里,我猜它可能来自您安装的版本)。

【讨论】:

以上是关于GitLab Omnibus 在“等”中缺少“nginx”文件夹的主要内容,如果未能解决你的问题,请参考以下文章

GITLAB_OMNIBUS_CONFIG 环境变量不起作用?

使用HTTPS配置gitlab omnibus,无需在AWS上使用nginx证书

gitlab升级gitlab Omnibus CE安装遇到的一些问题

无法使用omnibus安装gitlab:在资源'bash [migrate gitlab-rails database]上执行动作`run`时出错

omnibus gitlab-ce安装

centos6使用Omnibus方法安装gitlab