我一直关注instructions from the GitLab wiki,但似乎缺少一些关键信息。在“使用非捆绑Web服务器”一节中,它从未解释我如何重新配置我的Nginx安装以将代理转发到GitLab。
基本上,我想在git.example.com下安装GitLab,但我似乎无法找到现有Nginx安装的配置设置。维基页面继续谈论配置现有的Passenger / Nginx安装,但我没有Passenger,所以我认为这不适用于我的情况。
我想最简单的解决方案是,如果有办法告诉Gitlab使用它的内置Nginx并只是在内部端口上侦听,然后将我的其他Nginx转发到该端口,但我似乎无法找出如何配置Gitlab来处理它。
非常感谢任何帮助。
答案 0 :(得分:9)
我搞定了!太疯狂了!
正如我所说,我试图关注these instructions,但我无法到达任何地方,因为它似乎缺乏如何将现有Nginx安装链接转换为Gitlab的说明。
嗯,在页面的下方,他们对Using an Existing Passenger / Nginx Installation有一个更完整的解释,虽然起初看起来并不像我想要的,但研究乘客有点明确表示它不是&# 39;仅限Ruby(他们容易找到的安装说明要求您将其安装为ruby gem),而他们的instructions for Ubuntu installation允许我将其轻松地集成到我现有的Nginx中。
从那里开始,它只是按照维基中的步骤进行,但有一些变化。
www-data
添加到web_server['external_users']
中的gitlab.rb
行文件。/var/log/gitlab/nginx/gitlab_access.log
处的nginx日志文件不存在,这在Nginx尝试启动时导致错误,只是创建该空白文件并给予正确的读/写访问权限使其像魅力一样工作。我现在非常兴奋,希望任何有未来特定问题的人都会遇到这个问题,Wiki应该真正更新,只需删除/合并这两个部分并解释/链接到如何安装乘客进入现有的Nginx安装。会给我带来很多困惑和浪费时间。
答案 1 :(得分:6)
在Ubuntu上运行现有的Nginx服务器
答案 2 :(得分:2)
我花了几天的时间来解决所有问题,所以我想分享一下所有工作的步骤。这是如何为网站安装Nginx并使其与现有的gitlab repo(使用捆绑版本的Nginx)一起工作。我的gitlab repo位于我的网站的一个名为' repos'的子域名中。
打开终端并安装Nginx:
sudo apt-get update
sudo apt-get install nginx
编辑配置文件/etc/nginx/nginx.conf:
找到您在配置gitlab时需要的用户名: 就我而言,这是' nginx':
user nginx;
在http {}块内添加此行:
$include /etc/nginx/sites-enabled/*;
示例:
http{
include etc/nginx/mime.types;
include etc/nginx/sites-enabled/*;
(more stuff...)
}
编辑配置文件/etc/gitlab/gitlab.rb:
更改此行:
external_url 'GENERATED_EXTERNAL_URL'
致:
external_url 'http://www.example.com/repos' // (whatever your server name is)
取消注释并更改此行:
nginx['enable'] = true
致:
nginx['enable'] = false
取消注释并更改此行:
web_server['external_users'] = []
致:
web_server['external_users'] = ['nginx'] // or whatever your nginx user is called, sometimes it's 'www-data'
Nginx需要gitlab的配置文件:
在GitLab食谱库中:https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/nginx找到' gitlab-omnibus-nginx.conf'。 将该文件放在启用/ etc / nginx / sites-enabled的文件夹中(您可能需要创建启用站点的文件夹)
编辑配置文件/etc/nginx/sites-enabled/gitlab-omnibus-nginx.conf:
更改此行:
server_name YOUR_SERVER_FQDN
致:
server_name www.example.com/repos // (or whatever your server name is)
您需要更改gitlab所在的端口,以便网站和git服务器都能正常工作。
更改此行:
listen 0.0.0.0:80 default_server;
致:
listen 0.0.0.0:8081;
更改此行:
listen [::]:80 default_server;
致:
listen [::]:8081;
编辑配置文件/etc/nginx/conf.d/default.conf:
将此设为默认服务器:
listen 80 default_server;
server_name localhost;
为gitlab repo添加第二个位置,并使用proxy_pass指向您放置Gitlab的端口。 我把我的Gitlab放在子目录' repos'中。数字127.0.0.1表示localhost(同一台计算机):
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /repos/ {
proxy_pass http://127.0.0.1:8081;
}
在终端中运行以下命令:
sudo gitlab-ctl reconfigure
sudo service nginx restart
您的网络服务器和gitlab现在应该可以在线工作和访问。 当用户访问您的网络服务器时,Nginx将默认为/ usr / share / nginx / html。那里有一个默认的.html文件。这是您可以为您的网站放置文件的地方。
答案 3 :(得分:0)
对于那些列出的答案不起作用的人。我自己的回答是编辑1
并取消注释nginx.conf
行。
它的缺席阻止了nginx对乘客做任何事情。
答案 4 :(得分:0)
@fillky的帖子无法完全帮助我安装ubuntu 18.04。这是我使Gitlab可以使用的步骤。
对于 Ubuntu 18.04 (http模式):
编辑配置文件/etc/gitlab/gitlab.rb并取消注释或追加以下内容(在https://docs.gitlab.com/omnibus/settings/nginx.html#configuration处找到):
nginx ['enable'] = false
unicorn ['enable'] =假
gitlab_rails ['internal_api_url'] ='http://gitlab.yourdomain.com'
web_server ['external_users'] = ['www-data']
重新配置Gitlab
sudo gitlab-ctl重新配置
为nginx启用乘客(https://www.phusionpassenger.com/library/install/nginx/install/oss/bionic/的步骤1至3)
重新加载nginx以检查一切是否仍然有效。如果不是这样:google是您的朋友
sudo nginx -s重新加载
更改您的nginx配置以支持gitlab。在/ etc / nginx / sites-enabled中创建一个带有原始文档的Vhost步骤中内容的'gitlab'文件:
https://docs.gitlab.com/omnibus/settings/nginx.html#vhost-server-block
重新加载nginx,使更改生效
sudo nginx -s重新加载
安装nodelab.js(如果尚未安装),因为gitlab需要执行JavaScript
sudo apt-get install node.js
浏览到您的gitlab网址。应该提示您输入root gitlab帐户的密码。在下一步中,您将能够使用该帐户登录
仅此而已!如果要启用HTTPS,请执行以下额外步骤:
将nginx配置/ etc / nginx / sites-enabled / gitlab更改为使用ssl
收听0.0.0.0:443 ssl;
听[::]:443 ipv6only = on ssl;
ssl on;
ssl_certificate#链接到您的公共ssl证书
ssl_certificate_key#链接到您的私人ssl密钥
ssl_ciphers“ ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA- AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL :!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4“;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
重新配置gitlab
sudo gitlab-ctl重新配置
重新加载nginx
sudo nginx -s重新加载
答案 5 :(得分:0)
基于@cyberchis的回答,我简化了过程,并且两次完成相同的设置。我希望它也对您有用。
检查Nginx的用户
1.1。用nano /etc/nginx/nginx.conf
打开 nginx.conf 。
1.2。检查第一。行user www-data;
,这里的用户是www-data
。
编辑gitlab的external_url
2.1。用nano /etc/gitlab/gitlab.rb
打开 gitlab.rb 。
2.2。将行external_url 'GENERATED_EXTERNAL_URL'
修改为external_url 'http://gitlab.yourdomain.com'
。
2.3。取消注释并将行nginx['enable'] = true
更改为nginx['enable'] = false
。
2.4。取消注释并将行web_server['external_users'] = []
更改为web_server['external_users'] = ['www-data']
。
为gitlab添加配置文件
3.1。从gitlab repository下载 gitlab-omnibus-nginx.conf 。
3.2。转到文件所在的目录,然后使用cp /directory-to-this-file/gitlab-omnibus-nginx.conf /etc/nginx/sites-enabled
将此文件复制到nginx。
3.3。使用nano /etc/nginx/sites-enabled/gitlab-omnibus-nginx.conf
打开此文件。
3.4。将此行listen 0.0.0.0:80 default_server;
更改为listen 0.0.0.0:7001;
// gitlab在端口7001上运行
3.5。将此行listen [::]:80 default_server;
更改为listen [::]:7001;
// gitlab在端口7001上运行
3.6。将此行server_name YOURSERVER_FQDN
更改为server_name www.yourdomain.com
。
配置nginx
4.1。用nano /etc/nginx/nginx.conf
打开 nginx.conf 。
4.2。添加此配置
http {
...
server {
listen 80;
server_name gitlab.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:7001;
}
}
}
重新配置gitlab并重新加载nginx
5.1。 sudo gitlab-ctl reconfigure
5.2。 sudo systemctl reload nginx
配置防火墙以导出端口7001 (可选)
由于gitlab在我的本地服务器上运行,因此必须允许端口7001从外部访问。启用它的最简单方法是运行ufw allow 7001
。
现在gitlab在您应访问的子域 gitlab.yourdomain.com 上运行。