Nonostante avessi ogni intenzione di abbandonare Discourse a causa della totale mancanza di documentazione attuale che non sia iper-focalizzata su CentOS/Nginx, una persona incredibilmente generosa e paziente di DigitalOcean ha risposto a un thread che avevo creato lì e, dopo alcuni tentativi ed errori, ha aiutato a mettere insieme un tutorial semplice da seguire per i futuri utenti di Discourse nelle stesse circostanze mie.
Come promemoria, queste circostanze sono:
Installare Discourse sullo stesso server di Apache | Utilizzando Ubuntu 18.04 | DigitalOcean
credito a Bobbyiliev @ DigitalOcean
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (prima risposta)
Prerequisiti
- Per stare sul sicuro, assicurati di eseguire il backup del tuo Droplet, così in caso di problemi potrai tornare a una versione funzionante
- Connettiti via SSH al tuo Droplet
- Apache installato; puoi seguire le istruzioni su come farlo qui:
Passo 1 - Installare Docker
Per installare Docker, segui le istruzioni qui:
Passo 2 - Scaricare Discourse
Per prima cosa, crea una directory dove memorizzare i file di Discourse:
mkdir /var/discourse
Successivamente, clona l’immagine Docker ufficiale di Discourse in /var/discourse.
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Passo 3 - Configurare Discourse per ascoltare sulla porta 8080
Utilizzeremo il modello standalone.yml che include tutti i servizi necessari come PostgreSQL, Redis, ecc.
Copia il file di esempio con il seguente comando:
cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml
Quindi modifica il file con il tuo editor preferito. Apri /var/discourse/containers/app.yml e aggiorna le porte alle righe 23 e 24:
## quali porte TCP/IP dovrebbe esporre questo contenitore?
expose:
- "8080:80" # inoltra la porta host 8080 alla porta del contenitore 80 (http)
- "8443:443" # inoltra la porta host 8443 alla porta del contenitore 443 (https)
Inoltre, se non hai ancora un certificato SSL, assicurati di commentare la riga 16:
#- "templates/web.ssl.template.yml"
Aggiungi semplicemente il simbolo # davanti alla riga - "templates/web.ssl.template.yml", altrimenti Discourse non si avvierà.
Passo 4 - Configurare Discourse
Cambia directory:
cd /var/discourse
Quindi avvia Discourse (poiché è la prima volta che avvii il servizio, verrà eseguito il bootstrap dell’applicazione con le nuove modifiche presenti nel file app.yml):
./discourse-setup
Nota: Assicurati di fornire impostazioni valide per il server di posta, altrimenti la configurazione potrebbe fallire.
Passo 5 - Configurare Apache
Nella directory /etc/apache2/sites-available/, crea un nuovo file chiamato forum.example.com.conf e aggiungi il seguente contenuto Vhost:
<VirtualHost *:80>
ServerName forum.example.com
ServerAlias www.forum.example.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
- Abilita il Vhost con il seguente comando:
a2ensite forum.example.com
- Abilita Mod Proxy:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
- Riavvia Apache:
systemctl restart apache2
Dopo di che, potrai accedere a Discourse direttamente tramite il tuo nome di dominio.
Nota 1: Durante l’installazione di Discourse, app.yml potrebbe essere sovrascritto e le righe 16/17 (SSL) verranno decommentate. Dovrai commentare nuovamente quelle righe e poi ricompilare l’app (non dimenticare di cambiare directory): ./launcher rebuild app
Nota 2: SSL non è abilitato per Discourse con questa guida. Non sorprende che non esista documentazione per abilitare SSL Let’s Encrypt se lo hai già abilitato per Apache. Se qualcuno trova una soluzione per questo, si prega di contattare.