ISPCONFIG 3和GITLAB

时间:2015-08-23 19:40:44

标签: apache debian gitlab ispconfig

我让我的gitlab在本地工作,但不知何故我无法从外部访问它。无法弄清楚问题。我正在运行Debian 8系统。

当前配置文件:

/etc/gitlab/gitlab.rb

gitlab_url = "http://127.0.0.1:9999"
external_url "http://gitlab.example.ee"

gitlab_rails['gitlab_host'] = "gitlab.example.ee"
gitlab_rails['gitlab_email_from'] = "gitlab@example.ee"
gitlab_rails['internal_api_url'] = "http://localhost:9999"

web_server['external_users'] = ['www-data']

unicorn['port'] = "9999"
nginx['enable'] = false

apache vhost(/etc/apache2/sites-available/gitlab.conf)

<VirtualHost *:9999>
ServerAdmin info@example.ee
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
ServerName gitlab.example.ee
ServerAlias gitlab.example.ee
ProxyPreserveHost On

<Location />

    Order deny,allow
    Allow from all
    Options FollowSymLinks
    Require all granted

    ProxyPassReverse http://localhost:9999/
    ProxyPassReverse http://gitlab.example.ee/
</Location>

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .* http://localhost:9999%{REQUEST_URI} [P,QSA]

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  /${APACHE_LOG_DIR}/gitlab.error.log
CustomLog /${APACHE_LOG_DIR}/gitlab.forwarded.log common_forwarded
CustomLog /${APACHE_LOG_DIR}/gitlab.access.log combined env=!dontlog
CustomLog /${APACHE_LOG_DIR}/gitlab.log combined
</VirtualHost>

2 个答案:

答案 0 :(得分:0)

您可能需要确保防火墙没有阻止与端口9999的连接。在Ubuntu上,您可能需要执行以下操作:

sudo ufw allow 9999/tcp

答案 1 :(得分:0)

我意识到这个问题已有几年了,但我最近一直在玩类似的设置(但没有安装ISPConfig)。对于可能遇到这种情况的其他人,我可以投入2美分(这是我第一次回答,所以请放轻松一下)。

注意操作系统未指定正在使用的GitLab版本。更新版本的GitLab可能正在使用较新版本的gitlab.rb,因此我不确定这是否会产生影响。

注意2 我在本网站直接从GitLab找到了很多信息:https://docs.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server。这基本上是一个复制和粘贴,但是我会在我自己的笔记中帮助解决我作为完整的n00b问题。

  
      
  1. 禁用捆绑的Nginx
  2.         

    /etc/gitlab/gitlab.rb集合中:

    nginx['enable'] = false
    
         
        
    1. 设置非捆绑的Web服务器用户的用户名
    2.         

      默认情况下,omnibus-gitlab没有外部默认设置   webserver用户,您必须在配置中指定它。对于   对于Apache / Nginx,Debian / Ubuntu的默认用户是www-data   而对于RHEL / CentOS,Nginx用户是nginx。

           

      注意:确保首先安装Apache / Nginx以便安装Web服务器   用户已创建,否则在重新配置时,多功能将失败。

           

      例如,假设网络服务器用户是www-data。在   /etc/gitlab/gitlab.rb设置:

      web_server['external_users'] = ['www-data']
      
           

      注意:此设置是一个数组,因此您可以指定多个用户   被添加到gitlab-www组。 个人注意事项: 请付款   在这里密切注意单引号和数组。而   开发,我多次重建我的gitlab服务器并进入   只是一个字符串或只是一个数组,两者都将失败。厨师脚本   将使用此值为其​​内部设置文件权限   目录,因此如果是这样,Apache将无法写入文件   不正确。

           

      运行sudo gitlab-ctl reconfigure以使更改生效。

           

      注意:如果您使用SELinux并且您的Web服务器在a下运行   限制SELinux配置文件您可能必须放宽限制   你的网络服务器。

           

      *注意:确保webserver用户对外部Web服务器使用的所有目录具有正确的权限,否则您将   在读取上游错误时收到失败(XX:权限被拒绝)。

           
          
      1. 将非捆绑的Web服务器添加到可信代理列表中( 可选: 仅当您的Web服务器位于   来自你的gitlab实例的不同机器)
      2.         

        通常,omnibus-gitlab默认使用受信任代理列表   在real_ip模块中为捆绑的NGINX配置了什么。

             

        对于非捆绑的Web服务器,需要直接配置列表,   并且应该包括您的Web服务器的IP地址(如果它不在   和GitLab一样的机器。否则,用户将显示为已签名   从您的网络服务器的IP地址。

        gitlab_rails['trusted_proxies'] = [ '192.168.1.0/24', '192.168.2.1', '2001:0db8::/32' ]
        
             
            
        1. (可选)如果使用Apache PERSONAL,请设置正确的gitlab-workhorse设置注意: 我认为这是op问题中缺少的配置。< / LI>         

          注意:以下值是在GitLab 8.2中添加的,请确保您拥有   已安装最新版本。

               

          Apache无法连接到UNIX套接字,而是需要连接到   TCP端口。允许gitlab-workhorse监听TCP(默认情况下)   端口8181)修改/etc/gitlab/gitlab.rb

          gitlab_workhorse['listen_network'] = "tcp"
          gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
          
               

          运行sudo gitlab-ctl reconfigure以使更改生效。

               
              
          1. 下载合适的网络服务器配置
          2.         

            转到GitLab recipes repository并查找综合配置   在您选择的webserver目录中。一定要选择   正确的配置文件取决于您是否选择提供GitLab   是否使用SSL。您唯一需要更改的是YOUR_SERVER_FQDN   使用您自己的FQDN,如果您使用SSL,则使用SSL的位置   密钥目前驻留。您可能还需要更改位置   你的日志文件。

为了完整起见,以下是没有SSL配置的Apache v2.4配置示例: 阅读评论: 如果您按照上述说明操作,在步骤4中,gitlab_workhorse已经配置为侦听tcp而不是unix套接字,因此可以忽略该行。 不要忽视 模块依赖项!这些是Apache能够代理对gitlab实例的请求所必需的。在Ubuntu上(我使用Ubuntu Server 16.04.4,但我相信大多数其他Ubuntu版本反应相同),可以使用sudo a2enmod rewrite proxy proxy_http激活这些模块。

# This configuration has been tested on GitLab 8.2
# Note this config assumes unicorn is listening on default port 8080 and
# gitlab-workhorse is listening on port 8181. To allow gitlab-workhorse to
# listen on port 8181, edit or create /etc/default/gitlab and change or add the following:
#
# gitlab_workhorse_options="-listenUmask 0 -listenNetwork tcp -listenAddr 127.0.0.1:8181 -authBackend http://127.0.0.1:8080"
#
#Module dependencies
# mod_rewrite
# mod_proxy
# mod_proxy_http
<VirtualHost *:80>
  ServerName YOUR_SERVER_FQDN
  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 />
    # New authorization commands for apache 2.4 and up
    # http://httpd.apache.org/docs/2.4/upgrading.html#access
    Require all granted

    #Allow forwarding to gitlab-workhorse
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse http://YOUR_SERVER_FQDN/
  </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

  #Forward all requests to gitlab-workhorse except existing files like error documents
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]

  # needed for downloading attachments
  DocumentRoot /home/git/gitlab/public

  #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up.
  ErrorDocument 404 /404.html
  ErrorDocument 422 /422.html
  ErrorDocument 500 /500.html
  ErrorDocument 502 /502.html
  ErrorDocument 503 /503.html

  # It is assumed that the log directory is in /var/log/httpd.
  # For Debian distributions you might want to change this to
  # /var/log/apache2.
  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
  ErrorLog /var/log/httpd/logs/YOUR_SERVER_FQDN_error.log
  CustomLog /var/log/httpd/logs/YOUR_SERVER_FQDN_forwarded.log common_forwarded
  CustomLog /var/log/httpd/logs/YOUR_SERVER_FQDN_access.log combined env=!dontlog
  CustomLog /var/log/httpd/logs/YOUR_SERVER_FQDN.log combined

</VirtualHost>

此配置文件不适用于简单的复制和粘贴!

  1. 查找并替换&#34; YOUR_SERVER_FQDN&#34;使用gitlab实例的完全限定域名。根据操作系统的问题,这将是http://gitlab.example.ee,但基本上应与external_url文件中的gitlab.rb值相匹配。

  2. 查找并替换&#34; httpd&#34;与&#34; apache&#34;。配置的设计并未考虑到Ubuntu服务器,并且相应的目录称为&#34; apache&#34;。我想你也可以使用$ {APACHE_LOG_DIR},但我自己没有测试过。

  3. 对于基本设置,这应该可以正常工作。我强烈建议您考虑使用SSL设置(可以在提供的链接中找到文档)。即使您不需要安全设置(可能这是一个内部服务器),多功能中的其他功能(如Mattermost)也很容易在没有启用SSL的情况下抛出错误(而不是使用自签名证书)。 / p>