ええ、それは確かにネットワークの問題です。私のサーバーは中国にあるためです。
解決策を見つけましたので、ここに中国語でコピーします。
DiscourseのバージョンアップとメンテナンスはGitHub上で行われ、Discourse自体はRubyで書かれています。
Tencent CloudのCVM、Lightweight Server、Alibaba CloudのECSなど、いずれも海外サイトへのアクセスが遅いという問題があります。これは主に、国内のgitリポジトリをサポートするための帯域制限操作によるものです。
GitHubでホストされているDiscourseをクローンする際に、クローンリンクのgithub.comをgithub.com.cnpmjs.orgに置き換えることでGitHubへのアクセスを高速化できます。例えば:
git clone https://github.com/discourse/discourse_docker.git を git clone https://github.com.cnpmjs.org/discourse/discourse_docker.git に置き換えます。
さらに、./discourse-setup を実行する際、インストーラーはDocker内にいくつかの追加プロジェクトをインストールします。
例えば、gem update もRubyのミラーを追加する必要があります。
設定ファイルを変更することでRubyのミラーアドレスを追加できます。主な関連ファイルは docker.git です。
さらに、./discourse-setup を実行する際、インストーラーはDocker内にいくつかの追加プロジェクトをインストールします。
例えば、gem update もRubyのミラーを追加する必要があります。
設定ファイルを変更することでRubyのミラーアドレスを追加できます。主な関連ファイルは以下の通りです。
discourse/templates/web.template.yml
discourse/containers/app.yml
上記のファイルで gem update を呼び出している箇所を探し、その前に以下の設定ミラーサイトのステートメントを追加します。
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem update bundler
bundle については、bundle config mirror.https://rubygems.org https://gems.ruby-china.com を使用してミラーサイトを追加できます。
主な変更点は以下の通りです。
diff --git a/templates/web.template.yml b/templates/web.template.yml
index 28fb22d..bb0010c 100644
--- a/templates/web.template.yml
+++ b/templates/web.template.yml
@@ -86,6 +86,9 @@ run:
cd: $home
hook: code
cmd:
+ - git remote -v
+ - git remote set-url origin https://github.com.cnpmjs.org/discourse/discourse.git
+ - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
- git reset --hard
- git clean -f
- git remote set-branches --add origin master
@@ -145,6 +148,7 @@ run:
hook: web
cmd:
# ensure we are on latest bundler
+ - gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
- gem update bundler
- find $home ! -user discourse -exec chown discourse {} \\+
@@ -152,6 +156,9 @@ run:
cd: $home
hook: bundle_exec
cmd:
+ - su discourse -c 'gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/'
+ - su discourse -c 'gem update bundler'
+ - su discourse -c 'bundle config mirror.https://rubygems.org https://gems.ruby-china.com'
- su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test developme
- exec:
...skipping...
メール設定の問題について
フォーラムでは通常、各種認証コード、ログインメッセージ、パスワードリセット、メッセージ通知などの送信に使用されるメールサーバーが必要です。
NetEaseの無料企業メール(ym.163.com)でこの要件を満たすことができます。QQメールでSMTPサービスを有効にすることも可能です。もちろん、有料のメールを購入することもできます。
NetEaseの無料企業メールはデフォルトでSMTPサービスが有効になっています。以下はapp.ymlの設定例です。DiscourseはSSL接続をサポートしていないようですので、ここでは直接SMTPサービスを使用します。start_tls機能を明示的にオフにする必要があることに注意してください。
DISCOURSE_SMTP_ADDRESS: smtp.ym.163.com
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: mail@getblog.cn
DISCOURSE_SMTP_PASSWORD: "password"
DISCOURSE_SMTP_ENABLE_START_TLS: false # (optional, default true)
DISCOURSE_SMTP_DOMAIN: getblog.cn # (required by some providers)
また、ウェブサイト管理者のメールアドレスは DISCOURSE_SMTP_USER_NAM と同じであってはなりません。そうしないと、登録メールを受信できない可能性があります。
中国国内にお住まいの場合は、ミラーリングの高速化が必要です。設定ファイル内の templates ブロックを見つけ、国内ミラー templates/web.china.template.yml を追加します。
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/sshd.template.yml"
- "templates/web.template.yml"
- "templates/web.china.template.yml"