Lange Pause bei der Standardinstallation von Befehl: cd /var/www/discourse && su discourse -c 'bundle install --retry 3 --jobs 4'

Hallo Leute! Ich bin ein neuer Benutzer von Discourse aus China und stoße bei der Standardinstallation auf ein seltsames Problem.
Nachdem ich den Befehl ./discourse-setup ausgeführt habe, stotterte mein Terminal lange Zeit (mehr als 20 Minuten) bei diesem Befehl:

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 -- : Sie ersetzen den aktuellen lokalen Wert von without, der derzeit "test:development" ist
I, [2023-06-04T07:47:29.725290 #1]  INFO -- : cd /var/www/discourse && su discourse -c 'bundle install --retry 3 --jobs 4'

Ich habe ähnliche Fragen in unserem Forum gesucht, wie z. B. Local installation of discourse on Centos 7, was darauf hindeutet, dass es sich um ein Netzwerkproblem handeln könnte. Vielleicht liegt es einfach daran, dass sich mein Server in China befindet und ich Netzwerkprobleme habe, aber ich habe über wget https://rubygems.org/ getestet, es hat funktioniert.

Ich weiß nicht, was ich tun soll, danke für Ihre Antwort.

Nun, es ist tatsächlich ein Netzwerkproblem, da mein Server in China ist.
Ich habe die Lösungen gefunden, hier sind sie auf Chinesisch:


Installation von Discourse in einer chinesischen Umgebunghttps://mypre.cn/2021/02/17/Discourcs-setup-on-cvm-ecs/

Die Versionsaktualisierung und -wartung von Discourse erfolgt über GitHub, und Discourse selbst ist in Ruby geschrieben.

Die Verwendung von CVM, Lightweight-Servern von Tencent Cloud und ECS von Alibaba Cloud birgt Probleme beim langsamen Zugriff auf ausländische Websites, hauptsächlich aufgrund von Ratenbegrenzungsoperationen zur Unterstützung chinesischer Git-Repositories.

Beim Klonen von Discourse, das auf GitHub gehostet wird, können Sie den Zugriff auf GitHub beschleunigen, indem Sie github.com im Klon-Link durch github.com.cnpmjs.org ersetzen. Zum Beispiel:

Ersetzen Sie git clone https://github.com/discourse/discourse_docker.git durch git clone https://github.com.cnpmjs.org/discourse/discourse_docker.git

Darüber hinaus installiert das Installationsprogramm beim Ausführen von ./discourse-setup auch einige zusätzliche Projekte in Docker.

Zum Beispiel: gem update erfordert ebenfalls das Hinzufügen eines Ruby-Spiegels.

Sie können die Ruby-Spiegeladresse durch Ändern der Konfigurationsdatei hinzufügen. Die Hauptdateien, die betroffen sind, sind docker.git

Darüber hinaus installiert das Installationsprogramm beim Ausführen von ./discourse-setup auch einige zusätzliche Projekte in Docker.

Zum Beispiel: gem update erfordert ebenfalls das Hinzufügen eines Ruby-Spiegels.

Sie können die Ruby-Spiegeladresse durch Ändern der Konfigurationsdatei hinzufügen. Die Hauptdateien, die betroffen sind, sind

discourse/templates/web.template.yml
discourse/containers/app.yml

Suchen Sie nach Stellen, an denen gem update in den oben genannten Dateien aufgerufen wird, und fügen Sie die folgende Anweisung zum Hinzufügen eines Spiegel-Websites hinzu:

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
gem update bundler

Für Bundles können Sie bundle config mirror.https://rubygems.org https://gems.ruby-china.com verwenden, um eine Spiegel-Website hinzuzufügen.

Hauptänderungen wie folgt:

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...

Probleme mit der E-Mail-Einrichtung
Foren benötigen normalerweise einen E-Mail-Server, um verschiedene Verifizierungs-Codes, Anmeldebenachrichtigungen oder Passwort-Wiederherstellungen und Benachrichtigungen zu senden.

Der kostenlose Unternehmens-E-Mail-Dienst von NetEase (ym.163.com) kann diese Anforderung erfüllen. Sie können auch den SMTP-Dienst von QQ-E-Mail aktivieren oder kostenpflichtige E-Mail-Dienste erwerben.

Der kostenlose Unternehmens-E-Mail-Dienst von NetEase aktiviert den SMTP-Dienst standardmäßig. Hier ist ein Beispiel für die Einstellung von app.yml: Discourse scheint keine Verbindungen mit SSL zu unterstützen, daher wird hier direkt der SMTP-Dienst verwendet. Beachten Sie, dass die start_tls-Funktion hier explizit deaktiviert werden muss.

  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)

Darüber hinaus darf die E-Mail-Adresse des Website-Administrators nicht mit DISCOURSE_SMTP_USER_NAM identisch sein, da Sie sonst möglicherweise keine Registrierungs-E-Mails erhalten.

Installation des Discourse-Forums/BBS-Systems mit Docker (Nginx)

Wenn Sie sich in China befinden, müssen Sie eine Spiegelbeschleunigung durchführen. Suchen Sie den templates-Block in der Konfigurationsdatei und fügen Sie die chinesische Spiegelvorlage templates/web.china.template.yml hinzu:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/sshd.template.yml"
  - "templates/web.template.yml"
  - "templates/web.china.template.yml"

Offenbar ist dies auf bundle install zurückzuführen. Dieser Vorgang dauert selbst dann lange, wenn der Server im Ausland steht, ganz zu schweigen davon, dass Sie noch eine Mauer überwinden müssen.
Seien Sie auch bei yarn install vorsichtig mit diesem Problem.

Es ist am besten, den Server nicht in China aufzustellen, da selbst das Klonen von Discourse von GitHub Fehler verursachen kann …


Für Entwickler in China: Offenbar ist dieses Problem auf bundle install zurückzuführen. Selbst wenn der Server im Ausland eingesetzt wird, dauert dieser Vorgang lange. Ganz zu schweigen davon, dass Sie auf bekannten Widerstand stoßen werden.
Seien Sie später vorsichtig mit demselben Problem bei yarn install.

Es ist besser, den Server nicht in China aufzustellen, denn selbst das Klonen von Discourse von GitHub kann zu einem Fehler führen …

Danke für die Antwort!

Der Server hat einen Proxy und kann auf GitHub zugreifen. Gem/Bundle-Anleitungen zum Ändern der Inlandsquelle wurden gefunden und die Bereitstellung ist jetzt normal möglich (aber jetzt stoppt es wegen Speichermangels :face_holding_back_tears:).

Ich möchte auch einen Server mit externem Netzwerk, aber das ist zu teuer :face_holding_back_tears:.

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

Einige chinesische Server sind teurer als ausländische (ja, ich meine dich, Alibaba Cloud). Das hängt vom Anbieter ab.
Moment mal, hast du dich wirklich für Alibaba Cloud entschieden? … Ach du meine Güte.

Ich benutze einen Studentenrechner (2 Kerne, 2 GB RAM) :sweat_smile:
Ich kann mir keine leistungsfähigeren Server leisten.

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