Discourse への移行を完全に意図していたにもかかわらず、CentOS/Nginx に特化した現在のドキュメントが皆無だったため、DigitalOcean の非常に親切で忍耐強い方が、私が作成したスレッドに返信してくれました。試行錯誤の末、私と同じ状況にある Discourse の見込みユーザー向けの、簡単に 따라할 수 있는チュートリアルを一緒に作成してくれました。
おさらいすると、その状況は以下の通りです:
Apache と同じサーバーに Discourse をインストールする | Ubuntu 18.04 | DigitalOcean
credit to Bobbyiliev @ DigitalOcean
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (最初の回答)
前提条件
- 万が一の問題に備え、Droplet のバックアップを取得しておくことを強くお勧めします。何か問題が発生した場合、動作するバージョンに戻すことができます。
- Droplet に SSH で接続します。
- Apache がインストールされている必要があります。インストール手順は以下をご覧ください:
ステップ 1 - Docker のインストール
Docker のインストール手順は以下をご覧ください:
ステップ 2 - Discourse のダウンロード
まず、Discourse ファイルを格納するディレクトリを作成します:
mkdir /var/discourse
その後、公式の Discourse Docker イメージを /var/discourse にクローンします。
git clone https://github.com/discourse/discourse_docker.git /var/discourse
ステップ 3 - Discourse をポート 8080 でリッスンするように設定する
PostgreSQL、Redis などの必要なサービスが含まれている standalone.yml テンプレートを使用します。
以下のコマンドでサンプルファイルをコピーします:
cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml
その後、お好みのエディタでファイルを編集します。/var/discourse/containers/app.yml を開き、23 行目と 24 行目のポート設定を更新します:
## このコンテナが公開する TCP/IP ポートは?
expose:
- "8080:80" # ホストポート 8080 をコンテナポート 80 (http) に転送
- "8443:443" # ホストポート 8443 をコンテナポート 443 (https) に転送
また、SSL 証明書をお持ちでない場合は、16 行目をコメントアウトしてください:
#- "templates/web.ssl.template.yml"
- "templates/web.ssl.template.yml の行の前に # を追加してください。そうしないと Discourse が起動しません。
ステップ 4 - Discourse のセットアップ
ディレクトリを変更します:
cd /var/discourse
次に、Discourse を起動します(これがサービスの初回起動であるため、app.yml ファイルで行った新しい変更を反映してアプリケーションがブートストラップされます):
./discourse-setup
注意:有効なメールサーバー設定を入力してください。そうしないとセットアップが失敗する可能性があります。
ステップ 5 - Apache の設定
/etc/apache2/sites-available/ に forum.example.com.conf という名前の新しいファイルを作成し、以下の Vhost コンテンツを追加します:
<VirtualHost *:80>
ServerName forum.example.com
ServerAlias www.forum.example.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
- 以下のコマンドで Vhost を有効化します:
a2ensite forum.example.com
- Mod Proxy を有効化します:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
- Apache を再起動します:
systemctl restart apache2
その後、ドメイン名から直接 Discourse にアクセスできるようになります。
注 1:Discourse のインストール中、app.yml が上書きされ、16 行目と 17 行目(SSL)のコメントアウトが解除されることがあります。その場合は、再度それらの行をコメントアウトし、アプリを再ビルドしてください(ディレクトリ変更を忘れないでください):./launcher rebuild app
注 2:このガイドでは Discourse に対して SSL は有効化されていません。当然ながら、Apache で既に Let’s Encrypt SSL を有効化している場合、それを Discourse でも有効化する方法に関するドキュメントは見当たりません。もし解決策を見つけた方がいらっしゃれば、ご連絡ください。