Longa pausa na instalação padrão do comando: cd /var/www/discourse su discourse -c 'bundle install --retry 3 --jobs 4'

Olá pessoal! Sou um novo usuário do Discourse da China e encontrei um problema estranho na instalação padrão.

Após executar o comando ./discourse-setup, meu terminal travou no comando por um longo tempo (mais 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 -- : Você está substituindo o valor local atual de without, que atualmente é "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á pesquisei perguntas semelhantes em nosso fórum, como Local installation of discourse on Centos 7, que sugeriram que pode ser um problema de rede. Talvez seja apenas porque meu servidor está na China e estou enfrentando problemas de rede, mas testei via wget https://rubygems.org/, funcionou.

Não sei o que fazer, obrigado pela sua resposta.

Bem, é realmente um problema de rede, porque meu servidor está na China
Encontrei as resoluções, copio aqui em chinês


Instalação do Discourse em ambiente chinêshttps://mypre.cn/2021/02/17/Discourcs-setup-on-cvm-ecs/

A atualização e manutenção do Discourse são feitas com base no github, e o próprio Discourse é escrito em ruby.

Tanto o CVM da Tencent Cloud, servidores leves quanto o ECS da Alibaba Cloud têm problemas de acesso lento a sites estrangeiros, principalmente devido a operações de limitação de fluxo para apoiar repositórios git domésticos.

Ao clonar o discourse hospedado no github, você pode acelerar o acesso ao github substituindo o link de clone github.com por github.com.cnpmjs.org, por exemplo:

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

Além disso, ao executar ./discourse-setup, o programa de instalação também instalará alguns projetos adicionais no docker,

Por exemplo: gem update, que também requer a adição de um espelho ruby.

Você pode adicionar o endereço do espelho ruby modificando o arquivo de configuração, os arquivos envolvidos são docker.git

Além disso, ao executar ./discourse-setup, o programa de instalação também instalará alguns projetos adicionais no docker,

Por exemplo: gem update, que também requer a adição de um espelho ruby.

Você pode adicionar o endereço do espelho ruby modificando o arquivo de configuração, os arquivos envolvidos são

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

Antes de encontrar o local onde o gem update é chamado nos arquivos acima, adicione a seguinte declaração de espelhamento de site:

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

Para o bundle, você pode adicionar um site espelho com bundle config mirror.https://rubygems.org https://gems.ruby-china.com.

Modificações principais são as seguintes:

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 a configuração de e-mail

O fórum geralmente precisa de um servidor de e-mail para enviar vários códigos de verificação, mensagens de login, recuperação de senha, notificações e outras funções.

O e-mail corporativo gratuito da NetEase (ym.163.com) pode atender a essa necessidade, e o uso do e-mail QQ com o serviço SMTP ativado também é possível, claro, você também pode comprar e-mails pagos.

O e-mail corporativo gratuito da NetEase tem o serviço SMTP ativado por padrão. Abaixo está um exemplo de configuração de app.yml: O Discourse parece não oferecer suporte a conexões SSL, então o serviço SMTP é usado diretamente aqui. Observe que a função start_tls deve ser explicitamente desativada.

  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)

Além disso, o e-mail do administrador do site não deve ser o mesmo que DISCOURSE_SMTP_USER_NAM, caso contrário, você pode não receber e-mails de registro.

Instalação do sistema de fórum/BBS Discourse com Docker (Nginx)

Se você estiver na China continental, precisará de aceleração de espelho. Encontre o bloco templates no arquivo de configuração e adicione o espelho doméstico 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"

Claramente isso é devido ao bundle install. Essa operação levará muito tempo mesmo que o servidor esteja em um país estrangeiro, sem mencionar que você terá que superar um muro.
Tenha cuidado com o mesmo problema ao executar yarn install mais tarde.

É melhor não colocar o servidor na China, pois mesmo clonar o discourse do github pode gerar um erro…


Para desenvolvedores na China: Aparentemente, esse problema é devido ao bundle install. Mesmo que o servidor seja implantado em um país estrangeiro, essa operação levará muito tempo. Sem mencionar que você encontrará alguma resistência bem conhecida.
Tenha cuidado com o mesmo problema ao executar yarn install mais tarde.

É melhor não colocar o servidor na China, pois mesmo clonar o discourse do github pode gerar um erro…

Obrigado pela resposta!

O servidor tem um proxy e pode acessar o GitHub normalmente. O gem/bundle encontrou tutoriais sobre como mudar para um repositório doméstico e agora a implantação está funcionando (mas está travada novamente por falta de memória :face_holding_back_tears:).

Eu também gostaria de ter um servidor externo, mas é muito caro :face_holding_back_tears:

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

Alguns servidores chineses são até mais caros que os estrangeiros (sim, estou falando de você, Alibaba Cloud), isso depende do fornecedor.
Espere, você realmente escolheu Alibaba Cloud… ah, isso…

Usei uma máquina de estudante (2 núcleos 2G) :sweat_smile:
Não consigo arcar com um servidor com configurações mais altas

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