web-dev-qa-db-ja.com

Apache 2.4で2つのWebアプリケーションを実行する

Linux Apacheサーバーで2つのアプリケーションを実行しようとしています。

  • OpenProject
  • pgAdmin(WSGIアプリケーション)

そして、それらをリモートコンピューターから接続するために、これらのhttpd構成ファイルを使用します。

OpenProjectの場合:

Include /etc/openproject/addons/Apache2/includes/server/*.conf

<VirtualHost *:80>
  ServerName 198.162.12.13
  DocumentRoot /opt/openproject/public

  ProxyRequests off

  Include /etc/openproject/addons/Apache2/includes/vhost/*.conf

  # Can't use Location block since it would overshadow all the other proxypass directives on CentOS
  ProxyPass /openproject/ http://127.0.0.1:6000/openproject/ retry=0
  ProxyPassReverse /openproject/ http://127.0.0.1:6000/openproject/
</VirtualHost>

PgAdminの場合:

<VirtualHost *:80>

    ServerName 198.162.214.23
    WSGIScriptAlias /pgadmin4 /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi
    WSGIDaemonProcess pgadmin processes=1 threads=25

    <Directory /usr/lib/python2.7/site-packages/pgadmin4-web/>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>

</VirtualHost>

そして今、魔法(私にとって)が始まり、私の質問がどこにあるのか:

両方のファイルでサーバー名を見てください。pgProjectには実際のIPアドレスが含まれていますが、OpenProjectにはランダムなIPアドレスがあります。

この設定では、pgAdminは機能しますが、OpenProjectは機能しません。

一般に、pgAdminの設定がなければ、OpenProjectはどのIPアドレスでも機能します。これは私には奇妙です。そのため、最初の質問は、なぜですか???

つまり、要約すると:

両方のファイルで実際のIPアドレスを設定した場合、OpenProjectは機能しますが、pgAdminは機能しません。

両方のファイルでランダムなIPアドレスを設定した場合、OpenProjectは機能しますが、pgAdminは機能しません。

OpenProjectに実際のIPを設定し、pgAdminにランダムに設定した場合、OpenProjectは機能しますが、pgAdminは機能しません。

OpenProjectにランダムIP、pgAdminに実際のIPを設定した場合、OpenProjectは機能しませんが、pgAdminは機能します。

なぜそれがめちゃくちゃになっているのですか?両方のアプリケーションが期待どおりに機能するようにこれらのファイルを構成するにはどうすればよいですか?

1
Michał Turczyn

DNSを使用して2つの名前を作成します(例:openproject.exampleおよびpgadmin.example)サーバーの実際のアドレス(明らかに198.162.12.13)を指します。これらの名前をそれぞれのServerName設定で構成し、 http://openproject.example および http://pgadmin.example を使用してそれらにアクセスします。

2

1つのIPアドレスで複数の個別のWebサイト/アプリケーションを実行するには、おおよそ3つのオプションがあります。

  • 各アプリケーションを異なるURLパス、つまり$(hostname)/app1と_/app2_にインストールします。

両方のアプリケーションをルートにインストールする必要がある場合_/_オプションは

  • 異なるポート番号で複数の仮想Webサーバーを実行すると、http://$(hostname):81/は1つのアプリケーションを表示し、http://$(hostname):82/は別のアプリケーションを表示できます

  • 複数の仮想Webサーバーを異なるホスト名で実行し、 名前ベースの仮想ホスティング を実行します。次に、_http://app1.example.com/_は1つのアプリケーションを表示でき、_http://app2.example.com/_は別のアプリケーションを表示できます

あなたの設定はその最後のオプションを使用する試みのように見えますが、両方のVirtualHost定義が同じServerNameで設定されるため、Apacheはそれらを区別できません。

2
HermanB