gitlab 使用现有 nginx 服务器

Posted 风与叶子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab 使用现有 nginx 服务器相关的知识,希望对你有一定的参考价值。

gitlab 安装自带 nginx,如果想利用原有 nginx,可按如下操作:

8.0 版本 socket 文件位置有变动,感谢评论区的同学。

  • nginx 增加虚拟主机配置

    # gitlab socket 文件地址
    upstream gitlab {
      # 7.x 版本在此位置
      # server unix:/var/opt/gitlab/gitlab-rails/tmp/sockets/gitlab.socket;
      # 8.0 位置
      server unix://var/opt/gitlab/gitlab-rails/sockets/gitlab.socket;
    }
    
    server {
      listen *:80;
    
      server_name gitlab.liaohuqiu.com;   # 请修改为你的域名
    
      server_tokens off;     # don\'t show the version number, a security best practice
      root /opt/gitlab/embedded/service/gitlab-rails/public;
    
      # Increase this if you want to upload large attachments
      # Or if you want to accept large git objects over http
      client_max_body_size 250m;
    
      # individual nginx logs for this gitlab vhost
      access_log  /var/log/gitlab/nginx/gitlab_access.log;
      error_log   /var/log/gitlab/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 {
        # If you use https make sure you disable gzip compression 
        # to be safe against BREACH attack
    
        proxy_read_timeout 300; # Some requests take more than 30 seconds.
        proxy_connect_timeout 300; # Some requests take more than 30 seconds.
        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_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 do 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 /opt/gitlab/embedded/service/gitlab-rails/public;
        # gzip_static on; # to serve pre-gzipped version
        expires max;
        add_header Cache-Control public;
      }
    
      error_page 502 /502.html;
    }
    
  • 禁用自带 nginx

    vim /etc/gitlab/gitlab.rb
    

    加入

    nginx[\'enable\'] = false
    
  • 重启 nginx, 重启gitlab

    sudo /usr/local/nginx/sbin/nginx -s reload
    sudo gitlab-ctl reconfigure
    
  • 权限配置

    访问会报502。原本是 nginx 用户无法访问gitlab用户的 socket 文件,用户权限配置,因人而异。粗暴地:

    sudo chmod -R o+x /var/opt/gitlab/gitlab-rails

    1. 拷贝一份内置nginx 的配置文件 gitlab-http.conf  到新的nginx的配置中
    2. 修改 /etc/gitlab/gitlab.rb ,禁用nginx  nginx[enable] = false
    3. vim /etc/gitlab/gitlab.rb
    
     external_url \'http://git.qiwenqiqu.com\' #域名配置
     unicorn[\'listen\'] = \'0.0.0.0\'
     unicorn[\'port\'] = 8081
    # git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data" } })
     git_data_dirs({ "default" => { "path" => "/data/git-data" } })
    
    #web_server[\'external_users\'] = [\'nginx\',\'gitlab-www\',\'git\',\'www\',\'www-data\']
    #新nginx用户www能够访问gitlab,很重要
    web_server[\'external_users\'] = [\'www\'] 
    
    #然后 gitlab-ctl reconfigure ,然后 gitlab-ctl restart

     

    #备忘录 ,比较乱 忽略
    
    gitlab 坑
    ./embedded/service/gitlab-shell/lib/gitlab_config.rb
    
    
    ./embedded/lib/ruby/gems/2.3.0/gems/omniauth-gitlab-1.0.2/lib/omniauth/strategies/gitlab.rb
    ./embedded/cookbooks/cache/cookbooks/gitlab/libraries/gitlab.rb
    ./embedded/cookbooks/gitlab/libraries/gitlab.rb
    ./embedded/service/gitlab-rails/lib/gitlab.rb
    
    
    1.[端口不通]
    vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
    listen "0.0.0.0:8081", :tcp_nopush => true
    一定不要用 127.0.0.1
    
    firewall-cmd --permanent --add-port=8081/tcp
    firewall-cmd --reload
    
    1.[样式错乱] gitlab error compiling css asset 
    vim ./embedded/service/gitlab-rails/config/gitlab.yml
    webhook_timeout: 120
     
    
    gitlab 数据迁移
    http://blog.csdn.net/hj7jay/article/details/54311010
    
    vim /etc/gitlab/gitlab.rb
    
    external_url \'http://git.qiwenqiqu.com\' #域名配置
     unicorn[\'listen\'] = \'0.0.0.0\'
     unicorn[\'port\'] = 8081
    # git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data" } })
     git_data_dirs({ "default" => { "path" => "/data/git-data" } })
    [迁移数据注意目录名称不要写错了]
     
    #web_server[\'external_users\'] = [\'nginx\',\'gitlab-www\',\'git\',\'www\',\'www-data\']
    web_server[\'external_users\'] = [\'www’]
    
    配置文件位置:
    
     [
    /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml     
     /etc/gitlab/gitlab.rb
    /opt/gitlab/embedded/service/gitlab-shell/config.yml
    ]
    
    域名配置
    vim /opt/gitlab/embedded/service/gitlab-shell/config.yml
    gitlab_url: "http://0.0.0.0:8081"
    
    
    
    ####
    配置GitLab域名,否则项目git clone的地址时错
    vim  /etc/gitlab/gitlab.rb
    
    编辑:external_url \'你的网址\'
    
    例如:external_url \'http://192.168.1.100\'
    
    编辑完成后,再sudo gitlab-ctl reconfigure一下,使配置生效
    
    ####
    
    ### gitlab配置 http://www.cnblogs.com/softidea/p/5229412.html ###
    
    
    nginx 冲突配置
    https://docs.gitlab.com/omnibus/settings/nginx.html 
    https://gitlab.com/gitlab-org/gitlab-workhorse/issues/26
    
    $$
    2017/04/25 00:18:37 [crit] 6297#0: *32 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied) while connecting to upstream, client: 221.216.146.9, server: test.qiwenqiqu.com, request: "GET / HTTP/1.1", upstream: "http://unix:/var/opt/gitlab/gitlab-workhorse/socket:/", host: "test.qiwenqiqu.com"
    $$
    $$sudo usermod -aG gitlab-www www$$

     

     

以上是关于gitlab 使用现有 nginx 服务器的主要内容,如果未能解决你的问题,请参考以下文章

替换或删除后台堆栈上现有片段的代码不起作用

如何将 GitLab 放在 nginx 后面

使用HTTPS配置gitlab omnibus,无需在AWS上使用nginx证书

带有 Apache 服务器而不是 Nginx 的 GitLab 7.2.1

GitLab安装与汉化-实战

Gitlab+Gerrit+Ldap+nginx+mysql 之Gerrit搭建与配置