Similar a Uploaded avatars and Gravatar not working with subfolder installation…
Todas las cargas están rotas en mi instalación de subcarpeta. Las cargas llegan al directorio de cargas real, pero al renderizar las publicaciones, todas las imágenes obtienen src="".
Haciendo una publicación…
https://i.imgur.com/ofOUY4e.png
Después de publicar…
https://i.imgur.com/EBmnD6e.png
Sorprendentemente, si luego me muevo a un navegador diferente (ahora Chrome), abro el tema (donde la imagen todavía está rota), pero luego hago clic en editar, ¡la imagen se renderiza nuevamente en la vista previa de edición!
https://i.imgur.com/3rQirhc.png
Esto confirma que se está cargando correctamente en el servidor, lo cual he verificado:
root@cs6991:/var/discourse# ./launcher enter app
x86_64 arch detected.
root@cs6991-app:/var/www/discourse# ls 'public/~cs6991/forum'
backups uploads
root@cs6991-app:/var/www/discourse# ls 'public/~cs6991/forum/uploads'
default
root@cs6991-app:/var/www/discourse# ls 'public/~cs6991/forum/uploads/default/original/1X/'
08335563eac3a393e60a902d4d38cffdfa6d967d.png 3eee67e6460792667bab4f2248ad4643be4feae3.png
29e403dabcfee32379629fb6d844354193e278ba.png 42ecfcb27b534acc9f3436fa7d291c2fca106e57.png
Pero simplemente no parece renderizarse en la página real.
El mismo problema ocurre con otras cargas, como los avatares.
Alguna información:
Subcarpeta: /~cs6991/forum
app.yml
## esta es la plantilla de contenedor de Discourse independiente todo en uno
##
## Después de realizar cambios en este archivo, DEBE reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TENGA MUCHO CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON EXTREMADAMENTE SENSIBLES A ERRORES DE ESPACIO O ALINEACIÓN!
## visite http://www.yamllint.com/ para validar este archivo según sea necesario
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomente estas dos líneas si desea agregar Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## ¿qué puertos TCP/IP debe exponer este contenedor?
## Si desea que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulte https://meta.discourse.org/t/17247 para obtener detalles
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Establezca db_shared_buffers en un máximo del 25% de la memoria total.
## se establecerá automáticamente mediante bootstrap según la RAM detectada, o puede anularlo
db_shared_buffers: "128MB"
## puede mejorar el rendimiento de la clasificación, pero aumenta el uso de memoria por conexión
#db_work_mem: "40MB"
## ¿Qué revisión de Git debe usar este contenedor? (predeterminado: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
## se establecerá automáticamente mediante bootstrap según las CPU detectadas, o puede anularlo
UNICORN_WORKERS: 2
## TODO: El nombre de dominio al que responderá esta instancia de Discourse
## Requerido. Discourse no funcionará con un número IP simple.
DISCOURSE_HOSTNAME: 'cgi.cse.unsw.edu.au'
## Descomente si desea que el contenedor se inicie con el mismo
## nombre de host (-h option) que se especifica arriba (predeterminado "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de correos electrónicos separados por comas que serán administradores y desarrolladores
## en el registro inicial, por ejemplo, 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: '<<REDACTED>>'
## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
# DIRECCIÓN SMTP, nombre de usuario y contraseña son requeridos
# ADVERTENCIA: el carácter '#' en la contraseña SMTP puede causar problemas.
DISCOURSE_SMTP_ADDRESS: email-smtp.ap-southeast-2.amazonaws.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: <<REDACTED>>
DISCOURSE_SMTP_PASSWORD: <<REDACTED>>
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, predeterminado true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (requerido por algunos proveedores)
DISCOURSE_NOTIFICATION_EMAIL: discourse@cs6991.email # (dirección para enviar notificaciones)
## Si agregó la plantilla Lets Encrypt, descomente a continuación para obtener un certificado SSL gratuito
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## La dirección CDN http o https para esta instancia de Discourse (configurada para tirar)
## consulte https://meta.discourse.org/t/14857 para obtener detalles
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## La clave de licencia de IP de geolocalización de MaxMind para la búsqueda de direcciones IP
## consulte https://meta.discourse.org/t/-/137387/23 para obtener detalles
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
DISCOURSE_RELATIVE_URL_ROOT: '/~cs6991/forum'
## El contenedor Docker no tiene estado; todos los datos se almacenan en /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Los plugins van aquí
## consulte https://meta.discourse.org/t/19157 para obtener detalles
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Cualquier comando personalizado para ejecutar después de la construcción
run:
- exec: echo "Beginning of custom commands"
## Si desea establecer la dirección de correo electrónico 'De' para su primer registro, descomente y cambie:
## Después de recibir el primer correo electrónico de registro, vuelva a comentar la línea. Solo necesita ejecutarse una vez.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec:
cd: $home
cmd:
- mkdir -p public/~cs6991/forum
- cd public/~cs6991/forum && ln -s ../../uploads && ln -s ../../backups
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: proxy_pass http://discourse;
to: |
rewrite ^/(.*)$ /~cs6991/forum/$1 break;
proxy_pass http://discourse;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: etag off;
to: |
etag off;
location /~cs6991/forum {
rewrite ^/~cs6991/forum/?(.*)$ /$1;
}
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_your_original_ip_header
global: true
- exec: echo "End of custom commands"
Todo lo demás, hasta donde puedo ver, parece estar funcionando correctamente, solo la renderización de cargas está actuando de manera bastante peculiar.
He verificado este comportamiento en una compilación completamente nueva; es decir, rm -rf /var/discourse, eliminando completamente docker, y siguiendo las instrucciones de instalación en la nube y de subcarpeta.
Si hay alguna investigación adicional que pueda realizar, estaré encantado de dar esos pasos. (¡perdón por los enlaces de imgur, todavía no tengo permitido más de 2 incrustaciones de imágenes aquí!)
¡Saludos!