apache2のインストールを試みています

はい、でもいいえです。少し立ち戻って、この問題を整理してみましょう。

以前は、Apache で複数の Web サイトを運用されていたようです。Apache はポート 80 と 443 でリッスンし、「プロキシ(転送)」として「仮想ホスト」にリクエストを振り分けていました。そのため、同じサーバー上で複数の Web サイトを、すべて同じポート(80 と 443)で動作させることができていました。これは「LAMP 101」、つまり仮想ホストの基本的な仕組みです。

さて、公式の OOTB(Out of the Box)方法で Discourse をインストールすると、Discourse は同じポートにバインドしようとして失敗します。なぜなら、Apache がすでにそれらのポートを使用(バインド)しているからです。この場合、以下の選択肢があります。

  1. Discourse を Unix ドメインソケット上で実行し、Apache を設定して Discourse アプリを仮想ホストとしてリバースプロキシする。

注:これは私がテスト済みで動作しますが、Discourse によって公式にも非公式にもサポートされていません。

  1. Apache から nginx に移行し、すべての Web サーバーを nginx で実行する。Discourse-docker 本番アプリには Unix ドメインソケットを使用し、Discourse アプリを仮想ホストとしてリバースプロキシする。

注:これも Discourse によって公式にはサポートされていません。また、Apache サイトを運用している多くの人は、Apache2 の mod_rewrite やエンコードされた geo-ip モジュールの設定を nginx に移植するのが「大変(bear)」だと感じるでしょう。ただし、もちろん可能です。特に、アプリが nginx と Apache2 の両方で構築されている場合は比較的簡単ですが、それでも公式にはサポートされていません。

  1. Discourse Docker コンテナをポート 80 や 443 以外のポートで公開する。

注:これも(実際には)推奨されていません(ただし、公式にはサポートされていると記憶しています)。しかし、多くの人は https://my-great-discourse-app.org:3334 のようにポート番号を入力して Web アプリにアクセスしたくないため、本番環境ではこの方法はほとんど採用されません。開発環境であれば別ですが。

「すべての詳細を把握していない」前提での私の推奨は、LAMP を多く扱っており、現在は Discourse も増えている経験から、それぞれを別のサーバーで実行することです(これは Discourse によって公式にサポートされています)。しかし、予算が非常に厳しいため、どうしても同じサーバーで全てを動かす必要がある場合、あるいは単に 1 つの複雑なサーバーで管理したい場合は、Apache2 を設定して、Discourse アプリとの間で Unix ドメインソケットを介したリバースプロキシを行う方法を学ぶ必要があります。

私はこれをテスト済みで、Apache2 を設定して Unix ドメインソケットを介して Discourse をリバースプロキシすることは可能ですが、この解決策は(全く)公式にはサポートされていません。

注:HAProxy を用いた Apache2 の設定に関するリンクは、私が簡単に動作させることができなかったため、採用しませんでした(HAProxy だけに依存する必要はなく、「昔ながらの方法」でも可能です)。ただし、この Discourse チュートリアルに従う方が良いでしょう。

少しでもお役に立てれば幸いです、@nekodroid

「いいね!」 1