コマンドの標準インストールの長い一時停止: cd /var/www/discourse su discourse -c 'bundle install --retry 3 --jobs 4'

こんにちは皆さん!中国からDiscourseを使い始めたばかりのユーザーです。標準インストールで奇妙な問題に遭遇しました。

./discourse-setup コマンドを実行した後、ターミナルが長時間(20分以上)コマンドで固まってしまいました。

I, [2023-06-04T07:47:29.161469 #1]  INFO -- : `cd /var/www/discourse` && su discourse -c 'bundle config --local deployment true'
I, [2023-06-04T07:47:29.544117 #1]  INFO -- : 
I, [2023-06-04T07:47:29.544260 #1]  INFO -- : `cd /var/www/discourse` && su discourse -c 'bundle config --local without "development test"'
I, [2023-06-04T07:47:29.725190 #1]  INFO -- : 現在のローカル値 without を置き換えています。現在の値は "test:development" です。
I, [2023-06-04T07:47:29.725290 #1]  INFO -- : `cd /var/www/discourse` && su discourse -c 'bundle install --retry 3 --jobs 4'

フォーラムで似たような質問を検索しました。例えば、Local installation of discourse on Centos 7 はネットワークの問題かもしれないと示唆しています。私のサーバーが中国にあるため、ネットワークの問題に遭遇しているのかもしれませんが、wget https://rubygems.org/ でテストしたところ、うまくいきました。

どうすればよいかわかりません。返信ありがとうございます。

ええ、それは確かにネットワークの問題です。私のサーバーは中国にあるためです。
解決策を見つけましたので、ここに中国語でコピーします。


中国国内でのDiscourseのインストール 在国内环境下安装Discourse - 主页 - 第 页 - IzIy's Files - MyPress - MyPre.Cn

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.gitgit 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 と同じであってはなりません。そうしないと、登録メールを受信できない可能性があります。

DockerでDiscourseフォーラム/BBSシステムをインストール(Nginx)

中国国内にお住まいの場合は、ミラーリングの高速化が必要です。設定ファイル内の 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"

これは明らかに bundle install が原因です。サーバーが海外にある場合でも、この操作には時間がかかります。ましてや、壁を越えなければならないのですから。
後で yarn install を行う際も、この問題に注意してください。

サーバーは中国大陸に置かない方が良いでしょう。GitHubからdiscourse本体をクローンするだけでもエラーが発生する可能性があります……


中国の開発者向け: 明らかにこの問題は bundle install が原因です。サーバーが海外に展開されている場合でも、この操作には時間がかかります。ましてや、皆さんがよく知っている抵抗に遭遇するでしょう。
後で yarn install を行う際にも、同じ問題に注意してください。

サーバーを中国に置かない方が良いでしょう。GitHubからdiscourseをクローンするだけでもエラーが発生する可能性があります…

返信ありがとうございます!

サーバーにはプロキシがあり、GitHubに正常にアクセスできます。gem/bundleで国内ソースに変更するチュートリアルを見つけ、現在は正常にデプロイできます(ただし、メモリ不足で再び詰まっています🥹)。

私も外部サーバーを設置したいのですが、高すぎます🥹

https://www.bugcatt.com/archives/2529

中国のサーバーは、国外のものよりも高いものもあります(そう、アリババクラウドのことです)。これはベンダーによります。
ちょっと待って、本当にアリババクラウドを選んだのですか……ええと

学生用PC(2コア2GB)を使用しています :sweat_smile:
より高性能なサーバーは負担できません

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.