Rém*_*ras 26 webserver virtualhost nginx gitlab gitlab-omnibus
我在带有Omnibus软件包的专用Ubuntu 14.04服务器版上安装了Gitlab CE.
现在我想在gitlab旁边安装另外三个虚拟主机.
两个是由non-root user两个不同的运行启动的node.js Web应用程序ports > 1024,第三个是需要从中启动Web服务器的PHP Web应用程序.
有:
8081(node.js)上运行的私人凉亭注册表8082(node.js)上运行的私有npm注册表PHP)但是Omnibus听80并且似乎不使用Apache2或Nginx,因此我不能使用它们来服务我的PHP应用程序并反向代理我的其他两个节点应用程序.
Gitlab Omnibus使用什么服务机制
listen 80?我应该如何创建其他三个虚拟主机以提供以下vHost?
gitlab.mycompany.com(:80) - 已经在使用中bower.mycompany.com(:80)npm.mycompany.com(:80)packagist.mycompany.com(:80)
Rém*_*ras 25
但是Omnibus听80并且似乎不使用Apache2或Nginx [ ,因此......].
和@stdob评论:
omnibus没有使用nginx作为Web服务器??? -
我回应了
我想不是因为系统中没有安装nginx包...
来自Gitlab官方文档:
默认情况下,omnibus-gitlab使用捆绑的Nginx安装GitLab.
所以是的!
Omnibus包实际上使用Nginx!
但它被捆绑在一起,解释了为什么它不需要作为主机操作系统的依赖项安装.
好的!Nginx可以,并且应该用于服务我的PHP应用程序并反向代理我的其他两个节点应用程序.
Omnibus-gitlab允许通过用户访问Web服务器gitlab-www,该用户位于具有相同名称的组中.要允许外部Web服务器访问GitLab,需要添加外部Web服务器用户gitlab-www组.
要使用其他Web服务器(如Apache或现有的Nginx安装),您必须执行以下步骤:
通过指定in禁用捆绑的Nginx /etc/gitlab/gitlab.rb
nginx['enable'] = false
# For GitLab CI, use the following:
ci_nginx['enable'] = false
Run Code Online (Sandbox Code Playgroud)
检查非捆绑Web服务器用户的用户名.默认情况下,omnibus-gitlab外部Web服务器用户没有默认设置.您必须在配置中指定外部Web服务器用户用户名!比方说,例如,webserver用户是www-data.在/etc/gitlab/gitlab.rb集合中
web_server['external_users'] = ['www-data']
Run Code Online (Sandbox Code Playgroud)
此设置是一个数组,因此您可以指定多个用户添加到gitlab-www组.
运行sudo gitlab-ctl reconfigure以使更改生效.
默认情况下,NGINX将接受所有本地IPv4地址上的传入连接.您可以更改地址列表/etc/gitlab/gitlab.rb.
nginx['listen_addresses'] = ["0.0.0.0", "[::]"] # listen on all IPv4 and IPv6 addresses
Run Code Online (Sandbox Code Playgroud)
对于GitLab CI,请使用该ci_nginx['listen_addresses']设置.
默认情况下,NGINX将侦听指定的端口external_url或隐式使用正确的端口(HTTP为80,HTTPS为443).如果您在反向代理后面运行GitLab,您可能希望将侦听端口覆盖为其他内容.例如,要使用端口8080:
nginx['listen_port'] = 8080
Run Code Online (Sandbox Code Playgroud)
同样,对于GitLab CI:
ci_nginx['listen_port'] = 8081
Run Code Online (Sandbox Code Playgroud)
默认情况下,如果external_url
包含,NGINX将自动检测是否使用SSL https://.如果您在反向代理后面运行GitLab,您可能希望将其保留external_url为HTTPS地址,但通过HTTP在内部与GitLab NGINX进行通信.为此,您可以使用以下listen_https选项禁用HTTPS :
nginx['listen_https'] = false
Run Code Online (Sandbox Code Playgroud)
同样,对于GitLab CI:
ci_nginx['listen_https'] = false
Run Code Online (Sandbox Code Playgroud)
请注意,您可能需要您的反向代理配置一定的报头(例如转发Host,X-Forwarded-Ssl,X-Forwarded-For,X-Forwarded-Port),以GitLab.
如果您忘记了此步骤,您可能会看到不正确的重定向或错误(例如"422 Unprocessable Entity","无法验证CSRF令牌真实性").有关更多信息,请参阅:
为了更进一步,您可以访问https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#using-a-non-bundled-web-server上的官方文档.
我们需要在操作系统中全局安装ruby(带有捆绑ruby的omnibus中运行的gitlab)
$ sudo apt-get update
$ sudo apt-get install ruby
$ sudo gem install passenger
Run Code Online (Sandbox Code Playgroud)
而不是Apache2例如,nginx无法即时插入二进制模块.必须为要添加的每个新插件重新编译它.
Phusion乘客开发团队努力提供说法," 捆绑的nginx版乘客 ":使用乘客插件编译的nginx分档.
所以,让我们使用它:
要求:我们需要打开我们的
TCP端口11371(APT key端口).
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
$ sudo apt-get install apt-transport-https ca-certificates
Run Code Online (Sandbox Code Playgroud)
创建 passenger.list
$ sudo nano /etc/apt/sources.list.d/passenger.list
Run Code Online (Sandbox Code Playgroud)
用这些lignes
# Ubuntu 14.04
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
Run Code Online (Sandbox Code Playgroud)
使用正确的repo为您的ubuntu版本.以Ubuntu 15.04为例:deb https://oss-binaries.phusionpassenger.com/apt/passenger vivid main
编辑权限:
$ sudo chown root: /etc/apt/sources.list.d/passenger.list
$ sudo chmod 600 /etc/apt/sources.list.d/passenger.list
Run Code Online (Sandbox Code Playgroud)
更新包列表:
$ sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
允许它为 unattended-upgrades
$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Run Code Online (Sandbox Code Playgroud)
在文件顶部查找或创建此配置块:
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
// you may have some instructions here
};
Run Code Online (Sandbox Code Playgroud)
添加以下内容:
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
// you may have some instructions here
// To check "Origin:" and "Suite:", you could use e.g.:
// grep "Origin\|Suite" /var/lib/apt/lists/oss-binaries.phusionpassenger.com*
"Phusion:stable";
};
Run Code Online (Sandbox Code Playgroud)
nginx-extra和passenger:$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak_"$(date +%Y-%m-%d_%H:%M)"
$ sudo apt-get install nginx-extras passenger
Run Code Online (Sandbox Code Playgroud)
取消注释文件中的passenger_rootand passenger_ruby指令/etc/nginx/nginx.conf:
$ sudo nano /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)
...获得类似的东西:
##
# Phusion Passenger config
##
# Uncomment it if you installed passenger or passenger-enterprise
##
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/passenger_free_ruby;
Run Code Online (Sandbox Code Playgroud)
$ nano /etc/nginx/sites-available/gitlab.conf
server {
listen *:80;
server_name gitlab.mycompany.com;
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
client_max_body_size 250m;
access_log /var/log/gitlab/nginx/gitlab_access.log;
error_log /var/log/gitlab/nginx/gitlab_error.log;
# Ensure Passenger uses the bundled Ruby version
passenger_ruby /opt/gitlab/embedded/bin/ruby;
# Correct the $PATH variable to included packaged executables
passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin";
# Make sure Passenger runs as the correct user and group to
# prevent permission issues
passenger_user git;
passenger_group git;
# Enable Passenger & keep at least one instance running at all times
passenger_enabled on;
passenger_min_instances 1;
error_page 502 /502.html;
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以启用它:
$ sudo ln -s /etc/nginx/sites-available/gitlab.cong /etc/nginx/sites-enabled/
Run Code Online (Sandbox Code Playgroud)
a2ensitenginx本身没有等效的,所以我们使用ln,但如果你愿意,github上有一个项目: nginx_ensite: nginx_ensite和nginx_dissite,用于快速虚拟主机启用和禁用这是一个shell(Bash)脚本,它为nginx复制Debian a2ensite和a2dissite,用于在Apache 2.2/2.4中启用和禁用站点作为虚拟主机.
$ sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)
只需创建新的配置/etc/nginx/sites-available.
就我而言,我在同一台主机上以这种方式运行并提供服务:
node.jsnode.js例如,服务npm.mycompany.com:
为日志创建目录:
$ sudo mkdir -p /var/log/private-npm/nginx/
Run Code Online (Sandbox Code Playgroud)
并填写一个新的vhost配置文件:
$ sudo nano /etc/nginx/sites-available/npm.conf
Run Code Online (Sandbox Code Playgroud)
有了这个配置
server {
listen *:80;
server_name npm.mycompany.com
client_max_body_size 5m;
access_log /var/log/private-npm/nginx/npm_access.log;
error_log /var/log/private-npm/nginx/npm_error.log;
location / {
proxy_pass http://localhost:8082;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Run Code Online (Sandbox Code Playgroud)
然后启用它并重新启动它:
$ sudo ln -s /etc/nginx/sites-available/npm.conf /etc/nginx/sites-enabled/
$ sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)
Dan*_*nny 22
因为我不想更改gitlab的nginx服务器(与其他一些集成),最安全的方法是在解决方案之下.
也按照
Gitlab:Ningx =>将自定义设置插入NGINX配置
编辑你的gitlab的/etc/gitlab/gitlab.rb:
nano /etc/gitlab/gitlab.rb
Run Code Online (Sandbox Code Playgroud)
并滚动到nginx ['custom_nginx_config']并修改如下,确保取消注释
# Example: include a directory to scan for additional config files
nginx['custom_nginx_config'] = "include /etc/nginx/conf.d/*.conf;"
Run Code Online (Sandbox Code Playgroud)
创建新的配置目录:
mkdir -p /etc/nginx/conf.d/
nano /etc/nginx/conf.d/new_app.conf
Run Code Online (Sandbox Code Playgroud)
并将内容添加到新配置中
# my new app config : /etc/nginx/conf.d/new_app.conf
# set location of new app
upstream new_app {
server localhost:1234; # wherever it might be
}
# set the new app server
server {
listen *:80;
server_name new_app.mycompany.com;
server_tokens off;
access_log /var/log/new_app_access.log;
error_log /var/log/new_app_error.log;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
location / { proxy_pass http://new_app; }
}
Run Code Online (Sandbox Code Playgroud)
并重新配置gitlab以插入新设置
gitlab-ctl reconfigure
Run Code Online (Sandbox Code Playgroud)
重启nginx
gitlab-ctl restart nginx
Run Code Online (Sandbox Code Playgroud)
检查nginx错误日志:
tail -f /var/log/gitlab/nginx/error.log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20368 次 |
| 最近记录: |