# GITLAB # Maintainer: @randx # App Version: 3.0 upstream gitlab { server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; } server { listen YOUR_SERVER_IP:80; # eg, listen 192.168.1.1:80; server_name YOUR_SERVER_FQDN; # eg, server_name source.example.com; root /home/gitlab/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if a file, which is not found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://gitlab; } }
我应该更改服务gitlab作为surURI,www.mysuperserver.com/gitlab
我已经尝试了许多不同的东西,但没有任何工作谢谢
从Gitlab 5.3开始,您可以使用官方安装文档将其配置为在开箱即用的情况下运行。
取消注释config / puma.rb的第8行:ENV ['RAILS_RELATIVE_URL_ROOT'] =“/”
对于config / gitlab.yml中的第23行也是如此:relative_url_root:/
我根本不需要修改我的nginx配置。
我已经成功地在一个subdir url下工作。
/home/git/gitlab/config/gitlab.yml
#取消注释并自定义在非根路径中运行的最后一行 #警告:我们建议创建一个FQDN来托管GitLab而不是这个。 #请注意,需要更改四个设置才能正常工作。 #1)在你的application.rb文件中:config.relative_url_root =“/ gitlab” #2)在你的gitlab.yml文件中:relative_url_root:/ gitlab #3)在你的unicorn.rb:ENV ['RAILS_RELATIVE_URL_ROOT'] =“/ gitlab” #4)在../gitlab-shell/config.yml中:gitlab_url:“http://127.0.0.1/gitlab” #要更新路径,请运行:sudo -u git -H bundle exec rake assets:precompile RAILS_ENV = production # relative_url_root:/ gitlab
关键点是上下文server
下的root
和location
下的alias
。 有关更多详细信息,请参阅nginx陷阱 , nginx根注释 。
# default.conf for nginx upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; server_name $YOUR_DOMAIN; # other settings, especially root settings, like below # root /usr/local/nginx/html; location /gitlab { # serve static files from defined root folder; alias /home/git/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; 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_pass http://gitlab; } # other locations' settings... }
对于旧版本,例如gitlab 7.4.5,没有gitlab-git-http-server(gitlab-workhorse)。 但有一些解决方案gitlab 7.4.5在文档中使用suburi。
配置/ application.rb中
# Relative url support # Uncomment and customize the last line to run in a non-root path # WARNING: We recommend creating a FQDN to host GitLab in a root path instead of this. # Note that following settings need to be changed for this to work. # 1) In your application.rb file: config.relative_url_root = "/gitlab" # 2) In your gitlab.yml file: relative_url_root: /gitlab # 3) In your unicorn.rb: ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab" # 4) In ../gitlab-shell/config.yml: gitlab_url: "http://127.0.0.1/gitlab" # 5) In lib/support/nginx/gitlab : do not use asset gzipping, remove block starting with "location ~ ^/(assets)/" # # To update the path, run: sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production # # config.relative_url_root = "/gitlab"
配置/ gitlab.yml
# WARNING: See config/application.rb under "Relative url support" for the list of # other files that need to be changed for relative url support # relative_url_root: /gitlab
配置gitlab 7.4.5与其他网站使用相同的端口和相同的域名在nginx配置或apache配置文件似乎仍然是一个挑战。 我没有得到这个。 我可以通过www.mydomain.com/gitlab访问gitlab,但是我没有在www.mydomain.com的另一个根目录下找到我的另一个网站。 它应该通过配置nginx或apache来消除。 希望熟悉nginx或apache的人可以提供一个解决方案。
其他参考。 支持在相对URL路径或子目录#1950中安装GitLab
编辑
它现在有效。
stackoverflow建议使用www.example.com作为例子在这里。
http://www.example.com/gitlab访问gitlab。
http://www.example.com访问另一个网站,比如我的博客。
脚步:
"http://www.example.com/gitlab"
"location ~^/(assets)/"
网址:
gitlab会给git的两种访问方式:
我没有使用https。
如果你得到:
您可以将config/gitlab.yml
配置为host: example.com/gitlab
。 只要删除/gitlab
。
nginx配置文件:
################################### ## configuration ## ################################### ## upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0; } ## Normal HTTP host server { #listen *:80 default_server; listen *:80 default_server; server_name www.example.com; ## Replace this with something like gitlab.example.com server_tokens off; ## Don't show the nginx version number, a security best practice #root /home/git/gitlab/public; root html; location /{ #root html; index index.html index.htm; } ## Increase this if you want to upload large attachments ## Or if you want to accept large git objects over http client_max_body_size 20m; ## Individual nginx logs for this GitLab vhost access_log logs/example.gitlab_access.log; error_log logs/example.gitlab_error.log; location /gitlab { alias /home/git/gitlab/public; ## Serve static files from defined root folder. ## @gitlab is a named location for the upstream fallback, see below. try_files $uri $uri/index.html $uri.html @gitlab; } ## If a file, which is not found in the root folder is requested, ## then the proxy passes the request to the upsteam (gitlab unicorn). location @gitlab { ## If you use HTTPS make sure you disable gzip compression ## to be safe against BREACH attack. # gzip off; ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; 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_set_header X-Frame-Options SAMEORIGIN; proxy_pass http://gitlab; } ## Enable gzip compression as per rails guide: ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression ## WARNING: If you are using relative urls remove the block below ## See config/application.rb under "Relative url support" for the list of ## other files that need to be changed for relative url support #location ~ ^/(assets)/ { # root /home/git/gitlab/public; # #gzip_static on; # to serve pre-gzipped version # expires max; # add_header Cache-Control public; #} error_page 502 /502.html; }
Apache(2.2.9)配置文件:参考gitlab 6.0.6和gitlab-8.0-apache2.2.conf的gitlab 8.0.0在Apache 2.2上
# modulee dependencies # mod_rewrite # mod_proxy # mod_proxy_http <VirtualHost *:80> serverAdmin admin@example.com DocumentRoot "/data/webapp/www/wordpress" serverName www.example.com serverAlias example.com #ErrorLog "logs/wordpress-error_log" #CustomLog "logs/wordpress-access_log" common #SetEnv ZF2_PATH "/data/webapp/www/ZendFramework-2.3.3/library" SetEnv APPLICATION_ENV "development" <Directory /data/webapp/www/wordpress> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> #serverName www.example.com serverSignature Off ProxyPreserveHost On # Ensure that encoded slashes are not decoded but left in their encoded state. # http://doc.gitlab.com/ce/api/projects.html#get-single-project AllowEncodedSlashes NoDecode <Location /gitlab> Order deny,allow Allow from all ProxyPassReverse http://127.0.0.1:9095 ProxyPassReverse http://www.example.com// RewriteEngine on #RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://127.0.0.1:9095%{REQUEST_URI} [P,QSA,NE] </Location> #apache equivalent of nginx try files # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files # http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab # RewriteEngine on # RewriteCond /code/gitlab/{REQUEST_FILENAME} !-f # RewriteRule .* http://127.0.0.1:9095%{REQUEST_URI} [P,QSA,NE] # needed for downloading attachments #DocumentRoot /home/git/gitlab/public Alias /gitlab /home/git/gitlab/public #Set up apache error documents, if back end goes down (ie 503 error) then a maintenance/deploy page is thrown up. ErrorDocument 404 /404.html ErrorDocument 422 /422.html ErrorDocument 500 /500.html ErrorDocument 503 /deploy.html LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded ErrorLog logs/example.com_error.log CustomLog logs/example.com_forwarded.log common_forwarded CustomLog logs/example.com_access.log combined env=!dontlog CustomLog logs/example.com.log combined </VirtualHost>
你有没有解决这个问题呢?
如果不是,请尝试将location /
指令更新为:
location /gitlab { # serve static files from defined root folder;. root /home/gitlab/gitlab/public; # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; }
如果这不起作用,请粘贴/var/log/nginx/gitlab_error.log
的最后几行。
这个配置工作
# GITLAB # Maintainer: @randx # App Version: 3.0 upstream gitlab { server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; # eg, listen 192.168.1.1:80; 37.59.125.28: server_name gitlab.<YOUR_DOMAIN>.com; # eg, server_name source.example.com; root /home/gitlab/gitlab/public; # individual nginx logs for this gitlab vhost access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { # serve static files from defined root folder;. # @gitlab is a named location for the upstream fallback, see below try_files $uri $uri/index.html $uri.html @gitlab; } # if a file, which is not found in the root folder is requested, # then the proxy pass the request to the upsteam (gitlab unicorn) location @gitlab { proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://gitlab; } }
而且我在nginx可用配置和启用的配置之间有一个不好的符号链接。