Larga pausa en la instalación estándar del comando: cd /var/www/discourse && su discourse -c 'bundle install --retry 3 --jobs 4'

hola chicos! soy un nuevo usuario de discourse de China y me encuentro con un problema extraño en la instalación estándar.
Después de ejecutar el comando ./discourse-setup, mi terminal se quedó atascada en el comando durante mucho tiempo (más de 20 minutos)

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 -- : Estás reemplazando el valor local actual de without, que actualmente es "test:development"
I, [2023-06-04T07:47:29.725290 #1]  INFO -- : cd /var/www/discourse && su discourse -c 'bundle install --retry 3 --jobs 4'

He buscado preguntas similares en nuestro foro, como Local installation of discourse on Centos 7, que sugieren que podría ser un problema de red. Quizás sea solo porque mi servidor está en China y me encuentro con problemas de red, pero he probado con wget https://rubygems.org/, funcionó.

No sé qué hacer, gracias por tu respuesta.

Bueno, en realidad es un problema de red, porque mi servidor está en China.
Encontré las soluciones, las copio aquí en chino.


Instalación de Discourse en un entorno nacionalhttps://mypre.cn/2021/02/17/Discourcs-setup-on-cvm-ecs/

La actualización y el mantenimiento de la versión de Discourse se completan en base a GitHub, y Discourse en sí está escrito en Ruby.

El acceso lento a sitios web extranjeros existe tanto en CVM de Tencent Cloud, servidores ligeros como ECS de Alibaba Cloud, principalmente debido a las operaciones de limitación de velocidad para apoyar los repositorios de git nacionales.

Al clonar Discourse alojado en GitHub, puede acelerar el acceso a GitHub reemplazando el enlace de clonación de github.com por github.com.cnpmjs.org, por ejemplo:

Reemplace git clone https://github.com/discourse/discourse_docker.git por git clone https://github.com.cnpmjs.org/discourse/discourse_docker.git

Además, al ejecutar ./discourse-setup, el programa de instalación también instalará algunos proyectos adicionales en Docker,

por ejemplo: gem update, que también requiere agregar un espejo de Ruby.

Puede agregar la dirección del espejo de Ruby modificando el archivo de configuración, los archivos principales involucrados son docker.git

Además, al ejecutar ./discourse-setup, el programa de instalación también instalará algunos proyectos adicionales en Docker,

por ejemplo: gem update, que también requiere agregar un espejo de Ruby.

Puede agregar la dirección del espejo de Ruby modificando el archivo de configuración, los archivos principales involucrados son

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

Busque el lugar donde se llama a gem update en los archivos anteriores y agregue la siguiente declaración para agregar un sitio espejo antes:

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

Para bundle, puede usar bundle config mirror.https://rubygems.org https://gems.ruby-china.com para agregar un sitio espejo.

Modificación principal la siguiente:

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

Sobre la configuración del correo electrónico
El foro generalmente necesita un servidor de correo electrónico para enviar varios códigos de verificación, mensajes de inicio de sesión o recuperación de contraseña, funciones de notificación de mensajes, etc.

El correo electrónico empresarial gratuito de NetEase (ym.163.com) puede satisfacer esta necesidad. Habilitar el servicio SMTP con el correo electrónico de QQ también es posible, por supuesto, también puede comprar un correo electrónico de pago.

El correo electrónico empresarial gratuito de NetEase tiene el servicio SMTP habilitado por defecto. A continuación se muestra un ejemplo de configuración de app.yml: Discourse parece no proporcionar una forma de conexión compatible con SSL, aquí se utiliza directamente el servicio SMTP. Tenga en cuenta que la función start_tls debe cerrarse explícitamente aquí.

  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)

Además, el correo electrónico del administrador del sitio no debe ser el mismo que DISCOURSE_SMTP_USER_NAM, de lo contrario, es posible que no reciba el correo electrónico de registro.

Instalación de Discourse Forum/BBS System con Docker (Nginx)

Si se encuentra en China continental, necesita acelerar el espejo. Encuentre el bloque templates en el archivo de configuración y agregue el espejo nacional 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"

Evidentemente, esto se debe a bundle install. Esta operación tardará mucho tiempo incluso si el servidor se implementa en el extranjero. Sin mencionar que te encontrarás con una resistencia bien conocida.
Ten cuidado con el mismo problema cuando ejecutes yarn install más tarde.

Es mejor no poner el servidor en China, porque incluso clonar discourse desde github puede darte un error…


Para desarrolladores en China: Evidentemente, este problema se debe a bundle install. Incluso si el servidor se implementa en el extranjero, esta operación llevará mucho tiempo. Sin mencionar que te encontrarás con una resistencia bien conocida.
Ten cuidado con el mismo problema cuando ejecutes yarn install más tarde.

Es mejor no poner el servidor en China, porque incluso clonar discourse desde github puede darte un error…

¡Gracias por tu respuesta!

El servidor tiene un proxy y puede acceder a GitHub con normalidad. He encontrado tutoriales sobre cómo cambiar a un repositorio nacional para gem/bundle, y ahora puedo desplegarlo con normalidad (pero me he vuelto a atascar por falta de memoria :face_holding_back_tears:).

También quiero montar un servidor externo, pero es demasiado caro :face_holding_back_tears:.

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

Los servidores en China son a veces más caros que los de fuera (sí, me refiero a ti, Alibaba Cloud), esto depende del proveedor.
Espera, ¿realmente elegiste Alibaba Cloud…? Vaya…

Usé una máquina para estudiantes (2 núcleos, 2G) :sweat_smile:
No puedo permitirme un servidor con una configuración más alta.

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