Longue pause dans l'installation standard de la commande : cd /var/www/discourse

Salut tout le monde ! Je suis un nouvel utilisateur de Discourse venant de Chine et je rencontre un problème étrange lors de l’installation standard.
Après avoir exécuté la commande ./discourse-setup, mon terminal s’est bloqué sur la commande pendant longtemps (plus de 20 minutes).

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 -- : Vous remplacez la valeur locale actuelle de without, qui est actuellement "test:development"
I, [2023-06-04T07:47:29.725290 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle install --retry 3 --jobs 4'

J’ai recherché des questions similaires sur notre forum, comme Local installation of discourse on Centos 7, qui suggèrent qu’il pourrait s’agir d’un problème réseau. Peut-être est-ce simplement parce que mon serveur est en Chine et que je rencontre des problèmes réseau, mais j’ai testé via wget https://rubygems.org/, cela a fonctionné.

Je ne sais pas quoi faire, merci pour votre réponse.

Bien, c’est bien un problème de réseau, car mon serveur est en Chine.
J’ai trouvé les solutions, je les copie ici en chinois.


Installation de Discourse dans un environnement national

La mise à niveau et la maintenance des versions de Discourse sont effectuées sur GitHub, et Discourse lui-même est écrit en Ruby.

L’accès lent aux sites Web étrangers est un problème avec les serveurs CVM, les serveurs légers de Tencent Cloud et les ECS d’Alibaba Cloud, principalement en raison des limitations de débit mises en place pour soutenir les dépôts Git nationaux.

Lors du clonage de Discourse hébergé sur GitHub, vous pouvez accélérer l’accès à GitHub en remplaçant le lien de clonage github.com par github.com.cnpmjs.org, par exemple :

Remplacez git clone https://github.com/discourse/discourse_docker.git par git clone https://github.com.cnpmjs.org/discourse/discourse_docker.git

En outre, lors de l’exécution de ./discourse-setup, le programme d’installation installera également des projets supplémentaires dans Docker,

Par exemple : gem update, qui nécessite également l’ajout d’un miroir Ruby.

Vous pouvez ajouter l’adresse du miroir Ruby en modifiant le fichier de configuration, les fichiers principalement concernés sont docker.git

En outre, lors de l’exécution de ./discourse-setup, le programme d’installation installera également des projets supplémentaires dans Docker,

Par exemple : gem update, qui nécessite également l’ajout d’un miroir Ruby.

Vous pouvez ajouter l’adresse du miroir Ruby en modifiant le fichier de configuration, les fichiers principalement concernés sont

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

Avant de rechercher les endroits où gem update est appelé dans les fichiers ci-dessus, ajoutez la déclaration suivante pour configurer le site miroir :

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

Pour bundle, vous pouvez ajouter un site miroir avec bundle config mirror.https://rubygems.org https://gems.ruby-china.com.

Modifications principales comme suit :

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

Concernant la configuration de la messagerie

Les forums ont généralement besoin d’un serveur de messagerie pour envoyer divers codes de vérification, messages de connexion, récupération de mot de passe, notifications, etc.

La messagerie d’entreprise gratuite de NetEase (ym.163.com) peut répondre à ce besoin. L’activation du service SMTP pour la messagerie QQ est également possible, et bien sûr, vous pouvez également acheter une messagerie payante.

La messagerie d’entreprise gratuite de NetEase active le service SMTP par défaut. Voici un exemple de configuration de app.yml : Discourse ne semble pas prendre en charge les connexions SSL, nous utilisons donc directement le service SMTP ici. Notez qu’il faut désactiver explicitement la fonction 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)

De plus, l’adresse e-mail de l’administrateur du site ne doit pas être identique à DISCOURSE_SMTP_USER_NAM, sinon vous pourriez ne pas recevoir les e-mails d’inscription.

Installation de Discourse Forum/BBS System avec Docker (Nginx)

Si vous êtes en Chine continentale, vous devrez accélérer le miroir. Trouvez le bloc templates dans le fichier de configuration et ajoutez le miroir national 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"

C’est apparemment dû à bundle install. Cette opération prendra beaucoup de temps, même si le serveur est déployé à l’étranger. Sans parler du fait que vous rencontrerez une résistance bien connue.
Faites attention au même problème lors de yarn install plus tard.

Il vaut mieux ne pas placer le serveur en Chine, car même le clonage de discourse depuis github pourrait vous donner une erreur…


Pour les développeurs en Chine : Apparemment, ce problème est dû à bundle install. Même si le serveur est déployé à l’étranger, cette opération prendra beaucoup de temps. Sans parler du fait que vous rencontrerez une résistance bien connue.
Faites attention au même problème lorsque vous exécuterez yarn install plus tard.

Il vaut mieux ne pas placer le serveur en Chine, car même le clonage de discourse depuis github pourrait vous donner une erreur…

Merci pour votre réponse !

Le serveur a un proxy, peut accéder normalement à GitHub, gem/bundle a trouvé des tutoriels pour changer la source nationale, et le déploiement peut maintenant être effectué normalement (mais il est bloqué par un manque de mémoire :face_holding_back_tears:

J’aimerais aussi avoir un serveur accessible depuis l’extérieur, mais c’est trop cher :face_holding_back_tears:

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

Certains serveurs chinois sont plus chers que les serveurs étrangers (oui, je parle de toi, Alibaba Cloud), cela dépend du fabricant.
Attends, tu as vraiment choisi Alibaba Cloud… Ah, bon…

J’utilise une machine étudiante (2 cœurs, 2 Go) :sweat_smile:
Je ne peux pas me permettre un serveur avec une configuration plus élevée.

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