Lunga pausa nell'installazione standard del comando: cd /var/www/discourse && su discourse -c 'bundle install --retry 3 --jobs 4'

Ciao ragazzi! Sono un nuovo utente di Discourse dalla Cina e ho riscontrato uno strano problema nell’installazione standard.

Dopo aver eseguito il comando ./discourse-setup, il mio terminale si è bloccato sul comando per molto tempo (più di 20 minuti).

I, [2023-06-04T07:47:29.161469 #1]  INFO -- : \u003e cd /var/www/discourse \u0026\u0026 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 -- : \u003e cd /var/www/discourse \u0026\u0026 su discourse -c 'bundle config --local without \"development test\"'
I, [2023-06-04T07:47:29.725190 #1]  INFO -- : Stai sostituendo il valore locale corrente di without, che attualmente è "test:development"
I, [2023-06-04T07:47:29.725290 #1]  INFO -- : \u003e cd /var/www/discourse \u0026\u0026 su discourse -c 'bundle install --retry 3 --jobs 4'

Ho cercato domande simili nel nostro forum, come Local installation of discourse on Centos 7, che suggerivano che potrebbe essere un problema di rete. Forse è solo perché il mio server si trova in Cina e incontro problemi di rete, ma ho testato tramite wget https://rubygems.org/, ha funzionato.

Non so come fare, grazie per la tua risposta.

Bene, è effettivamente un problema di rete, perché il mio server si trova in Cina
Trovo le risoluzioni, copio qui in cinese


Installazione di Discourse in un ambiente domesticohttps://mypre.cn/2021/02/17/Discourcs-setup-on-cvm-ecs/

L’aggiornamento e la manutenzione delle versioni di Discourse sono completati su github, e Discourse stesso è scritto in ruby.

Sia che si utilizzino CVM, server leggeri di Tencent Cloud o ECS di Alibaba Cloud, ci sono problemi di lentezza nell’accesso ai siti web esteri, principalmente a causa delle operazioni di limitazione del traffico per supportare i repository git nazionali.

Quando si clona discourse ospitato su github, è possibile accelerare l’accesso a github sostituendo il link di clone da github.com a github.com.cnpmjs.org, ad esempio:

Sostituire git clone https://github.com/discourse/discourse_docker.git con git clone https://github.com.cnpmjs.org/discourse/discourse_docker.git

Inoltre, durante l’esecuzione di ./discourse-setup, il programma di installazione installerà anche alcuni progetti aggiuntivi in docker,

Ad esempio: gem update, che richiede anche l’aggiunta di un mirror ruby.

È possibile aggiungere l’indirizzo del mirror ruby modificando il file di configurazione, i file principali coinvolti sono docker.git

Inoltre, durante l’esecuzione di ./discourse-setup, il programma di installazione installerà anche alcuni progetti aggiuntivi in docker,

Ad esempio: gem update, che richiede anche l’aggiunta di un mirror ruby.

È possibile aggiungere l’indirizzo del mirror ruby modificando il file di configurazione, i file principali coinvolti sono

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

Prima di cercare i punti in cui viene chiamato gem update nei file sopra menzionati, aggiungere la seguente istruzione per configurare il sito mirror:

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

Per bundle è possibile aggiungere un sito mirror con bundle config mirror.https://rubygems.org https://gems.ruby-china.com.

Modifiche principali come segue:

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

Problema di impostazione dell’email

Il forum di solito richiede un server di posta elettronica per inviare vari codici di verifica, messaggi di accesso, recupero password, notifiche e altre funzioni.

L’email aziendale gratuita di NetEase (ym.163.com) può soddisfare questa esigenza, è anche possibile abilitare il servizio SMTP utilizzando l’email QQ, oppure acquistare un’email a pagamento.

L’email aziendale gratuita di NetEase ha il servizio SMTP abilitato per impostazione predefinita. Ecco un esempio di impostazione di app.yml: Discourse sembra non supportare la connessione SSL, quindi qui viene utilizzato direttamente il servizio SMTP. Nota che la funzione start_tls deve essere disabilitata esplicitamente.

  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)

Inoltre, l’indirizzo email dell’amministratore del sito web non deve essere uguale a DISCOURSE_SMTP_USER_NAM, altrimenti potresti non ricevere le email di registrazione.

Installazione del sistema forum/BBS Discourse con Docker (Nginx)

Se ti trovi in Cina, devi accelerare il mirror. Trova il blocco templates nel file di configurazione e aggiungi il mirror domestico 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"

Apparentemente questo problema è dovuto a bundle install. Questa operazione richiederà molto tempo anche se il server è distribuito all’estero, per non parlare del fatto che dovrai superare un muro.
Fai attenzione allo stesso problema quando eseguirai yarn install in seguito.

È meglio non mettere il server in Cina, perché anche clonare discourse da github potrebbe darti un errore…


Per gli sviluppatori in Cina: Apparentemente questo problema è dovuto a bundle install. Anche se il server è distribuito all’estero, questa operazione richiederà molto tempo. Per non parlare del fatto che incontrerai una certa resistenza ben nota.
Fai attenzione allo stesso problema quando eseguirai yarn install in seguito.

È meglio non mettere il server in Cina, perché anche clonare discourse da github potrebbe darti un errore…

Grazie per la risposta!

Il server ha un proxy e può accedere normalmente a GitHub. Ho trovato tutorial su come cambiare la sorgente gem/bundle e ora posso distribuirlo normalmente (ma ora è bloccato dalla memoria insufficiente :face_holding_back_tears:

Vorrei anche avere un server esterno, ma è troppo costoso :face_holding_back_tears:

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

I server in Cina a volte sono più costosi di quelli all’estero (sì, sto parlando di te, Alibaba Cloud), dipende dal produttore.
Aspetta, hai davvero scelto Alibaba Cloud… oh no.

Ho usato una macchina per studenti (2 core, 2G) :sweat_smile:
Non posso permettermi un server con configurazioni più elevate.

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