服务器上已经安装好了Nginx,配置了多个网站服务,这个情况下我们怎样安装配置Gitlab才能不影响现有的Nginx网站服务?以及如何开启Pages用户网站页面服务?
以下参照阿里云CentOS7进行介绍,Nginx的安装请参照下面这个文章:
为Gitlab启用外部Nginx服务
Gitlab安装好之后,主要设置都在/etc/gitlab/gitlab.rb
文件里面,你可以用sftp软件登陆服务器找到它,然后用任何IDE或文本编辑器编辑。正常情况全部内容都被注释了,我们添加以下三行。
external_url 'http://git.10knet.com'
nginx['enable'] = false
web_server['external_users'] = ['nginx']
如果是apache服务器,应改为
web_server['external_users'] = ['www-data']
保存更新,然后重新配置Gitlab,使用下面命令:
sudo gitlab-ctl reconfigure
如果遇到问题的话,更多参考内容看这里(英文)。
设置Nginx代理Gitlab服务
Gitlab官方为我们准备好了Nginx需要的配置文件,访问这里GitLab recipes repository去下载。
Nginx下载 web-server/nginx/gitlab-omnibus-nginx.conf文件。
它其实就是Nginx虚拟服务的配置文件,打开后查看,修改内容类似下面这样:
upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}
server {
listen 80 ;
server_name git.10knet.com;
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
access_log /var/log/nginx/gitlab_access.log;
error_log /var/log/nginx/gitlab_error.log;
location / {
client_max_body_size 0;
gzip off;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
}
}
其实只要修改server{}
开头的几行。你可以把这个server的配置整合到你原来的/etc/nginx/nginx.conf
文件或其他配置文件中,然后nginx -s reload
使配置生效。
注意!不是直接添加到conf文件结尾,而是根据具体情况,仔细规划一下才行。更多内容请参考Nginx官方配置说明。
开启Gitlab的Pages功能
Gitlab的Pages服务可以把用户的一个项目变为一个静态网站,在gitlab.rb
中要开启设置:
pages_external_url "http://git.10knet.com/"
gitlab_pages['enable'] = true
完整的具体配置参照我的这个文章:
但这个文章是不使用外部Nginx的情况。下面我们来看如何配置外部Nginx服务来实现子域名解析(泛解析)。
实际上所有的Pages静态网页文件都在/var/opt/gitlab/gitlab-rails/shared/pages
这个目录,我们的任务就是把zhyuzh.git.10knet.com/mysite
这样的地址解析到.../pages/zhyuzh/mysite
目录。
添加Nginx的Pages代理设置
默认情况Gitlab的Pages服务运行在本地的8090端口上,我们为Nginx添加以下设置:
upstream gitlab-pages{
server 127.0.0.1:8090;
}
server {
listen 80;
server_name *.git.10knet.com;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
proxy_pass http://gitlab-pages;
}
}
这个和前面那个gitlab-workhorse
设置很像,可以对比参考。
保存之后nginx -s reload
重载设置,正常的话就完全OK了。
附注
10knet.com现在采用的Nginx策略是:
-
/etc/nginx/nginx.conf
只提供http{}
并加载10knet/nginx/*.conf
配置文件。 -
10knet/nginx/
下包含多个配置文件:-
main.conf
提供主路由10knet.com
和泛解析xxx.10knet.com
。 -
gitlab.conf
提供git.10knet.com
和Pages的xxx.10knet.com
的解析。 -
kis.conf
提供kis.10knet.com
的静态文件服务和借口代理。 - 更多...
-
网友评论