La compilación falló por esto. Eliminé la variable de entorno y volví a compilar sin ella. Luego pasé a la depuración dentro del contenedor. donde agregué la clave a discourse.conf, todavía falla.
(Afortunadamente, hice esto antes de decirle al cliente que me había dado una clave no válida).
Agregué un puts a la tarea de rake para imprimir la URL desde la que está intentando descargar la base de datos de esta manera:
url =
"https://download.maxmind.com/app/geoip_download?license_key=#{GlobalSetting.maxmind_license_key}&edition_id=#{name}&suffix=tar.gz"
gz_file =
FileHelper.download(
url,
max_file_size: 100.megabytes,
tmp_file_name: "#{name}.gz",
validate_uri: false,
follow_redirect: false,
)
if gz_file.nil?
puts "no gzfile"
end
puts "Got file #{gz_file} for #{url}"
filename = File.basename(gz_file.path)
Ahora obtengo esto:
root@web-only:/var/www/discourse# rake maxminddb:get
Plugin name is 'discourse-topic-voting', but plugin directory is named 'discourse-voting'
Downloading MaxMindDb's GeoLite2-City...
no gzfile
Got file for https://download.maxmind.com/app/geoip_download?license_key=VALID_KEY_IS_HERE&edition_id=GeoLite2-City&suffix=tar.gz
rake aborted!
NoMethodError: undefined method `path' for nil:NilClass (NoMethodError)
filename = File.basename(gz_file.path)
^^^^^
/var/www/discourse/lib/discourse_ip_info.rb:52:in `mmdb_download'
/var/www/discourse/lib/tasks/maxminddb.rake:9:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `each'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => maxminddb:get
(See full trace by running task with --trace)
Hubo otro tema donde el problema era que el sitio estaba bloqueado por Maxmind, así que lo intenté y descargué con éxito esa URL con wget desde dentro del contenedor en el servidor en cuestión.
Me parece que FileHelper.download no es mucho un Helper después de todo y está devolviendo silenciosamente nil en lugar de un archivo. El archivo es de solo 44 MB, así que no es eso. Cuando reviso las cabeceras completas con wget, no veo una redirección.
¿Alguna idea de qué podría ser?
¿Hay alguna razón para no capturar este error y dejar que una compilación se complete con una clave no válida? ¿Quizás solo imprimir una advertencia?
¿Podrías comprobar si usas la última versión de Discourse? Funciona para Jay; no veo ninguna razón por la que no te funcione a ti, especialmente cuando sigue la recomendación de MaxMind.
Descargando MaxMindDB...
Comprimiendo Javascript y generando Source Maps
I, [2024-03-26T13:27:38.305597 #1] INFO -- : Terminando procesos asíncronos
I, [2024-03-26T13:27:38.307312 #1] INFO -- : Enviando INT a HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 42
I, [2024-03-26T13:27:38.307891 #1] INFO -- : Enviando TERM a exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111
111:signal-handler (1711459658) Recibiendo SIGTERM, programando apagado...
2024-03-26 13:27:38.307 UTC [42] LOG: solicitud de apagado rápido recibida
2024-03-26 13:27:38.314 UTC [42] LOG: abortando transacciones activas
2024-03-26 13:27:38.321 UTC [42] LOG: el proceso secundario \"logical replication launcher\" (PID 51) salió con código de salida 1
2024-03-26 13:27:38.322 UTC [46] LOG: apagando
111:M 26 Mar 2024 13:27:38.353 # Solicitud de apagado del usuario...
111:M 26 Mar 2024 13:27:38.353 * Guardando la instantánea RDB final antes de salir.
2024-03-26 13:27:38.415 UTC [42] LOG: el sistema de bases de datos está apagado
111:M 26 Mar 2024 13:27:39.896 * DB guardado en disco
111:M 26 Mar 2024 13:27:39.896 # Redis está listo para salir, adiós...
FALLIDO
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' falló con retorno #<Process::Status: pid 3889 exit 1>
Ubicación del fallo: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec falló con los parámetros {\"cd\"=>\"$home\", \"hook\"=>\"assets_precompile\", \"cmd\"=>[\"su discourse -c 'bundle exec rake themes:update assets:precompile'\"]}}
fallo de arranque con código de salida 1
** FALLO AL INICIAR ** por favor desplácese hacia arriba y busque mensajes de error anteriores, puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7
Como nota posterior, no enlacé al sitio donde ocurrió porque uno de los miembros del personal estaba probando un error del kernel en un contenedor separado en el mismo servidor, y accidentalmente bloqueó todo el servidor, por lo que enlazar al sitio no habría ayudado en absoluto.