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-enabled
或sites-available
文件夹吗?
更新 2:
因此,使用上面的配置,我的 dev.example.com 或 test.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`时出错