Ähnlich wie bei Uploaded avatars and Gravatar not working with subfolder installation…
Alle Uploads sind bei meiner Subfolder-Installation defekt. Die Uploads landen im tatsächlichen Upload-Verzeichnis, aber beim Rendern der Beiträge erhalten alle Bilder src="".
Einen Beitrag erstellen…
https://i.imgur.com/ofOUY4e.png
Nach dem Posten…
https://i.imgur.com/EBmnD6e.png
Erstaunlicherweise, wenn ich dann zu einem anderen Browser (jetzt Chrome) wechsle, das Thema aufrufe (wo das Bild immer noch defekt ist), aber dann auf Bearbeiten klicke, wird das Bild in der Bearbeitungsvorschau wieder gerendert!
https://i.imgur.com/3rQirhc.png
Dies bestätigt, dass der Upload erfolgreich auf dem Server erfolgt, was ich überprüft habe:
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
Aber es scheint einfach nicht auf der eigentlichen Seite gerendert zu werden.
Das gleiche Problem tritt bei anderen Uploads auf, z. B. bei Avataren.
Einige Informationen:
Subfolder: /~cs6991/forum
app.yml
## Dies ist die All-in-One, eigenständige Discourse Docker Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSSEN Sie neu erstellen
## /var/discourse/launcher rebuild app
##
## SEIEN SIE SEHR VORSICHTIG BEIM BEARBEITEN!
## YAML-DATEIEN SIND SUPER SUPER EMPFINDLICH GEGEN FEHLER BEI LEERZEICHEN ODER AUSRICHTUNG!
## Besuchen Sie http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Kommentieren Sie diese beiden Zeilen aus, wenn Sie Lets Encrypt (https) hinzufügen möchten
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## Welche TCP/IP-Ports soll dieser Container verfügbar machen?
## Wenn Sie möchten, dass Discourse einen Port mit einem anderen Webserver wie Apache oder Nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Setzen Sie db_shared_buffers auf maximal 25% des Gesamtspeichers.
## wird automatisch von bootstrap basierend auf dem erkannten RAM gesetzt, oder Sie können überschreiben
db_shared_buffers: "128MB"
## kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch pro Verbindung
#db_work_mem: "40MB"
## Welche Git-Revision soll dieser Container verwenden? (Standard: 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
## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt von Speicher und CPU-Kernen ab.
## wird automatisch von bootstrap basierend auf den erkannten CPUs gesetzt, oder Sie können überschreiben
UNICORN_WORKERS: 2
## TODO: Der Domainname, auf den diese Discourse-Instanz reagieren wird
## Erforderlich. Discourse funktioniert nicht mit einer reinen IP-Nummer.
DISCOURSE_HOSTNAME: 'cgi.cse.unsw.edu.au'
## Kommentieren Sie dies aus, wenn der Container mit demselben
## Hostnamen (-h Option) wie oben angegeben gestartet werden soll (Standard "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Liste von per Komma getrennten E-Mails, die beim ersten Login zu Administratoren und Entwicklern gemacht werden
## Beispiel 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: '<<REDACTED>>'
## TODO: Der SMTP-Mailserver, der zum Überprüfen neuer Konten und zum Senden von Benachrichtigungen verwendet wird
# SMTP-ADRESSE, Benutzername und Passwort sind erforderlich
# WARNUNG: das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
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 # (optional, Standard true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (von einigen Anbietern erforderlich)
DISCOURSE_NOTIFICATION_EMAIL: discourse@cs6991.email # (Adresse, von der Benachrichtigungen gesendet werden)
## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, kommentieren Sie unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## Die HTTP- oder HTTPS-CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Ziehen)
## siehe https://meta.discourse.org/t/14857 für Details
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## Der Maxmind Geolocation IP-Adressschlüssel für die IP-Adresssuche
## siehe https://meta.discourse.org/t/-/137387/23 für Details
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
DISCOURSE_RELATIVE_URL_ROOT: '/~cs6991/forum'
## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Alle benutzerdefinierten Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn Sie die E-Mail-Adresse 'Von' für Ihre erste Registrierung festlegen möchten, kommentieren Sie die Zeile aus und ändern Sie sie:
## Nachdem Sie die erste Registrierungs-E-Mail erhalten haben, kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
#- 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 "Ende der benutzerdefinierten Befehle"
Alles andere scheint, soweit ich das beurteilen kann, korrekt zu funktionieren – nur die Darstellung von Uploads verhält sich ziemlich seltsam.
Ich habe dieses Verhalten bei einer komplett neuen Erstellung überprüft – das heißt, rm -rf /var/discourse, Docker komplett gelöscht und die Anweisungen für die Cloud-Installation + Subfolder befolgt.
Wenn es weitere Untersuchungen gibt, die ich durchführen kann, bin ich gerne bereit, diese Schritte zu unternehmen. (Entschuldigung für die Imgur-Links – ich darf hier noch keine 2+ Bilder einbetten!)
Viele Grüße!