Discourseは、インターネットフォーラムコミュニティとメーリングリストを作成するための無料のオープンソースソフトウェアです。 2013年に作成され、RubyおよびJavascriptプログラミング言語を使用して記述されています。 Discourseフォーラムソフトウェアは、Codeacademy、Udacity、Twitter開発者、Dockerコミュニティフォーラムなど、多くの組織で使用されています。
このチュートリアルでは、CentOS7サーバーの下でNginxWebサーバーを使用してDiscourseForumをインストールおよび構成する方法を段階的に説明します。具体的には、Discourseフォーラムソフトウェアをインストールし、NginxをDiscourseアプリのリバースプロキシとして構成し、Letsencryptの無料SSLを使用してDiscourseフォーラムソフトウェアを保護する方法を説明します。
私たちが行うこと
- CentOS7にDockerをインストールする
- Discourseフォーラムソフトウェアのインストールと構成
- CentOS7でSSLLetsencryptを生成する
- 談話のリバースプロキシとしてNginxをインストールして構成する
- 談話Webインストーラー
- 談話の追加構成
前提条件
- CentOS 7
- ルート権限
- SMTPアカウント-例: Mailgun、SendGrid、またはMailjetから
談話フォーラムはDockerコンテナの下にインストールされます。したがって、最初に実行する必要があるのは、CentOS7サーバーにDockerをインストールすることです。
次のコマンドを使用して、CentOS7にDockerをインストールします。
wget -qO- https://get.docker.com/ | sh
wgetコマンドがない場合は、リポジトリからインストールしてください。
yum -y install wget
インストールが完了したら、Dockerサービスを起動し、次のsystemctlコマンドを使用して起動時に起動できるようにします。
systemctl start docker
systemctl enable docker
Dockerエンジンがインストールされ、CentOS7サーバーで実行されています。次のコマンドを使用してサービスステータスを確認します。
systemctl status docker
Dockerサービスがアクティブで実行されています。
このステップでは、Discourseソフトウェアをインストールして構成します。談話docker-composeスクリプトをダウンロードし、必要に応じて構成してから、談話フォーラムソフトウェア用の新しいDockerコンテナを作成します。
談話をダウンロードする前に、サーバーにgitコマンドをインストールする必要があります。
yum -y install git
次に、新しいディレクトリ'/ var / discourse'を作成し、gitコマンドを使用してdiscoursedockerスクリプトをダウンロード/クローンします。
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
discourseディレクトリに移動し、docker-composeスクリプト「standalone.yml」のサンプルを「app.yml」という名前の「/ var / discourse /container/」ディレクトリにコピーします。
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.co'
そして、「DISCOURSE_DEVELOPER_EMAIL」行にメールアドレスを入力します。
DISCOURSE_DEVELOPER_EMAILS: '[email protected]'
-SMTP構成
SMTP構成は、Discourseソフトウェアの最も重要な構成です。 Discourseインストール用のSMTPアカウントを持っていることを確認してください。Mailgun、Mailjet、またはSendGridから無料のSMTPアカウントを購入または試すことができます。
このチュートリアルでは、Mailgunの無料の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
そして、DiscourseDockerコンテナが稼働しています。「dockerps」コマンドを使用して確認してください。
docker ps -a
netstatを使用してホストの開いているポートを確認し、ポート2045の新しいサービスdocker-proxyがリストに含まれていることを確認します。
netstat -plntu
Discourse Forumソフトウェアは、ホストCentOS7のdockerコンテナーの下にインストールされています。
このチュートリアルでは、Nginx WebサーバーでDiscourseフォーラムを実行し、HTTPS接続のみを受け入れます。この目的のために、ドメイン名に新しいSSL証明書が必要なので、Letsencryptの無料のSSL証明書を使用します。
次のようにyumコマンドを使用してLetsencryptコマンドラインツールをインストールします。
yum -y install letsencrypt
インストール後、Firewalld構成に新しいHTTPおよびHTTPSサービスを追加します。
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
次に、以下のletsencryptコマンドを使用して、Discourseフォーラムの新しいSSL証明書を生成します。
letsencrypt certonly
Letsencryptから2つの検証が表示されます。番号「1」を入力して、認証用の一時的なWebサーバーを起動します。
この一環として、通知を更新するためのメールアドレスを入力し、「A」と入力して、letsencrypt TOS(利用規約)に同意します。
次に、論議領界のドメイン名「discourse.hakase-labs.co」を入力します。
プロセスが完了すると、次のような結果が得られます。
letsencryptからの新しいSSL証明書が「/etc/letsencrypt/live」ディレクトリに生成されました。
このチュートリアルでは、Dockerコンテナで実行されているDiscourseのリバースプロキシとしてNginxWebサーバーを使用します。 NginxウェブサーバーはHTTPおよびHTTPSポートで実行され、すべてのクライアントリクエストはNginxによって処理されます。
Nginx Webサーバーをインストールする前に、システムにEPELリポジトリをインストールする必要があります。
yum -y install epel-release
次に、次のyumコマンドを使用してEPELリポジトリからnginxをインストールします。
yum -y install nginx
すべてのインストールが完了したら、nginx構成ディレクトリ'/ etc/nginx'に移動します。
cd /etc/nginx/
そして、vimを使用して新しい追加のSSL構成「ssl.conf」を作成します。
vim ssl.conf
次のSSL構成をそこに貼り付けます。
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;
変更を保存して、エディターを終了します。
次に、Discourse用の新しいnginx仮想ホストファイル「discourse.conf」を作成します。
vim conf.d/discourse.conf
次の構成をそこに貼り付けます。
server {
listen 80; listen [::]:80;
server_name discourse.hakase-labs.co;
# Automatic Redirect HTTP to HTTPS Nginx
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name discourse.hakase-labs.co;
# SSL Configuration
ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.co/privkey.pem;
include /etc/nginx/ssl.conf;
# Reverse Proxy Configuration
location / {
proxy_pass http://discourse.hakase-labs.co: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.co:2045/ https://discourse.hakase-labs.co;
}
}
保存して終了します。
次に、nginx構成をテストし、エラーがないことを確認します。次に、Nginxサービスを再起動します。
nginx -t
systemctl restart nginx
DiscourseコンテナのリバースプロキシとしてのNginxのインストールと構成が完了しました。
ウェブブラウザを開き、談話のURLにアクセスします。私のものは次のとおりです。
http://discourse.hakase-labs.co
そして、HTTPS接続にリダイレクトされます。
[登録]をクリックします 'ボタン。
次に、新しい「管理者」アカウントを作成する必要があります。
管理者のユーザー名とパスワードを入力し、[登録]をクリックします '。
そして、あなたは電子メール確認のためのページを得るでしょう。メールの受信トレイを確認し、以下のようにDiscourseフォーラムからメール設定を取得していることを確認してください。
'リンクをクリックします '。
そして、「談話へようこそ」ページが表示されます。
ボタンをクリックします'アカウントをアクティブ化するには、ここをクリックしてください '。そして今、あなたは次のページに行くべきです。
'多分後でをクリックします 'ボタン。
Discourse Forumがインストールされ、以下に示すデフォルトのホームページが表示されます。
「管理ダッシュボード」に移動すると、Discourse管理ダッシュボードが表示されます。
Discourse Forum Softwareは、CentOS7サーバーのリバースプロキシとして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フォーラムにログインできます。