GNU/Linux >> Linux の 問題 >  >> Ubuntu

DockerなしでUbuntu18.04にDiscourseForumソフトウェアをインストールする

このチュートリアルでは、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フォーラムソフトウェアをインストールするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、その他のヒントやコツを入手してください。気をつけて🙂


Ubuntu
  1. Ubuntu20.04LTSにDiscourseをインストールする方法

  2. Ubuntu20.04にDiscourseをインストールする方法

  3. Ubuntu 18.04 に PostgreSQL サーバーをインストールする方法

  1. UbuntuServerにDockerCE(Community Edition)をインストールする方法

  2. ネットワーク接続なしで18.04サーバーをインストールしますか?

  3. ネットワーク接続なしでUbuntuサーバーをインストールするにはどうすればいいですか?

  1. Ubuntu16.04にNginxでDiscourseForumをインストールする方法

  2. Ubuntu18.04にMailtrainニュースレターソフトウェアをインストールする方法

  3. Ubuntu20.04LTSにDiscourseフォーラムをインストールする方法