このチュートリアルでは、Ubuntu18.04サーバーにDiscourseをインストールする方法を説明します。 StackExchangeの創設者であるJeffAtwoodによって作成されたDiscourseは、フォーラムの議論に革命をもたらすことを目的とした、オープンソースのインターネットフォーラム(別名オンラインメッセージボード)およびメーリングリスト管理ソフトウェアです。これは、バックエンドデータベース管理システムとしてPostgreSQLを使用して、Ember.jsとRubyonRailsで記述されています。
談話の特徴
- 無限スクロール。スレッドに次のページはありません。下にスクロールして詳細をご覧ください。
- ライブアップデート、添付ファイルのドラッグアンドドロップ。
- フォーラムのスレッドは人気順にランク付けできます。
- 「ベストオブスレッド」ビューは、特定のスレッドへのベストリプライを表示できます。
- スレッドのどこを読んでいたかを覚えておく機能。
- URLを拡張してURLの概要を提供します。
- ユーザーはメールで返信できます。
- フラグシステムは、スタッフが確認できるようになるまで、不適切な投稿を自動的に非表示にします。
- モデレーターは、任意のトピックを分割、マージ、ローカル化、またはアーカイブできます。
- 信頼のレベルに基づいて、ユーザーをモデレーターとして昇格させたり、トロール、悪意のある人物、スパマーとして降格させたりして、フォーラムを文明化することができます。組み込みのAkismetスパム保護と、新しいユーザーサンドボックス、ユーザーフラグのブロック、標準のnofollowなどのヒューリスティック。
- バッジシステムは、ユーザーが達成したことを示すことができます。
- モバイルフレンドリーでレスポンシブなウェブデザイン。ユーザーは、ラップトップ、タブレット、電話から読んだり投稿したりできます。
- 100%無料のオープンソース。より優れた、またはより完全な機能を備えた有料の商用バージョンはありません。
- シングルサインオン。 Discourseを既存のサイトのログインシステムとシームレスに統合します。
- ソーシャルログイン。 Google、Facebook、Twitterなどの一般的なソーシャルログインを簡単に追加できます。
- iOSおよびAndroidアプリが利用可能です。
- 30以上の言語で利用できます。
- アカウントのセキュリティを向上させるための2要素認証。
- その他多数。
Dockerを使用せずにUbuntu18.04にDiscourseをインストールするための前提条件
Discourseをインストールする公式の方法は、Dockerを使用することです。これは、アプリケーションをすばやく起動して実行したい場合に最適です。しかし、Dockerはリソースを大量に消費します。考えてみてください。PostgreSQLデータベースサーバーなどのコンポーネントがすでに稼働している場合でも、Dockerメソッドはコンテナ内で別のPostgreSQLデータベースを実行するため、サーバーリソースが無駄になります。 DockerでDiscourseを実行するには、2GBのRAMサーバーが必要です。 Dockerを使用せずに1GBのRAMサーバーでDiscourseを実行する方法を紹介します。
Discourseを実行するには、少なくとも1GBのRAMを搭載したサーバーが必要です。この紹介リンクをクリックして、Vultrにアカウントを作成し、50ドルの無料クレジットを取得できます(新規ユーザーのみ)。 Vultrにアカウントを作成したら、サーバーにUbuntu 18.04をインストールし、以下の手順に従います。
ドメイン名も必要です。ドメイン名をNameCheapに登録したのは、価格が安く、whoisのプライバシー保護が一生無料になるためです。
通知 :Ubuntu18.04にsudoユーザーと一緒にDiscourseをインストールしました。最良の結果を得るには、rootではなくsudoユーザーを使用してこのチュートリアルに従う必要があります。
sudoユーザーを追加するには、単に実行します
sudo adduser username sudo adduser username sudo
次に、新しいユーザーに切り替えます。
su - username
ステップ1:PostgreSQLデータベースサーバーを構成する
SSH経由でサーバーにログインし、次のコマンドを実行して、デフォルトのUbuntuソフトウェアリポジトリからPostgreSQLをインストールします。
sudo apt install postgresql
PostgreSQLデータベースサーバーは自動的に起動し、127.0.0.1:5432
でリッスンします 、次のコマンドでわかるように。 (Ubuntuサーバーにnetstat
がない場合 コマンドを実行すると、sudo apt install net-tools
を実行できます。 インストールするコマンド。)
sudo netstat -lnpt | grep postgres
上記のコマンドからの出力が表示されない場合は、PostgreSQLサーバーが実行されていないことが原因である可能性があります。次のコマンドを発行してPostgreSQLサーバーを起動できます。
sudo systemctl start postgresql
postgres
ユーザーは、インストールプロセス中にOS上に作成されます。 PostgreSQLデータベースサーバーのスーパーユーザーです。デフォルトでは、このユーザーにはパスワードがなく、sudo
を使用できるため、パスワードを設定する必要はありません。 postgres
に切り替えます ユーザーとPostgreSQLコンソールにログインします。
sudo -u postgres psql
Discourseのデータベースを作成します。
CREATE DATABASE discourse;
データベースユーザーを作成します。
CREATE USER discourse_user;
このユーザーのパスワードを設定します。
ALTER USER discourse_user WITH ENCRYPTED PASSWORD 'your_preferred_password';
このユーザーを談話データベースの所有者として設定します。
ALTER DATABASE discourse OWNER TO discourse_user;
談話データベースに接続します。
\c discourse;
hstore
を作成します およびpg_trgm
拡張機能。
CREATE EXTENSION hstore; CREATE EXTENSION pg_trgm;
PostgreSQLコンソールからログアウトします。
\q
ステップ2:Ubuntu18.04にRubyをインストールする
談話にはRuby2.7以降が必要です。ただし、Ubuntu18.04リポジトリにはRuby2.5.1が付属しています。 Rubyの最新バージョンは3.0.1です。ただし、Discourseと互換性がない可能性があるため、最新バージョンの使用はお勧めしません。最高の互換性を得るには、PPAからRuby2.7をインストールすることをお勧めします。
sudo apt install software-properties-common sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt install ruby2.7
Rubyのバージョン番号を確認するには、
を実行します。ruby -v
出力:
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu]
ステップ3:談話をダウンロードして構成する
gitツールをインストールします。
sudo apt install git
ホームディレクトリにいると仮定して、次のコマンドを実行して、GithubからDiscourseコードリポジトリのクローンを作成します。
git clone https://github.com/discourse/discourse.git
/ var / www /ディレクトリがまだ作成されていない場合は、作成します。
sudo mkdir /var/www/
談話ディレクトリを/var/www/
に移動します 。
sudo mv discourse/ /var/www/
ディレクトリを変更し、Discourseの最新の安定したリリースを使用します。 Githubリリースページにアクセスして、最新の安定バージョンを確認できます。現在、v2.5.0を使用しています。
cd /var/www/discourse/ git checkout v2.5.0
bundler:Ruby依存関係マネージャーをインストールします。
sudo /usr/bin/gem install bundler
次のパッケージをインストールして、ソースコードをコンパイルします。
sudo apt-get install gcc build-essential ruby2.7-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick
次に、Discourseの依存関係をインストールします。このプロセスは大量のRAMを使用する可能性があります。
RAILS_ENV=production /usr/local/bin/bundle config set path '/var/www/discourse/vendor/bundle/' RAILS_ENV=production /usr/local/bin/bundle install
デフォルトの構成ファイルを新しいファイルにコピーします。
cp config/discourse_defaults.conf config/discourse.conf
新しいファイルを編集します。
nano config/discourse.conf
データベース接続を構成します。
# host address for db server # This is set to blank so it tries to use sockets first db_host = localhost # port running db server, no need to set it db_port = 5432 # database name running discourse db_name = discourse # username accessing database db_username = discourse_user # password used to access the db db_password = your_passwordへのアクセスに使用されるパスワード
Discourseフォーラムで使用されているドメイン名を変更します。
# hostname running the forum hostname = "community.example.com"
ファイルを保存して閉じます。
ステップ4:無料のMaxMindライセンスキーを取得する
Discourseには、組み込みのWeb分析ツールが付属しています。訪問者の地理情報を知りたい場合は、MaxMindライセンスキーが必要です。
MaxMindでアカウントを作成します。 Maxmindからメールが届きます。メール内のリンクをクリックしてパスワードを設定し、MaxMindアカウントにログインします。次に、My License Key
を選択します 左側のバーにあります。
新しいライセンスキーの生成をクリックします ボタン。
ライセンスキーに名前を付けます。次に、No
を選択します 、geoipupdate
を使用する必要がないため プログラム。次に、Confirm
をクリックします ボタン。
ライセンスキーが作成されたら、ライセンスキーをコピーします。 Discourse構成ファイルを開きます。
nano config/discourse.conf
次の行を見つけて、ここにライセンスキーを追加します。
maxmind_license_key=
ファイルを保存して閉じます。
ステップ5:談話を開始する
必要なパッケージをインストールします。
sudo apt install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs npm sudo npm install -g svgo
本番環境の構成ファイルを編集します。
nano /var/www/discourse/config/environments/production.rb
5行目に次のコードを追加します。
require 'uglifier'
次に、次の行を見つけます。
config.assets.js_compressor = :uglifier
次のように置き換えます:
config.assets.js_compressor = Uglifier.new(:harmony => true)
ファイルを保存して閉じます。次に、次のコマンドを実行してデータベースを初期化します。この手順でエラーが発生した場合は、コマンドを再実行してください。
RAILS_ENV=production /usr/local/bin/bundle exec rake db:migrate
次に、JavaScriptなどの静的アセットをコンパイルしますが、その前にファイルを編集する必要があります。
nano /var/www/discourse/lib/tasks/assets.rake
brotli
を含む行を見つける必要があります JavaScriptファイルはGzipで圧縮されるため、コメントアウトしてBrotili圧縮を無効にします。 GzipとBrotiliの両方の圧縮が有効になっている場合、アセットをコンパイルするときにいくつかの厄介なエラーが発生します。次の行(281行目)を見つけてコメントアウトします。
brotli(path, max_compress)
ファイルを保存して閉じます。次に、次のコマンドを実行してアセットをコンパイルします。このプロセスでは、1GBなどの大量のRAMを使用できます。
RAILS_ENV=production /usr/local/bin/bundle exec rake assets:precompile
次に、 puma.rbを編集します ファイル
nano /var/www/discourse/config/puma.rb
次の行を見つけます。
APP_ROOT = '/home/discourse/discourse'
アプリケーションパスを
に変更しますAPP_ROOT = '/var/www/discourse'
ファイルを保存して閉じます。次に、ソケットとプロセスIDディレクトリを作成します。
mkdir /var/www/discourse/tmp/sockets/ /var/www/discourse/tmp/pids/
談話を開始します。
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
サンプル出力:
[24161] Puma starting in cluster mode... [24161] * Version 4.3.1 (ruby 2.7.1-p146), codename: Mysterious Traveller [24161] * Min threads: 8, max threads: 32 [24161] * Environment: development [24161] * Process workers: 4 [24161] * Preloading application [24161] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock [24161] ! WARNING: Detected 4 Thread(s) started in app boot: [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:38 sleep_forever> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:40:in `pop' [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus.rb:667 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/connection/ruby.rb:68:in `select' [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:123:in `sleep' [24161] ! #<Thread:[email protected]/discourse.rb:708 sleep> - lib/discourse.rb:711:in `sleep' [24161] * Daemonizing...
DiscourseはUnixソケットでリッスンしています: /var/www/discourse/tmp/sockets/puma.sock 。
ステップ6:Nginxリバースプロキシを構成する
デフォルトのUbuntu18.04ソフトウェアリポジトリからNginxWebサーバーをインストールします。
sudo apt install nginx
サンプルのNginx仮想ホスト構成ファイルをコピーします。
sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
新しいファイルを編集します。
sudo nano /etc/nginx/conf.d/discourse.conf
Pumaを使用するので、次の行を見つけてコメントアウトします。
upstream discourse { server unix:/var/www/discourse/tmp/sockets/nginx.http.sock; server unix:/var/www/discourse/tmp/sockets/nginx.https.sock; }
次の行を見つけてコメントを外します。
# upstream discourse { # server unix:/var/www/discourse/tmp/sockets/puma.sock; # }
次の行を見つけます。
server_name enter.your.web.hostname.here;
サーバー名を変更します。ドメイン名のDNSAレコードを追加することを忘れないでください。
server_name community.example.com;
NginxはデフォルトでBrotli圧縮をサポートしていないため、次の行をコメントアウトしてください。
brotli_static on;
ファイルを保存して閉じます。キャッシュディレクトリを作成します。
sudo mkdir -p /var/nginx/cache/
次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
これで、http://community.example.com
でDiscourseフォーラムを見ることができるはずです。 。
ステップ7:HTTPSを有効にする
HTTPトラフィックを暗号化するには、Let’sEncryptから発行された無料のTLS証明書をインストールしてHTTPSを有効にします。次のコマンドを実行して、Let’s Encryptクライアント(certbot)をUbuntu18.04サーバーにインストールします。
sudo apt install certbot python3-certbot-nginx
次に、次のコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d community.example.com
どこ
-
--nginx
:nginxプラグインを使用します。 -
--agree-tos
:利用規約に同意します。 --redirect
:301リダイレクトでHTTPSを強制します。-
--hsts
:すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。ドメインに常にTLSを使用するようにブラウザを強制します。 SSL/TLSストリッピングから防御します。 -
--staple-ocsp
:OCSPステープリングを有効にします。有効なOCSP応答は、TLS中にサーバーが提供する証明書にホチキス止めされます。
これで、証明書が取得され、自動的にインストールされます。
また、HTTPS(https://community.example.com
)を介してDiscourseフォーラムにアクセスできます。 。
Firefoxのブラウザのアドレスバーに黄色の三角形が表示されている場合は、一部の画像が引き続きHTTPプロトコルで提供されているためです。この問題を解決するために、DiscourseNginx構成ファイルを編集できます。
sudo nano /etc/nginx/conf.d/discourse.conf
安全でないリクエストをアップグレードするには、SSLサーバーブロックに次の行を追加します。
add_header Content-Security-Policy upgrade-insecure-requests;
ファイルを保存して閉じます。そしてNginxをリロードします。
sudo nginx -t sudo systemctl reload nginx
ステップ8:管理者アカウントを作成する
談話ディレクトリ( / var / www / discourse / )に移動します )そして次のコマンドを実行して管理者アカウントを作成します。
RAILS_ENV=production /usr/local/bin/bundle exec rake admin:create
管理者アカウントのメールアドレスとパスワードの入力を求められます。
その後、Discourseを再起動します。
RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart
ここで、Discourse Webページを更新すると、ログインできるようになります。
502の不正なゲートウェイエラーが表示された場合、再起動コマンドは成功しませんでした。次のコマンドでDiscourseを開始する必要があります。
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
ログインすると、セットアップウィザードを開始できます。 (https://community.example.com/wizard)そして指示に従ってインストールを完了します。 Cloudflare CDNを使用する場合は、設定に移動する必要があります ->セキュリティ ->コンテンツセキュリティポリシーsrc 次のURLを追加します: https://community.example.com/cdn-cgi/
ステップ9:バックグラウンド処理サービスの構成:Sidekiq
Sidekiqはオープンソースのジョブスケジューラです。メールの送信など、多くのタスクはsidekiqによって非同期的に実行されます。 sidekiq.yml
を編集します ファイル。
nano /var/www/discourse/config/sidekiq.yml
ファイルの最後に次の行を追加します。この構成は、ユーザーアクティビティとRAMが少ないDiscourseフォーラムに適しています。ユーザーアクティビティが多い場合は、同時実行性とキューの数を2倍にすることを検討してください。
production: :concurrency: 2 :queues: - [critical, 4] - [default, 2] - [low] - [ultra_low]
ファイルを保存して閉じます。次に、sidekiq用のSystemdサービスを作成します。
sudo nano /etc/systemd/system/discourse-sidekiq.service
ファイルに次の行を追加します。 ユーザー名を置き換えます 実際のユーザー名で。
[Unit] Description=Discourse sidekiq background processing service After=multi-user.target [Service] Type=simple User=username PIDFile=/var/www/discourse/tmp/pids/sidekiq.pid WorkingDirectory=/var/www/discourse Environment=RAILS_ENV=production ExecStart=/usr/local/bin/bundle exec sidekiq -C /var/www/discourse/config/sidekiq.yml Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。次に、このサービスを開始して有効にします。
sudo systemctl start discourse-sidekiq sudo systemctl enable discourse-sidekiq
ステータスを確認してください。実行されていることを確認してください。
sudo systemctl status discourse-sidekiq
Sidekiqダッシュボードは、https://community.example.com/sidekiq
で入手できます。 。
ステップ10:談話用のSystemdサービスを作成する
まず、現在の談話プロセスを
で停止しますcd /var/www/discourse/ RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid stop
次に、puma.rb
を編集します ファイル。
nano /var/www/discourse/config/puma.rb
次の2行をコメントアウトします(#
を追加します SystemdがプロセスIDとデーモン化を処理するため、各行の先頭に記号が表示されます。
pidfile "#{APP_ROOT}/tmp/pids/puma.pid" daemonize true
次に、Discourse用のSystemdサービスを作成します。
sudo nano /etc/systemd/system/discourse.service
ファイルに次の行を追加します。 ユーザー名を置き換えます 実際のユーザー名で。
[Unit] Description=Discourse service [Service] Type=simple User=username PIDFile=/var/www/discourse/tmp/pids/puma.pid WorkingDirectory=/var/www/discourse Environment=RAILS_ENV=production ExecStart=/usr/local/bin/bundle exec puma -C config/puma.rb Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
ファイルを保存して閉じます。次に、このサービスを開始して有効にします。
sudo systemctl start discourse sudo systemctl enable discourse
ステータスを確認してください。実行されていることを確認してください。
sudo systemctl status discourse
ステップ11:SMTPを構成する
Discourseは、訪問者がフォーラムにアカウントを登録して通知を受信できるように、電子メールを送信する必要があります。 SMTP設定を編集するには、discourse.conf
を開きます ファイル。
nano /var/www/discourse/config/discourse.conf
SMTPサーバーを構成するための次の行を見つけることができます。通常、SMTPポートとして587を使用することをお勧めします。
# address of smtp server used to send emails smtp_address = # port of smtp server used to send emails smtp_port = 25 # domain passed to smtp server smtp_domain = # username for smtp server smtp_user_name = # password for smtp server smtp_password = # smtp authentication mechanism smtp_authentication = plain # enable TLS encryption for smtp connections smtp_enable_start_tls = true
From:を追加することもできます このファイルのアドレスは次のようになります。
# From: address notification_email = [email protected]
独自のメールサーバーを設定する方法については、次のチュートリアルを確認してください。 注 新しいクリーンなOSでiRedMailメールサーバーを実行することを強くお勧めします。他のWebアプリケーションがあるOSにiRedMailをインストールすると、失敗し、既存のアプリケーションが破損する可能性があります。
- iRedMailを使用してUbuntu18.04でフル機能のメールサーバーを簡単にセットアップする方法
サードパーティのSMTPリレーサービスを使用する場合は、月に9000通のメールを無料で送信できるSendinblueをお勧めします。
SMTP設定を保存した後、Discourseサービスを再起動します。
sudo systemctl restart discourse discourse-sidekiq
次に、Discourse管理ダッシュボードでメール送信をテストできます。
mail-tester.comにアクセスすると、一意の電子メールアドレスが提供されます。 Discourseからこのメールアドレスにテストメールを送信して、送信者のスコアを確認します。
メールを送信できません
Discourseインスタンスがメールを送信せず、DiscourseWebページに次のメッセージが表示される場合
All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent.
設定に移動する必要があります ->メール (メールではなく)、メールを無効にするを設定します いいえ 。設定を保存してDiscourseを再起動します。
sudo systemctl restart discourse discourse-sidekiq
それでもDiscourseがメールを送信できない場合は、メールサーバーにpingを送信できるかどうかを確認してください。また、https://community.example.com/sidekiq/retries
にアクセスします 、失敗したメールと、メール送信が失敗した理由が表示されます。
時々、discourse-sidekiq.service
失敗してメールが送信されない可能性があるため、このサービスが実行されているかどうかを確認することをお勧めします
sudo systemctl status discourse-sidekiq
RAM使用量の最適化
デフォルトのpuma構成では、Discourseは大量のRAMを使用します。デフォルトでは、私の談話は4つのワーカー、8つの最小スレッド、32の最大スレッドを使用します。 RAMが十分でない場合、redisサーバーは停止します。 RAMの使用量を減らすために、puma.rb
のワーカーとスレッドの数を減らすことができます。 ファイル。
nano /var/www/discourse/config/puma.rb
次の2行を見つけます。
workers "#{num_workers}" threads 8, 32
以下のように値を変更できます。これにより、pumaは2つのワーカー、4つの最小スレッド、および16の最大スレッドを使用するようになります。この設定は、RAMが1GBしかないサーバーに適しています。
workers 2 threads 4, 16
ファイルを保存して閉じます。次に、Discourseサービスを再起動します。
sudo systemctl restart discourse
アップグレード談話
DiscourseリリースのRSSフィードを購読して、最新バージョンの最新情報を入手できます。 Discourseをアップグレードする前に、Discourse管理ダッシュボードでデータベースを手動でバックアップしてハードディスクにダウンロードすることを強くお勧めします。
注 :DockerなしでDiscourseをインストールした場合、ワンクリックブラウザアップグレード(https://community.yourdomain.com/admin/upgrade)は機能しません。以下の手順に従う必要があります。
Discourseをアップグレードするには、最初にサービスを停止します。
sudo systemctl stop discourse
Discourseインストールディレクトリに移動します。
cd /var/www/discourse/
Githubリポジトリから新しいタグを取得します。
git fetch --tags
最新の安定バージョンをチェックアウトする前に、構成ファイルをホームディレクトリにバックアップすることをお勧めします。
cp config/puma.rb ~ cp config/environments/production.rb ~ cp config/sidekiq.yml ~ cp config/discourse.conf ~
次に、Gemfile.lockファイルを削除します。
rm Gemfile.lock
そして、最新の安定バージョンをチェックしてください。たとえば、
git checkout v2.3.4
次のエラーメッセージが表示された場合。
Please commit your changes or stash them before you switch branches. Aborting
次に、次のコマンドを実行します
git stash
次に、gitcheckoutコマンドを再度実行します。
新しいDiscourseバージョンの依存関係をインストールします。このプロセスは大量のRAMを使用する可能性があります。
RAILS_ENV=production /usr/local/bin/bundle install --path vendor/bundle/
Assets.rakeファイルを編集します。
nano /var/www/discourse/lib/tasks/assets.rake
次の行(273行目)を見つけてコメントアウトします。
brotli(path, max_compress)
ファイルを保存して閉じます。次に、次のコマンドを実行して本番環境の準備をします。
RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake assets:precompile
次に、新しいpuma.rb
かどうかを確認できます 構成ファイルには、元のファイルと比較して、いくつかの新しい行が追加されています。新しいものがない場合は、ファイルを元のファイルに置き換えるだけです。
mv ~/puma.rb /var/www/discourse/config/puma.rb mv ~/production.rb /var/www/discourse/config/environments/production.rb mv ~/sidekiq.yml /var/www/discourse/config/sidekiq.yml mv ~/discourse.conf /var/www/discourse/config/discourse.conf
最後に、談話を開始します。
sudo systemctl start discourse
これで、管理ダッシュボードからDiscourseのバージョンを確認できます。
談話テーマのカスタマイズ
デフォルトの白いテーマが気に入らない場合は、管理ダッシュボードを使用してカスタマイズできます ->カスタマイズ ->テーマ 。デフォルトでインストールされているテーマは3つあります。
- 青の色合い
- 暗い
- 軽い
ShadesofBlueテーマを選択しました。 CSS/HTMLの編集をクリックしてCSSのカスタマイズを追加することもできます ボタン。以下は、談話用に追加したCSSです。
html { background-color:#ececec; } #main-outlet { background-color: #fff; padding-left: 20px; } .d-header { background-color:rgb(45, 45, 45); } a:visited { color: blueviolet; } a { color: blueviolet; }
談話を新しいサーバーに移動する方法
まず、元のDiscourseフォーラムのバックアップを作成し、tar.gzファイルをダウンロードします。 (ファイル名は変更しないでください。)
次に、手順1から手順11に従って、新しいサーバーにDiscourseをインストールする必要があります。次に、バックアップファイルを/var/www/discourse/public/backups/default/
にアップロードします。 新しいサーバーのディレクトリ。
新しいサーバーの/var/ www /discourse/ディレクトリに移動します。
cd /var/www/discourse/
依存関係をインストールします。
sudo gem install thor
Discourse管理ダッシュボードに移動します ->設定 ->バックアップ 、復元を許可にチェックマークを付けます 。
次に、次のコマンドを実行して、バックアップからサイトを復元します。
RAILS_ENV=production script/discourse restore file-name-of-the-backup-file.tar.gz
復元が完了したら、Discourseを再起動します。
sudo systemctl restart discourse discourse-sidekiq
Discourse Webページを更新すると、元のDiscourseフォーラムがオンラインに戻ります。
次のエラーが表示された場合は、
You must use Bundler 2 or greater with this lockfile.
次に、バンドラーを更新する必要があります。
gem install bundler
gemfile.lockを更新する
RAILS_ENV=production bundle update --bundler
このエラーが表示されないように、Gemfile.lockファイルを削除することもできます。
談話をアンインストールする方法
PostgreSQLデータベースサーバーを削除します。
sudo apt remove postgresql
webrootディレクトリを削除します。
sudo rm /var/www/discourse/ -rf
Nginx構成ファイルを削除します。
sudo rm /etc/nginx/conf.d/discourse.conf
Let'sEncryptSSL証明書を削除します。
sudo certbot revoke --cert-name community.example.com
SystemDサービスを削除します。
sudo rm /etc/systemd/system/discourse.service sudo rm /etc/systemd/system/discourse-sidekiq.service
談話インスタンスのヘルスの監視
管理ダッシュボードから見つけることができる談話エラーログに注意する必要があります ->ログ ->エラーログ 。サーバーが大量のトラフィックを取得する場合、Discourseを実行するためにより多くのRAMが必要になる場合があります。次のログは、サーバーのメモリが不足していることを示しています。
談話の難しいユーザーに対処する方法
Discourseフォーラムにあなたの生活を困難にしている特定のユーザーがいる場合は、このユーザーを0: new user
にロックできます。 信頼レベル、次に談話Admin
に移動します ->Settings
->Posting
0: new user
によって作成された投稿/トピックが必要です 公開する前に承認される必要があります。
結論
この記事が、Dockerを使用せずにUbuntu18.04にDiscourseフォーラムソフトウェアをインストールするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、その他のヒントやコツを入手してください。気をつけて🙂