我已经在新鲜的Ubuntu 13.04服务器上安装GitLab 6.1,我希望有一个位置的GitLab服务
http://192.168.1.5/gitlab
我的/ etc / nginx / sites-available / default文件:
upstream gitlab { server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; } server { listen 80; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; server_name localhost 192.168.1.5; server_tokens off; location /gitlab { alias /home/git/gitlab/public; try_files $uri $uri/index.html $uri.html @gitlab; } location @gitlab { proxy_read_timeout 300; proxy_connect_timeout 300; 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; } location / { try_files $uri $uri/ /index.html; } }
我是nginx的新手,但是从我所了解的alias指令应该类似于Apache中的别名。 导航到这个configuration只是404s
http://192.168.1.5/gitlab
如果我将/ gitlab位置更改为/并将其他/位置注释掉,则可以导航到
http://192.168.1.5/
并访问GitLab实例。
编辑
看起来GitLab没有正式的子目录,开发者build议使用子域。 子目录有一些非官方的支持和文档。 在GitLabconfiguration文件和这个线程( https://github.com/gitlabhq/gitlabhq/pull/4670 )中的意见之后,我能够得到它的工作:
1)在config/application.rb
中的config.relative_url_root = "/myproject"
中注释
2)在config/application.rb
更新config.assets.version = '1.0.1'
3)注释在config/gitlab.yml
中的relative_url_root: /gitlab
config/gitlab.yml
4)将ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab"
到config/unicorn.rb
的顶部
5)运行sudo -u git -H RAILS_ENV=production bundle exec rake assets:precompile
6)运行sudo service gitlab restart
7)运行sudo service nginx restart
现在,上面的nginxconfiguration在浏览到http:\\192.168.1.5\gitlab
时提供了GitLab。 这可能不是理想的生产env,因为它不是由GitLab正式支持,但它似乎工作。
在别名目录时,请确保alias
及其相应location
中的path具有尾部的斜杠/
字符。
对于你的别名问题:它有点“棘手”; 从文档
该指令分配一个path作为服务请求指定位置的基础。 请注意,它可能看起来类似于root指令,但是文档根目录不会改变,只是用于请求的文件系统path。 请求的位置部分在请求Nginx问题中被丢弃。 让我们看看这个在行动。 考虑下面的例子。
location /i/ { alias /spool/w3/images/; }
对“/i/top.gif”的请求将指示Nginx提供文件“/spool/w3/images/top.gif”。 正如你所看到的,只有位置后面的URI部分被追加。 在这种情况下,位置本身“/ i /”被丢弃。 使用root指令后,会附加完整的path,即在上面的例子中,它会是“/spool/w3/images/i/top.gif” – 因此也包括位置“/ i /”。
别名也可以在由正则expression式指定的位置使用。
例如:
location ~ ^/download/(.*)$ { alias /home/website/files/$1; }
如果可以的话,避免别名,甚至在位置上下文中使用root-directive。