Discourseは、インターネットフォーラムコミュニティとメーリングリストを作成するための無料のオープンソースソフトウェアです。 2013年に作成され、RubyおよびJavascriptプログラミング言語で記述されています。 Discourseフォーラムソフトウェアは、Codeacademy、Udacity、Twitter Developers、DockerCommunityForumなどの多くの組織で使用されています。
このチュートリアルでは、Ubuntu16.04でNginxウェブサーバーを使用してDiscourseフォーラムをインストールおよび構成する方法を段階的に説明します。具体的には、Discourseフォーラムソフトウェアをインストールし、NginxをDiscourseアプリのリバースプロキシとして構成し、Letsencryptの無料SSLを使用してDiscourseフォーラムソフトウェアを保護する方法を説明します。
- Ubuntu16.04にDockerをインストールする
- Discourseフォーラムソフトウェアをインストールして構成する
- Ubuntu16.04でSSLLetsencryptを生成する
- NginxをDiscourseのリバースプロキシとしてインストールして構成します
- 談話Webインストーラー
- 談話の追加構成
- Ubuntu 16.04
- ルート権限
- SMTPアカウント-Mailgun、SendGrid、Mailjetなど
Discourseソフトウェアは、メインデータベースとしてPostgreSQLを使用し、キャッシュおよび一時データ用にRedisを使用して、RubyおよびJavascriptで記述されています。 Dockerコンテナの下にDiscourseをインストールします。
インストールプロセスはUbuntu16.04で実行されます。まず、以下のコマンドを使用してDockerをインストールします。
wget -qO- https://get.docker.com/ | sh
インストールが完了したら、Dockerサービスをチェックして、システムで既に実行されていることを確認します。
systemctl status docker
また、Dockerがスタートアップブートアプリ上にあることを確認してください。
systemctl is-enabled docker
このステップでは、Discourseソフトウェアをインストールして構成します。談話docker-composeスクリプトをダウンロードし、要件に従って構成してから、談話フォーラムソフトウェア用の新しいDockerコンテナを作成します。
新しい'/var / discourse'ディレクトリを作成し、インストーラスクリプトのクローンを作成します。
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
次に、「discourse」ディレクトリに移動し、docker-composeファイルのサンプルをコピーします。
cd /var/discourse
cp samples/standalone.yml containers/app.yml
vimエディターを使用して「app.yml」ファイルを編集します。
vim containers/app.yml
Dockerポートマッピングを構成する
デフォルトでは、すべてのHTTPおよびHTTPSリクエストはDockerプロキシによって処理されます。また、このガイドでは、この目的でNginxを使用します。すべてのHTTPとHTTPSはNginxWebサーバーによって処理されます。
そのため、Dockerポートマッピング構成を変更する必要があります。 DiscourseコンテナにはHTTP接続のみがあり、ホストは新しいポート「2045」を開いてコンテナポート80にマッピングします。
HTTPS回線のコメントを解除し、HTTP回線を新しいポート「2045」に変更します。
expose:
- "2045:80" # http
# - "443:443" # https
以下のように、「DISCOURSE_HOSTNAME」行にインストールされている談話用の独自のドメイン名を入力します。
DISCOURSE_HOSTNAME: 'discourse.hakase-labs.me'
そして、「DISCOURSE_DEVELOPER_EMAIL」行にメールアドレスを入力します。
DISCOURSE_DEVELOPER_EMAILS: '[email protected]'
SMTP構成
これは、DiscourseSoftwareの最も重要な構成です。 Discourseインストール用のSMTPアカウントを持っていることを確認してください。Mailgun、Mailjet、またはSendGridから無料のSMTPアカウントを購入または試すことができます。
このチュートリアルでは、Mailgunの無料のSMTPアカウントを使用します。 SMTP構成のコメントを解除し、以下のようにアカウントを入力します。
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [email protected]
DISCOURSE_SMTP_PASSWORD: mypassword
保存して終了します。
次に、app.ymlテンプレート構成に基づいて新しいDiscourseDockerイメージをビルドします。
sudo ./launcher bootstrap app
その後、以下のコマンドを使用して、新しいDiscourseコンテナを開始/初期化します。
sudo ./launcher start app
Discourseコンテナが稼働している必要があります。dockerコマンドを使用して確認してください。
docker ps -a
netstatを使用してホストの開いているポートを確認し、新しいdocker-proxyポート2045がリストに含まれていることを確認します。
netstat -plntu
Discourse Forumソフトウェアは、ホストUbuntu16.04のdockerコンテナーの下にインストールされています。
DiscourseフォーラムはHTTPセキュア接続の下で実行され、NginxWebサーバーによって処理されます。このガイドではLetsencryptの無料SSLを使用し、サーバーにletsencryptクライアントをインストールする必要があります。
以下のaptコマンドを使用してletsencryptをインストールします。
sudo apt install letsencrypt -y
次に、letsencryptコマンドを使用して新しいSSL証明書を生成します。
letsencrypt certonly
通知を更新するためのメールアドレスを入力し、[OK]を選択します。
Letsencrypt TOS(利用規約)の場合は、[同意する]を選択します。
次に、論議領界のドメイン名「discourse.hakase-labs.me」を入力します。
そして、それが完了すると、以下のような結果が得られます
letsencryptからの新しいSSL証明書が「/etc/letsencrypt/live」ディレクトリに生成されました。
このステップでは、Nginx Webサーバーをインストールし、ポート2045で実行されているDiscourseコンテナーのリバースプロキシとして構成します。
以下のaptコマンドを使用してNginxをインストールします。
sudo apt install nginx -y
次に、Nginxを起動し、systemctlコマンドを使用して起動時に起動できるようにします。
systemctl start nginx
systemctl enable nginx
Nginxがインストールされ、HTTPポート80で実行されています。これはnetstatを使用して確認できます。
netstat -plntu
NginxWebサーバーがUbuntu16.04サーバーにインストールされました。
次に、Discourseコンテナ用の新しい仮想ホストファイルを作成する必要があります。 nginx構成ディレクトリに移動し、vimエディターを使用して新しい「談話」ファイルを作成します。
cd /etc/nginx/
vim sites-available/discourse
次に、次のDiscoursenginx仮想ホスト構成を貼り付けます。
server {
listen 80; listen [::]:80;
server_name discourse.hakase-labs.me;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name discourse.hakase-labs.me;
ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.me/privkey.pem;
include /etc/nginx/snippets/ssl.conf;
location / {
proxy_pass http://discourse.hakase-labs.me:2045/;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://discourse.hakase-labs.me:2045/ https://discourse.hakase-labs.me;
}
}
保存して終了します。
注:
- すべてのHTTPリクエストは自動的にHTTPS接続にリダイレクトされます。
- 独自のパスディレクトリでSSL構成を変更します。
- 追加のSSL構成があります。
次に、新しい追加のssl構成ファイル「ssl.conf」を作成します。
vim snippets/ssl.conf
次の構成をファイルに貼り付けます。
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
保存して終了します。
次に、以下に示すように、「ln-s」コマンドを使用して談話仮想ホストをアクティブ化します。
ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/
構成を確認し、エラーがないことを確認してから、サービスを再起動します。
nginx -t
systemctl restart nginx
DiscourseコンテナのリバースプロキシとしてのNginxのインストールと構成が完了しました。
Webブラウザーを開き、談話URLにアクセスします。
http://discourse.hakase-labs.me
そして、HTTPセキュア接続にリダイレクトされます。 [登録]ボタンをクリックして、新しい管理者ユーザーを作成します。
次に、管理者ユーザーとパスワードを入力し、[登録]をクリックします。
また、管理者ユーザーのアクティベーションに関する新しい確認メールが届きます。
以下は、Discourseアカウント確認用のサンプル電子メールメッセージです。リンクをクリックして、管理者アカウントを確認してアクティブ化します。
そして、以下に示すような談話ページを取得する必要があります。 [ここをクリックしてアカウントをアクティブ化する]ボタンをクリックします。
これで、独自のDiscourseフォーラムを構成できます。 [次へ]ボタンをクリックすると、13ステップでDiscourseフォーラムを構成する必要があります。または、[後で]をクリックして後で構成することもできます。
以下に示すのは、NginxWebサーバーにインストールされたDiscourseForumとUbuntu16.04のHTTPSです。
以下は私の談話管理ダッシュボードです。
Discourse Forumは、Ubuntu16.04サーバーにリバースプロキシとしてNginxとともにインストールされています。
Discourseのインストール中に、管理者ユーザーのアクティブ化の確認メールが届かないという問題が発生する場合があります。
問題を分類するには、構成app.ymlに正しいSMTPアカウントがあることを確認してください。または、サーバーから手動で管理者アカウントをアクティブ化することもできます。
管理者アカウントを手動でアクティブ化するには、「/ var/discourse」ディレクトリに移動します。
cd /var/discourse
次に、以下のコマンドを使用して談話コンテナにアクセスします。
./launcher enter app
そして、以下のようにrailsコマンドを使用して最初の管理者ユーザーをアクティブ化します。
rails c
u =User.last
u.admin =true
u.activate
u.save
これで、ユーザー名とパスワードを使用してDiscourseフォーラムにログインできます。
- https://meta.discourse.org/
- https://github.com/discourse/discourse/tree/master/docs