Ich habe die letzten paar Tage damit verbracht, eine Möglichkeit zu finden, Discourse mit Apache auf demselben DigitalOcean-Droplet zu kombinieren. Die hier auf Discourse verfügbaren Tutorials sind entweder veraltet oder für mich nicht anwendbar. Ein Tutorial verwendet CentOS und HAProxy (ich verwende Ubuntu), und das andere verwendet Nginx (ich verwende Apache).
Ich bin auf einen Kommentar in einem DigitalOcean-Thread gestoßen und habe die dortigen Anweisungen auf einem Test-Droplet befolgt: Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean
Alles scheint reibungslos verlaufen zu sein, einschließlich des Let’s Encrypt SSL. Meine Startseite, ein paar statische HTML-Dokumente, funktionieren einwandfrei. Discourse wird trotz fehlerfreier Installation nicht angezeigt. Wenn ich zu community.mysite.com navigiere, sehe ich nur meine Startseite mit einem ungesicherten HTTPS in der URL. Ja, meine DNS-Einstellungen sind korrekt und zeigen auf den richtigen Server.
Dies ist meine mysite.com.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /var/www/mysite.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.mysite.com [OR]
RewriteCond %{SERVER_NAME} =mysite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Dies ist meine mysite.com-le-ssl.conf:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName mysite.com
ServerAlias www.mysite.com
DocumentRoot /var/www/mysite.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/mysite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mysite.com/privkey.pem
</VirtualHost>
</IfModule>
Dies ist meine community.mysite.com.conf:
<VirtualHost *:80>
ServerName community.mysite.com
ServerAlias www.community.mysite.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
Und schließlich hier meine app.yml (natürlich bearbeitet):
## Dies ist die All-in-One, Standalone Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MÜSSEN Sie neu aufbauen
## /var/discourse/launcher rebuild app
##
## SEien Sie *SEHR* vorsichtig beim Bearbeiten!
## YAML-Dateien sind SUPER SUPER empfindlich gegenüber Fehlern in 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"
## Deaktivieren Sie diese beiden Zeilen, wenn Sie Lets Encrypt (https) hinzufügen möchten
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
## Welche TCP/IP-Ports sollte dieser Container exponieren?
## 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:
- "8080:80" # weitergeleiteter Host-Port 8080 zu Container-Port 80 (http)
- "8443:443" # weitergeleiteter Host-Port 8443 zu Container-Port 443 (http)
params:
db_default_text_search_config: "pg_catalog.english"
## Setzen Sie db_shared_buffers auf maximal 25% des gesamten Speichers.
## wird automatisch vom Bootstrap basierend auf dem erkannten RAM festgelegt, oder Sie können es überschreiben
db_shared_buffers: "128MB"
## kann die Sortierleistung verbessern, erhöht aber die Speichernutzung pro Verbindung
#db_work_mem: "40MB"
## Welche Git-Revision sollte dieser Container verwenden? (Standard: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt vom Speicher und den CPU-Kernen ab.
## wird automatisch vom Bootstrap basierend auf den erkannten CPUs festgelegt, oder Sie können es ü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: community.mysite.com
## Deaktivieren Sie dies, wenn Sie möchten, dass der Container mit demselben
## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Liste der durch Komma getrennten E-Mail-Adressen, die bei der ersten Registrierung zu Admin und Entwickler werden
## Beispiel 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'myemail'
## TODO: Der SMTP-Mailserver, der zur Validierung 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: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: my-smtp-username
DISCOURSE_SMTP_PASSWORD: "my-smtp-password"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, Standard true)
## Wenn Sie die Lets Encrypt-Vorlage hinzugefügt haben, deaktivieren Sie unten, um ein kostenloses SSL-Zertifikat zu erhalten
LETSENCRYPT_ACCOUNT_EMAIL: myemail
## Die http- oder https-CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
## siehe https://meta.discourse.org/t/14857 für Details
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## 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
## Beliebige benutzerdefinierte Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Wenn Sie die 'Von'-E-Mail-Adresse für Ihre erste Registrierung festlegen möchten, deaktivieren Sie dies und ändern Sie:
## Nach Erhalt der ersten Anmelde-E-Mail kommentieren Sie die Zeile erneut aus. Sie muss nur einmal ausgeführt werden.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Ende der benutzerdefinierten Befehle"
Kann mir jemand sagen, wo ich einen Fehler gemacht habe oder was ich übersehen habe? Danke!