web-dev-qa-db-ja.com

Nginxの代わりにApacheサーバーを使用したGitLab 7.2.1

GitLabをインストールしました7.2.1は、 GitLab.org からの.debパッケージで、ルートアクセス権がある仮想サーバー上のDebian 7の場合。この仮想サーバーには、Apacheバージョン2.2.22とGitLabにNgnixを使用したくありません。

今、GitLabのパブリックフォルダーがどこにあるのか、何をしなければならないのか、何に注意を払わなければならないのか、私にはわかりません。

だから私の質問は次のとおりです。Apache用にvhostを設定する方法、またはApache Webサーバーで「gitlab.example.com」のようなサブドメインを使用できるようにするにはどうすればよいですか。

16
Rinma

2つのことを念頭に置いて:

  1. Unicornは8080でリッスンしています(これはSudo netstat -pant | grep Unicorn
  2. ドキュメントルートは/opt/gitlab/embedded/service/gitlab-Rails/public

次の構成を使用して、Apacheでgitlabの新しい仮想ホストを作成できます。

<VirtualHost *:80>
  ServerName gitlab.example.com
  ServerSignature Off

  ProxyPreserveHost On

  <Location />
    Order deny,allow
    Allow from all

    ProxyPassReverse http://127.0.0.1:8080
    ProxyPassReverse http://gitlab.example.com/
  </Location>

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

  # needed for downloading attachments
  DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/public

</VirtualHost>
21
Bogdan T

この記事をフォローしました http://eserdeniz.fr/articles/view/4/installer-gitlab-sous-debian-7-avec-nginx-et-mysql それは機能しましたが、nginxの代わりにApacheが必要でした。

Gitlab-ce 7.9.0.rc3を使用してApache2を構成する際に多くの問題が発生した後、ProxyPassおよびProxyPassReverseディレクティブに関するApacheドキュメントを調べました。

この仮想ホストの問題を解決しました:

    <VirtualHost *:80>
            ServerName gitlab.me

            # those options below are recommanded by Apache, dealing with the simple Proxy we need for gitlab
            ProxyRequests Off
            ProxyPreserveHost On
            AllowEncodedSlashes NoDecode

            # here we don't want to proxify the requests for the existing assets in gitlab's public directory
            ProxyPassMatch ^(/[^/]+\.(html|png|ico|css|txt))$ !
            ProxyPass /assets !

            # here we "redirect" the requests for http://gitlab.me/ to http://127.0.0.1:8080/
            ProxyPass / http://127.0.0.1:8080/

            # here we "rewrite" the redirections form Unicorn for http://127.0.0.1:8080/ into http://gitlab.me/
            ProxyPassReverse / http://127.0.0.1:8080/

            # And of course the DocumentRoot to handle the assets requests
            DocumentRoot /home/git/gitlab/public/

            # In the last versions of Apache, there is a deny,allow default order so we put those two sections to prevent 'client denied by server configuration' 403 error

            <Directory /home/git/gitlab/public/>
                    # Apache 2.2
                    Order allow,deny
                    Allow from all

                    # Apache 2.4
                    Require all granted
            </Directory>

            <Location />
                    # Apache 2.2
                    Order allow,deny
                    Allow from all

                    # Apache 2.4
                    Require all granted
            </Location>
    </VirtualHost>

今、それは非常に高速です!!

これが役立つことを願っています!

11
shaft

オンDebian GNU/Linux 8.4(jessie)Omnibus 8.5.0(apt-get)バージョン:

GitLabの構成

# cat /etc/gitlab/gitlab.rb | grep -v '^$\|^\s*\#'
external_url 'http://gitlab.example.fr'
gitlab_workhorse['enable'] = true
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
web_server['external_users'] = ['www-data']
nginx['enable'] = false

Apache2の構成

# cat /etc/Apache2/sites-enabled/gitlab.conf  | grep -v '^$\|^\s*\#'
<VirtualHost *:80>
  ServerName gitlab.example.fr
  ServerSignature Off
  ProxyPreserveHost On
  AllowEncodedSlashes NoDecode
  <Location />
    Require all granted
    ProxyPassReverse http://127.0.0.1:8181
    ProxyPassReverse http://gitlab.example.fr/
  </Location>
  RewriteEngine on
  RewriteCond %{REQUEST_URI} ^/api/v3/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads/.*
  RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA]
  DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/public
  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  /var/log/Apache2/gitlab_error.log
  CustomLog /var/log/Apache2/gitlab_forwarded.log common_forwarded
  CustomLog /var/log/Apache2/gitlab_access.log combined env=!dontlog
  CustomLog /var/log/Apache2/gitlab.log combined
</VirtualHost>

Netstat出力

# netstat -pant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      11849/postgres
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      23736/config.ru
tcp        0      0 127.0.0.1:8181          0.0.0.0:*               LISTEN      26061/gitlab-workho

ソース

https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/Apache/gitlab-omnibus-Apache24.conf

http://doc.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server

3
themadmax

HTTP gitアクセスの問題がある場合は、次の構成を確認してください。

# cat /etc/gitlab/gitlab.rb | grep -v '^$\|^\s*\#'
external_url 'http://gitlab.example.fr'
web_server['external_users'] = ['www-data']
nginx['enable'] = false
ci_nginx['enable'] = false
gitlab_git_http_server['listen_network'] = "tcp"
gitlab_git_http_server['listen_addr'] = "localhost:8282"

およびApache2構成:

# cat /etc/Apache2/sites-enabled/gitlab
<VirtualHost *:80>
        ServerName gitlab.example.fr
        ProxyRequests Off
        ServerSignature Off
        ProxyPreserveHost On
        AllowEncodedSlashes NoDecode
        ProxyPassMatch ^(/[^/]+\.(html|png|ico|css|txt))$ !
        ProxyPass /assets !
        ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080/
        RewriteEngine on
        RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
        RewriteRule /[-\/\w\.]+\.git\/ http://127.0.0.1:8282%{REQUEST_URI} [P,QSA,L]
        DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/public
            <Directory /opt/gitlab/embedded/service/gitlab-Rails/public/>
                    Order allow,deny
                    Allow from all
            </Directory>
            <Location />
                    Order allow,deny
                    Allow from all
            </Location>
</VirtualHost>

変更を適用します。

# gitlab-ctl reconfigure
# service Apache2 reload

から https://gitlab.com/gitlab-org/gitlab-ce/issues/2669#note_2176671

2
themadmax

GitLab 10.X.Xの最近の旅行者は、 this repo をご覧ください。 Apache2構成ファイルと、Apache2とNGINXを無効にしてGitLabを実行するための手順を見つけることができます。

2
Flatron

ソースからのインストール。 gitlab 7.4.5

Unicornは9095をリッスンしています。Apacheは2.2.9で、httpsを使用していません。

System information
System:         CentOS 6.7
Current User:   git
Using RVM:      no
Ruby Version:   2.1.2p95
Gem Version:    2.2.2
Bundler Version:1.11.2
Rake Version:   10.3.2
Sidekiq Version:2.17.0

GitLab information
Version:        7.4.5
Revision:       19d572e
Directory:      /home/git/gitlab
DB Adapter:     mysql2
URL:            http://gitlab.example.com
HTTP Clone URL: http://gitlab.example.com/some-project.git
SSH Clone URL:  [email protected]:some-project.git
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        2.0.1
Repositories:   /home/git/repositories/
Hooks:          /home/git/gitlab-Shell/hooks/
Git:            /usr/bin/git

Apache 2.2の 設定ファイル を修正してください。

Gitlab 6.0のもう1つの古い設定ファイルは here で、これも機能します。

#This configuration has been tested on GitLab 8.0.0
#Note this config assumes Unicorn is listening on default port 8080 and gitlab-git-http-server is listening on port 8181.
#To allow gitlab-git-http-server to listen on port 8181, edit or create /etc/default/gitlab and change or add the following:
#gitlab_git_http_server_options="-listenUmask 0 -listenNetwork tcp -listenAddr localhost:8181 -authBackend http://127.0.0.1:8080"

#Module dependencies
#  mod_rewrite
#  mod_proxy
#  mod_proxy_http
# HTTP Configuration
<VirtualHost *:80>
  ServerName gitlab.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

    # 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 />
        #Require all granted
        Order deny,allow
        Allow from all

        #Allow forwarding to gitlab-git-http-server
        #ProxyPassReverse http://127.0.0.1:8181
        #Allow forwarding to GitLab Rails app (Unicorn)
        ProxyPassReverse http://127.0.0.1:9095
        ProxyPassReverse http://gitlab.example.com/
    </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 these requests to gitlab-git-http-server
  #Forward these requests to gitlab-git-http-server
  #RewriteCond %{REQUEST_URI} ^/[\w\.-]+/[\w\.-]+/repository/archive.* [OR]
  #RewriteCond %{REQUEST_URI} ^/api/v3/projects/.*/repository/archive.* [OR]
  #RewriteCond %{REQUEST_URI} ^/[\w\.-]+/[\w\.-]+/(info/refs|git-upload-pack|git-receive-pack)$
  #RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA]

  #Forward any other requests to GitLab Rails app (Unicorn)
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_URI} ^/uploads
  RewriteRule .* http://127.0.0.1:9095%{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 503 /deploy.html

  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
  ErrorLog  logs/gitlab.example.com_error.log
  CustomLog logs/gitlab.example.com_forwarded.log common_forwarded
  CustomLog logs/gitlab.example.com_access.log combined env=!dontlog
  CustomLog logs/gitlab.example.com.log combined

</VirtualHost>

古いバージョンのgitlabを使用してソースからインストールする人に役立つことを願っています。

1
Nick Dong

@pincodedの回答を使用して、GitLabを起動して実行することができましたが、変更をプッシュするときに常に500エラーを受け取りました。

次に、GitLabが@themadmaxの回答で提供したApacheの公式構成を使用しました。ここでの問題は、サーバーに到達できず、しばらくしてから502エラーが発生したことです。

私の解決策:GitLabによる 公式の解決策 の使用(注意、GitLab SSLのみを実行する場合は、このリンクでSSL構成を選択することを忘れないでください)しかし このフォーラムエントリ I nginxを再びオンにする必要がありました。

結局、私の設定は次のようになりました:

vhost:

<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 /opt/gitlab/embedded/service/gitlab-Rails/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

</VirtualHost>

gitlab.ru:

# nginx['enable'] = false # this defaults to true
gitlab_workhorse['enable'] = true
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
0
Elektropepi

Gitlabがエラー422を出し、gitlab-Rails production.logのログでCSRFトークンについて不平を言っている理由を理解するのに半日費やしています。

これをApache configに追加する必要がありました:

RequestHeader set X-Forwarded-Ssl on

私の場合、gitlabはdebパッケージからインストールされ、ApacheはHTTPSで実行されています。

0
John Wilcox