Questo tutorial ti mostrerà come installare Discourse sul server Ubuntu 18.04. Creato dal fondatore di StackExchange Jeff Atwood, Discourse è un forum Internet open source (noto anche come bacheca di messaggi online) e un software di gestione delle mailing list, con l'obiettivo di rivoluzionare la discussione nei forum. È scritto con Ember.js e Ruby on Rails, utilizzando PostgreSQL come sistema di gestione del database back-end.
Caratteristiche del discorso
- Scorrimento infinito. Non c'è una pagina successiva in un thread. Scorri verso il basso per saperne di più.
- aggiornamenti in tempo reale, trascina e rilascia gli allegati.
- I thread del forum possono essere classificati in base alla popolarità.
- La vista "miglior thread" può mostrare la migliore risposta a un thread particolare.
- La capacità di ricordare dove stavi leggendo in un thread.
- Espansione degli URL per fornire un riepilogo dell'URL.
- Gli utenti possono rispondere via email.
- Il sistema di segnalazione nasconde automaticamente i post inappropriati finché non possono essere esaminati da un membro dello staff.
- I moderatori possono dividere, unire, localizzare o archiviare qualsiasi argomento.
- In base al livello di fiducia, un utente può essere promosso come moderatore o retrocesso come troll, cattivo attore o spammer per mantenere civile il forum. Protezione antispam ed euristiche integrate di Akismet, inclusi il sandboxing per i nuovi utenti, il blocco dei flag utente e il nofollow standard.
- Un sistema di badge può mostrare ciò che un utente ha raggiunto.
- Web design reattivo e ottimizzato per i dispositivi mobili. Gli utenti possono leggere o pubblicare da laptop, tablet e telefono.
- 100% open source gratuito. Nessuna versione commerciale a pagamento con funzionalità migliori o più complete.
- Accesso singolo. Integra perfettamente Discourse con il sistema di accesso del tuo sito esistente.
- Accesso social. Aggiungi facilmente accessi social comuni come Google, Facebook, Twitter, ecc.
- App disponibile per iOS e Android.
- Disponibile in più di 30 lingue.
- Autenticazione a due fattori per migliorare la sicurezza dell'account.
- E molti altri.
Prerequisiti per l'installazione di Discourse su Ubuntu 18.04 senza Docker
Il metodo ufficiale di installazione di Discourse è con Docker, che è ottimo per coloro che vogliono far funzionare rapidamente un'applicazione. Ma Docker è anche affamato di risorse. Pensaci:se hai già installato e funzionante alcuni componenti come il server di database PostgreSQL, il metodo Docker eseguirà comunque un database PostgreSQL separato all'interno del contenitore, il che è uno spreco di risorse del server. È necessario un server da 2 GB di RAM per eseguire Discourse con Docker. Ti mostrerò come eseguire Discourse su un server da 1 GB di RAM senza docker.
Per eseguire Discourse, è necessario un server con almeno 1 GB di RAM. Puoi fare clic su questo link di riferimento per creare un account su Vultr per ottenere un credito gratuito di $ 50 (solo per i nuovi utenti). Una volta che hai un account su Vultr, installa Ubuntu 18.04 sul tuo server e segui le istruzioni seguenti.
Hai anche bisogno di un nome di dominio. Ho registrato il mio nome di dominio su NameCheap perché il prezzo è basso e offrono protezione della privacy a Whois gratuita per tutta la vita.
Avviso :Ho installato Discourse con un utente sudo su Ubuntu 18.04. Per ottenere i migliori risultati, dovresti anche seguire questo tutorial con un utente sudo, non root.
Per aggiungere un utente sudo, esegui semplicemente
sudo adduser username sudo adduser username sudo
Quindi passa al nuovo utente.
su - username
Passaggio 1:configurare il server di database PostgreSQL
Accedi al tuo server tramite SSH, quindi esegui il comando seguente per installare PostgreSQL dal repository del software Ubuntu predefinito.
sudo apt install postgresql
Il server di database PostgreSQL si avvierà automaticamente e sarà in ascolto su 127.0.0.1:5432
, come si può vedere con il comando seguente. (Se il tuo server Ubuntu non ha il netstat
comando, puoi eseguire sudo apt install net-tools
comando per installarlo.)
sudo netstat -lnpt | grep postgres
Se non vedi alcun output dal comando precedente, è probabilmente perché il server PostgreSQL non è in esecuzione. Puoi avviare il server PostgreSQL emettendo il seguente comando.
sudo systemctl start postgresql
Il postgres
l'utente verrà creato sul sistema operativo durante il processo di installazione. È il super utente per il server di database PostgreSQL. Per impostazione predefinita, questo utente non ha password e non è necessario impostarne una perché puoi utilizzare sudo
per passare a postgres
utente e accedi alla console PostgreSQL.
sudo -u postgres psql
Crea un database per Discourse.
CREATE DATABASE discourse;
Crea un utente del database.
CREATE USER discourse_user;
Imposta una password per questo utente.
ALTER USER discourse_user WITH ENCRYPTED PASSWORD 'your_preferred_password';
Imposta questo utente come proprietario del database del discorso.
ALTER DATABASE discourse OWNER TO discourse_user;
Collegati al database del discorso.
\c discourse;
Crea il hstore
e pg_trgm
estensione.
CREATE EXTENSION hstore; CREATE EXTENSION pg_trgm;
Esci dalla console PostgreSQL.
\q
Passaggio 2:installa Ruby su Ubuntu 18.04
Il discorso richiede Ruby 2.7 o superiore. Tuttavia, il repository Ubuntu 18.04 viene fornito con Ruby 2.5.1. L'ultima versione di Ruby è la 3.0.1. Tuttavia, non consiglio di utilizzare l'ultima versione, perché potrebbe non essere compatibile con Discourse. Per una migliore compatibilità, consiglio di installare Ruby 2.7 da un PPA.
sudo apt install software-properties-common sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt install ruby2.7
Per controllare il tuo numero di versione di Ruby, esegui
ruby -v
Uscita:
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu]
Fase 3:scarica e configura il discorso
Installa lo strumento git.
sudo apt install git
Supponendo che tu sia nella tua home directory, esegui il comando seguente per clonare il repository di codice Discourse da Github.
git clone https://github.com/discourse/discourse.git
Crea la directory /var/www/, se non è già stata creata.
sudo mkdir /var/www/
Sposta la directory del discorso su /var/www/
.
sudo mv discourse/ /var/www/
Cambia directory e usa l'ultima versione stabile di Discourse. Puoi andare alla pagina delle versioni di Github per vedere l'ultima versione stabile. Ora sto usando la v2.5.0.
cd /var/www/discourse/ git checkout v2.5.0
Installa bundler:il gestore delle dipendenze di Ruby.
sudo /usr/bin/gem install bundler
Installa i seguenti pacchetti per compilare il codice sorgente.
sudo apt-get install gcc build-essential ruby2.7-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick
Quindi installa le dipendenze di Discourse. Questo processo potrebbe utilizzare molta RAM.
RAILS_ENV=production /usr/local/bin/bundle config set path '/var/www/discourse/vendor/bundle/' RAILS_ENV=production /usr/local/bin/bundle install
Copia il file di configurazione predefinito in un nuovo file.
cp config/discourse_defaults.conf config/discourse.conf
Modifica il nuovo file.
nano config/discourse.conf
Configura la connessione al database.
# host address for db server # This is set to blank so it tries to use sockets first db_host = localhost # port running db server, no need to set it db_port = 5432 # database name running discourse db_name = discourse # username accessing database db_username = discourse_user # password used to access the db db_password = your_password
Modifica il nome di dominio utilizzato con il tuo forum Discourse.
# hostname running the forum hostname = "community.example.com"
Salva e chiudi il file.
Fase 4:ottieni una chiave di licenza MaxMind gratuita
Discourse viene fornito con uno strumento di analisi web integrato. Se vuoi conoscere le informazioni geografiche dei tuoi visitatori, hai bisogno di una chiave di licenza MaxMind.
Crea un account su MaxMind. Maxmind ti invierà un'e-mail. Fare clic sul collegamento nell'e-mail per impostare una password, quindi accedere al proprio account MaxMind. Quindi, seleziona My License Key
sulla barra di sinistra.
Fai clic su Genera nuova chiave di licenza pulsante.
Assegna un nome alla tua chiave di licenza. Quindi scegli No
, perché non è necessario utilizzare il geoipupdate
programma. Quindi fai clic su Confirm
pulsante.
Una volta creata la chiave di licenza, copia la chiave di licenza. Apri il file di configurazione del discorso.
nano config/discourse.conf
Trova la riga seguente e aggiungi qui la tua chiave di licenza.
maxmind_license_key=
Salva e chiudi il file.
Fase 5:inizia il discorso
Installa i pacchetti richiesti.
sudo apt install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs npm sudo npm install -g svgo
Modifica il file di configurazione dell'ambiente di produzione.
nano /var/www/discourse/config/environments/production.rb
Aggiungi il codice seguente come quinta riga.
require 'uglifier'
Quindi trova la riga seguente.
config.assets.js_compressor = :uglifier
Sostituiscilo con:
config.assets.js_compressor = Uglifier.new(:harmony => true)
Salva e chiudi il file. Quindi eseguire il comando seguente per inizializzare il database. Se vedi degli errori durante questo passaggio, esegui semplicemente di nuovo il comando.
RAILS_ENV=production /usr/local/bin/bundle exec rake db:migrate
Successivamente, compileremo risorse statiche come JavaScript, ma prima di farlo, dobbiamo modificare un file.
nano /var/www/discourse/lib/tasks/assets.rake
Dobbiamo trovare le righe che contengono brotli
e commentarli per disabilitare la compressione Brotili, perché i file JavaScript verranno compressi con Gzip. Se la compressione Gzip e Brotili sono entrambe abilitate, ci saranno alcuni fastidiosi errori durante la compilazione degli asset. Trova la riga seguente (riga 281) e commentala.
brotli(path, max_compress)
Salva e chiudi il file. Quindi, esegui il comando seguente per compilare le risorse. Questo processo può utilizzare molta RAM come 1 GB.
RAILS_ENV=production /usr/local/bin/bundle exec rake assets:precompile
Quindi, modifica il puma.rb file
nano /var/www/discourse/config/puma.rb
Trova la riga seguente.
APP_ROOT = '/home/discourse/discourse'
Cambia il percorso dell'applicazione in
APP_ROOT = '/var/www/discourse'
Salva e chiudi il file. Quindi crea i socket e la directory ID processo.
mkdir /var/www/discourse/tmp/sockets/ /var/www/discourse/tmp/pids/
Inizia il discorso.
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Esempio di output:
[24161] Puma starting in cluster mode... [24161] * Version 4.3.1 (ruby 2.7.1-p146), codename: Mysterious Traveller [24161] * Min threads: 8, max threads: 32 [24161] * Environment: development [24161] * Process workers: 4 [24161] * Preloading application [24161] * Listening on unix:///var/www/discourse/tmp/sockets/puma.sock [24161] ! WARNING: Detected 4 Thread(s) started in app boot: [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:38 sleep_forever> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb:40:in `pop' [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus.rb:667 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/connection/ruby.rb:68:in `select' [24161] ! #<Thread:[email protected]/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:38 sleep> - /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/timer_thread.rb:123:in `sleep' [24161] ! #<Thread:[email protected]/discourse.rb:708 sleep> - lib/discourse.rb:711:in `sleep' [24161] * Daemonizing...
Discourse è in ascolto su socket Unix:/var/www/discourse/tmp/sockets/puma.sock .
Fase 6:Configura il proxy inverso Nginx
Installa il server web Nginx dal repository del software Ubuntu 18.04 predefinito.
sudo apt install nginx
Copia il file di configurazione dell'host virtuale Nginx di esempio.
sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
Modifica il nuovo file.
sudo nano /etc/nginx/conf.d/discourse.conf
Trova le righe seguenti e commentale perché useremo Puma.
upstream discourse { server unix:/var/www/discourse/tmp/sockets/nginx.http.sock; server unix:/var/www/discourse/tmp/sockets/nginx.https.sock; }
Trova le seguenti righe e decommentale.
# upstream discourse { # server unix:/var/www/discourse/tmp/sockets/puma.sock; # }
Trova la riga seguente.
server_name enter.your.web.hostname.here;
Cambia il nome del server. Non dimenticare di aggiungere un record DNS A per il nome di dominio.
server_name community.example.com;
Nginx per impostazione predefinita non supporta la compressione Brotli, quindi commenta la riga seguente.
brotli_static on;
Salva e chiudi il file. Crea la directory della cache.
sudo mkdir -p /var/nginx/cache/
Quindi testa la configurazione di Nginx.
sudo nginx -t
Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.
sudo systemctl reload nginx
Ora dovresti essere in grado di vedere il forum Discourse su http://community.example.com
.
Passaggio 7:abilita HTTPS
Per crittografare il traffico HTTP, possiamo abilitare HTTPS installando un certificato TLS gratuito emesso da Let's Encrypt. Esegui il comando seguente per installare il client Let's Encrypt (certbot) sul server Ubuntu 18.04.
sudo apt install certbot python3-certbot-nginx
Quindi, esegui il comando seguente per ottenere e installare il certificato TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d community.example.com
Dove
--nginx
:Usa il plugin nginx.--agree-tos
:Accetta i termini di servizio.--redirect
:Forza HTTPS tramite reindirizzamento 301.--hsts
: Aggiungi l'intestazione Strict-Transport-Security a ogni risposta HTTP. Forzare il browser a utilizzare sempre TLS per il dominio. Difende dallo stripping SSL/TLS.--staple-ocsp
: Abilita la pinzatura OCSP. Una risposta OCSP valida viene pinzata al certificato offerto dal server durante TLS.
Il certificato dovrebbe ora essere ottenuto e installato automaticamente.
E puoi accedere al forum Discourse tramite HTTPS (https://community.example.com
).
Se Firefox mostra un triangolo giallo nella barra degli indirizzi del browser, è perché alcune immagini sono ancora servite sul protocollo HTTP. Per risolvere questo problema, puoi modificare il file di configurazione di Discourse Nginx.
sudo nano /etc/nginx/conf.d/discourse.conf
Aggiungi la seguente riga nel blocco del server SSL per aggiornare le richieste non sicure.
add_header Content-Security-Policy upgrade-insecure-requests;
Salva e chiudi il file. E ricarica Nginx.
sudo nginx -t sudo systemctl reload nginx
Fase 8:crea un account amministratore
Vai alla directory del discorso (/var/www/discourse/ ) ed esegui il comando seguente per creare un account amministratore.
RAILS_ENV=production /usr/local/bin/bundle exec rake admin:create
Ti verrà chiesto di inserire un indirizzo email e una password per l'account amministratore.
Dopodiché, riavvia Discourse.
RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart
Ora aggiorna la pagina web di Discourse e sarai in grado di accedere.
Se vedi l'errore 502 bad gateway, allora il comando di riavvio non ha avuto successo, devi avviare Discourse con:
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Una volta effettuato l'accesso, è possibile avviare la procedura guidata di configurazione. (https://community.example.com/wizard) e segui le istruzioni per completare l'installazione. Se utilizzi Cloudflare CDN, devi andare su impostazioni -> sicurezza -> Politica di sicurezza dei contenuti src e aggiungi questo URL:https://community.example.com/cdn-cgi/
Fase 9:Configura il servizio di elaborazione in background:Sidekiq
Sidekiq è un programmatore di lavoro open source. Molte attività, come l'invio di e-mail, vengono eseguite in modo asincrono da sidekiq. Modifica il sidekiq.yml
file.
nano /var/www/discourse/config/sidekiq.yml
Aggiungi le seguenti righe alla fine del file. Questa configurazione è adatta per un forum Discourse con poca attività dell'utente e RAM. Se sono presenti molte attività degli utenti, valuta la possibilità di raddoppiare la concorrenza e il numero di code.
production: :concurrency: 2 :queues: - [critical, 4] - [default, 2] - [low] - [ultra_low]
Salva e chiudi il file. Quindi crea un servizio Systemd per sidekiq.
sudo nano /etc/systemd/system/discourse-sidekiq.service
Aggiungi le seguenti righe nel file. Sostituisci nome utente con il tuo vero nome utente.
[Unit] Description=Discourse sidekiq background processing service After=multi-user.target [Service] Type=simple User=username PIDFile=/var/www/discourse/tmp/pids/sidekiq.pid WorkingDirectory=/var/www/discourse Environment=RAILS_ENV=production ExecStart=/usr/local/bin/bundle exec sidekiq -C /var/www/discourse/config/sidekiq.yml Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Salva e chiudi il file. Quindi avvia e abilita questo servizio.
sudo systemctl start discourse-sidekiq sudo systemctl enable discourse-sidekiq
Controlla lo stato. Assicurati che sia in esecuzione.
sudo systemctl status discourse-sidekiq
La dashboard di Sidekiq è disponibile su https://community.example.com/sidekiq
.
Fase 10:crea un servizio Systemd per il discorso
Per prima cosa, interrompi l'attuale processo del discorso con
cd /var/www/discourse/ RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid stop
Quindi modifica il puma.rb
file.
nano /var/www/discourse/config/puma.rb
Commenta le due righe seguenti (aggiungi il #
simbolo all'inizio di ogni riga) perché Systemd gestirà l'ID processo e la demonizzazione.
pidfile "#{APP_ROOT}/tmp/pids/puma.pid" daemonize true
Quindi, crea un servizio Systemd per Discourse.
sudo nano /etc/systemd/system/discourse.service
Aggiungi le seguenti righe nel file. Sostituisci nome utente con il tuo vero nome utente.
[Unit] Description=Discourse service [Service] Type=simple User=username PIDFile=/var/www/discourse/tmp/pids/puma.pid WorkingDirectory=/var/www/discourse Environment=RAILS_ENV=production ExecStart=/usr/local/bin/bundle exec puma -C config/puma.rb Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
Salva e chiudi il file. Quindi avvia e abilita questo servizio.
sudo systemctl start discourse sudo systemctl enable discourse
Controlla lo stato. Assicurati che sia in esecuzione.
sudo systemctl status discourse
Fase 11:Configura SMTP
Discourse deve inviare e-mail in modo che i visitatori possano registrare un account sul tuo forum e ricevere notifiche. Per modificare le impostazioni SMTP, apri discourse.conf
file.
nano /var/www/discourse/config/discourse.conf
Puoi trovare le seguenti righe per configurare il server SMTP. Normalmente vorresti usare 587 come porta SMTP.
# address of smtp server used to send emails smtp_address = # port of smtp server used to send emails smtp_port = 25 # domain passed to smtp server smtp_domain = # username for smtp server smtp_user_name = # password for smtp server smtp_password = # smtp authentication mechanism smtp_authentication = plain # enable TLS encryption for smtp connections smtp_enable_start_tls = true
Potresti anche voler aggiungere il Da: indirizzo in questo file come di seguito.
# From: address notification_email = [email protected]
Per come configurare il tuo server di posta, dai un'occhiata al seguente tutorial. Nota che consiglio vivamente di eseguire il server di posta iRedMail su un nuovo sistema operativo pulito. L'installazione di iRedMail su un sistema operativo che dispone di altre applicazioni Web può non riuscire e probabilmente interrompere le applicazioni esistenti.
- Come configurare facilmente un server di posta completo su Ubuntu 18.04 con iRedMail
Se preferisci utilizzare un servizio di inoltro SMTP di terze parti, ti consiglio Sendinblue, che ti consente di inviare 9000 email al mese gratuitamente.
Dopo aver salvato le impostazioni SMTP, riavvia il servizio Discourse.
sudo systemctl restart discourse discourse-sidekiq
Quindi puoi testare l'invio di email nella dashboard di amministrazione di Discourse.
Puoi andare su mail-tester.com, che ti darà un indirizzo email univoco. Invia un'email di prova dal tuo Discourse a questo indirizzo email per conoscere il punteggio del tuo mittente.
Impossibile inviare e-mail
Se la tua istanza di Discourse non invia email e vedi il seguente messaggio nella pagina web di Discourse,
All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent.
devi andare su Impostazioni -> E-mail (non Email), imposta disabilita email a no . Salva l'impostazione e riavvia Discourse.
sudo systemctl restart discourse discourse-sidekiq
Se il tuo Discourse non riesce ancora a inviare e-mail, controlla se può eseguire il ping del server di posta. Inoltre, vai su https://community.example.com/sidekiq/retries
, ti mostrerà le email non riuscite e il motivo per cui l'invio delle email non è riuscito.
A volte, il discourse-sidekiq.service
può non riuscire e causare il mancato invio delle email, quindi potresti voler controllare se questo servizio è in esecuzione
sudo systemctl status discourse-sidekiq
Ottimizza l'utilizzo della RAM
La configurazione predefinita di puma fa sì che Discourse utilizzi molta RAM. Per impostazione predefinita, il mio discorso utilizza 4 lavoratori, 8 thread minimi, 32 thread massimi. Se la tua RAM non è sufficiente, il server redis verrà arrestato. Per ridurre l'utilizzo della RAM, puoi diminuire il numero di worker e thread in puma.rb
file.
nano /var/www/discourse/config/puma.rb
Trova le due righe seguenti.
workers "#{num_workers}" threads 8, 32
Puoi modificare i valori come di seguito, che dice a puma di utilizzare 2 worker, 4 thread minimi e 16 thread massimi. Questa impostazione è adatta per server con solo 1 GB di RAM.
workers 2 threads 4, 16
Salva e chiudi il file. Quindi riavvia il servizio Discourse.
sudo systemctl restart discourse
Migliora il discorso
Puoi iscriverti al feed RSS delle versioni di Discourse per rimanere informato sull'ultima versione. Prima di aggiornare Discourse, consiglio vivamente di eseguire un backup manuale del database nella dashboard di amministrazione di Discourse e scaricarlo sul disco rigido.
Nota :L'aggiornamento del browser con un clic (https://community.yourdomain.com/admin/upgrade) non funziona se hai installato Discourse senza Docker. Devi seguire le istruzioni seguenti.
Per aggiornare Discourse, prima interrompi il servizio.
sudo systemctl stop discourse
Vai alla directory di installazione di Discourse.
cd /var/www/discourse/
Ottieni nuovi tag dal repository Github.
git fetch --tags
Prima di controllare l'ultima versione stabile, ti consiglio di eseguire il backup del file di configurazione nella tua home directory.
cp config/puma.rb ~ cp config/environments/production.rb ~ cp config/sidekiq.yml ~ cp config/discourse.conf ~
Quindi elimina il file Gemfile.lock.
rm Gemfile.lock
E controlla l'ultima versione stabile. Ad esempio,
git checkout v2.3.4
Se viene visualizzato il seguente messaggio di errore.
Please commit your changes or stash them before you switch branches. Aborting
Quindi esegui il seguente comando
git stash
Quindi esegui di nuovo il comando git checkout.
Installa le dipendenze per la nuova versione di Discourse. Questo processo potrebbe utilizzare molta RAM.
RAILS_ENV=production /usr/local/bin/bundle install --path vendor/bundle/
Modifica il file asset.rake.
nano /var/www/discourse/lib/tasks/assets.rake
Trova la riga seguente (riga 273) e commentala.
brotli(path, max_compress)
Salva e chiudi il file. Quindi, esegui i seguenti comandi per preparare la produzione.
RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake assets:precompile
Quindi puoi verificare se il nuovo puma.rb
il file di configurazione ha aggiunto alcune nuove righe, rispetto al file originale. Se non ci sono novità, puoi semplicemente sostituire il file con quello originale.
mv ~/puma.rb /var/www/discourse/config/puma.rb mv ~/production.rb /var/www/discourse/config/environments/production.rb mv ~/sidekiq.yml /var/www/discourse/config/sidekiq.yml mv ~/discourse.conf /var/www/discourse/config/discourse.conf
Infine, avvia il discorso.
sudo systemctl start discourse
Ora puoi controllare la versione del discorso dalla dashboard dell'amministratore.
Personalizzazione del tema del discorso
Se non ti piace il tema bianco predefinito, puoi personalizzarlo tramite la Dashboard di amministrazione -> Personalizza -> Temi . Ci sono 3 temi installati per impostazione predefinita.
- Sfumature di blu
- Scuro
- Luce
Ho selezionato il tema Sfumature di blu. Puoi anche aggiungere CSS personalizzati facendo clic su Modifica CSS/HTML pulsante. Di seguito sono riportati i CSS che ho aggiunto per il mio Discorso.
html { background-color:#ececec; } #main-outlet { background-color: #fff; padding-left: 20px; } .d-header { background-color:rgb(45, 45, 45); } a:visited { color: blueviolet; } a { color: blueviolet; }
Come spostare il discorso su un nuovo server
Per prima cosa, fai un backup del tuo forum Discourse originale e scarica il file tar.gz. (Non modificare il nome del file.)
Quindi devi installare Discourse sul nuovo server seguendo i passaggi da 1 a 11. Quindi, carica il file di backup su /var/www/discourse/public/backups/default/
directory sul nuovo server.
Vai alla directory /var/www/discourse/ sul nuovo server.
cd /var/www/discourse/
Installa le dipendenze.
sudo gem install thor
Vai a Discourse Dashboard di amministrazione -> Impostazioni -> Backup , seleziona consenti ripristino .
Quindi, esegui il comando seguente per ripristinare il sito dal backup.
RAILS_ENV=production script/discourse restore file-name-of-the-backup-file.tar.gz
Al termine del ripristino, riavvia Discourse.
sudo systemctl restart discourse discourse-sidekiq
Aggiorna la pagina web di Discourse e vedrai di nuovo online il tuo forum Discourse originale.
Se vedi il seguente errore,
You must use Bundler 2 or greater with this lockfile.
Quindi devi aggiornare il bundler.
gem install bundler
Aggiorna gemfile.lock
RAILS_ENV=production bundle update --bundler
Puoi anche rimuovere il file Gemfile.lock in modo da non visualizzare questo errore.
Come disinstallare Discourse
Rimuovere il server di database PostgreSQL.
sudo apt remove postgresql
Rimuovere la directory webroot.
sudo rm /var/www/discourse/ -rf
Rimuovere il file di configurazione di Nginx.
sudo rm /etc/nginx/conf.d/discourse.conf
Rimuovi il certificato SSL Let's Encrypt.
sudo certbot revoke --cert-name community.example.com
Rimuovere il servizio SystemD.
sudo rm /etc/systemd/system/discourse.service sudo rm /etc/systemd/system/discourse-sidekiq.service
Monitoraggio della salute dell'istanza del tuo discorso
Dovresti tenere d'occhio il registro degli errori del discorso, che puoi trovare tramite la Dashboard di amministrazione -> Registri -> Registri errori . Se il tuo server riceve molto traffico, potresti aver bisogno di più RAM per eseguire Discourse. Il registro seguente mostra che il mio server aveva esaurito la memoria.
Come trattare gli utenti difficili nel discorso
Se c'è un particolare utente nel tuo forum Discourse che ti sta rendendo la vita più difficile, puoi bloccare questo utente su 0: new user
livello di affidabilità, quindi vai su Discourse Admin
-> Settings
-> Posting
e richiedono post/argomenti creati da 0: new user
da approvare prima di poter essere pubblicati.
Conclusione
Spero che questo articolo ti abbia aiutato a installare il software del forum Discourse su Ubuntu 18.04 senza usare Docker. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere altri suggerimenti e trucchi. Abbi cura di 🙂