Ce tutoriel va vous montrer comment installer Discourse sur le serveur Ubuntu 18.04. Créé par Jeff Atwood, fondateur de StackExchange, Discourse est un forum Internet open source (ou babillard en ligne) et un logiciel de gestion de liste de diffusion, dans le but de révolutionner la discussion sur les forums. Il est écrit avec Ember.js et Ruby on Rails, en utilisant PostgreSQL comme système de gestion de base de données back-end.
Caractéristiques du discours
- Défilement infini. Il n'y a pas de page suivante dans un fil. Faites simplement défiler vers le bas pour en savoir plus.
- mises à jour en direct, glisser-déposer des pièces jointes.
- Les fils de discussion du forum peuvent être classés par popularité.
- La vue "Meilleur fil de discussion" peut afficher la meilleure réponse à un fil de discussion particulier.
- La possibilité de se rappeler où vous étiez en train de lire dans un fil de discussion.
- Développer les URL pour fournir un résumé de l'URL.
- Les utilisateurs peuvent répondre par e-mail.
- Le système de signalement masque automatiquement les messages inappropriés jusqu'à ce qu'ils puissent être examinés par un membre du personnel.
- Les modérateurs peuvent diviser, fusionner, localiser ou archiver n'importe quel sujet.
- En fonction du niveau de confiance, un utilisateur peut être promu en tant que modérateur ou rétrogradé en tant que troll, mauvais acteur ou spammeur pour garder le forum civilisé. Protection anti-spam et heuristique Akismet intégrées, y compris le sandboxing des nouveaux utilisateurs, le blocage des indicateurs d'utilisateur et le non-suivi standard.
- Un système de badge peut montrer ce qu'un utilisateur a accompli.
- Conception Web réactive et adaptée aux mobiles. Les utilisateurs peuvent lire ou publier depuis un ordinateur portable, une tablette et un téléphone.
- Open Source 100 % gratuit. Pas de version commerciale payante avec des fonctionnalités meilleures ou plus complètes.
- Authentification unique. Intégrez de manière transparente Discourse au système de connexion de votre site existant.
- Connexion sociale. Ajoutez facilement des connexions sociales courantes telles que Google, Facebook, Twitter, etc.
- Application iOS et Android disponible.
- Disponible dans plus de 30 langues
- Authentification à deux facteurs pour améliorer la sécurité du compte.
- Et bien d'autres.
Prérequis pour installer Discourse sur Ubuntu 18.04 sans Docker
La méthode officielle d'installation de Discourse est avec Docker, ce qui est idéal pour ceux qui veulent qu'une application soit opérationnelle rapidement. Mais Docker est également gourmand en ressources. Pensez-y :si vous avez déjà des composants comme le serveur de base de données PostgreSQL en cours d'exécution, la méthode Docker exécutera toujours une base de données PostgreSQL distincte à l'intérieur du conteneur, ce qui est un gaspillage des ressources du serveur. Vous avez besoin d'un serveur de 2 Go de RAM pour exécuter Discourse avec Docker. Je vais vous montrer comment exécuter Discourse sur un serveur de 1 Go de RAM sans docker.
Pour exécuter Discourse, vous avez besoin d'un serveur avec au moins 1 Go de RAM. Vous pouvez cliquer sur ce lien de parrainage pour créer un compte chez Vultr et obtenir un crédit gratuit de 50 $ (pour les nouveaux utilisateurs uniquement). Une fois que vous avez un compte chez Vultr, installez Ubuntu 18.04 sur votre serveur et suivez les instructions ci-dessous.
Vous avez également besoin d'un nom de domaine. J'ai enregistré mon nom de domaine chez NameCheap parce que le prix est bas et qu'ils offrent une protection de la confidentialité whois gratuite à vie.
Avis :J'ai installé Discourse avec un utilisateur sudo sur Ubuntu 18.04. Pour de meilleurs résultats, vous devez également suivre ce tutoriel avec un utilisateur sudo, pas root.
Pour ajouter un utilisateur sudo, exécutez simplement
sudo adduser username sudo adduser username sudo
Passez ensuite au nouvel utilisateur.
su - username
Étape 1 :Configurer le serveur de base de données PostgreSQL
Connectez-vous à votre serveur via SSH, puis exécutez la commande suivante pour installer PostgreSQL à partir du référentiel de logiciels Ubuntu par défaut.
sudo apt install postgresql
Le serveur de base de données PostgreSQL démarrera automatiquement et écoutera sur 127.0.0.1:5432
, comme on peut le voir avec la commande suivante. (Si votre serveur Ubuntu n'a pas le netstat
commande, vous pouvez exécuter sudo apt install net-tools
commande pour l'installer.)
sudo netstat -lnpt | grep postgres
Si vous ne voyez aucune sortie de la commande ci-dessus, c'est probablement parce que le serveur PostgreSQL n'est pas en cours d'exécution. Vous pouvez démarrer le serveur PostgreSQL en lançant la commande suivante.
sudo systemctl start postgresql
Le postgres
utilisateur sera créé sur le système d'exploitation au cours du processus d'installation. C'est le super utilisateur du serveur de base de données PostgreSQL. Par défaut, cet utilisateur n'a pas de mot de passe et il n'est pas nécessaire d'en définir un car vous pouvez utiliser sudo
pour passer au postgres
utilisateur et connectez-vous à la console PostgreSQL.
sudo -u postgres psql
Créez une base de données pour Discourse.
CREATE DATABASE discourse;
Créez un utilisateur de base de données.
CREATE USER discourse_user;
Définissez un mot de passe pour cet utilisateur.
ALTER USER discourse_user WITH ENCRYPTED PASSWORD 'your_preferred_password';
Définissez cet utilisateur comme propriétaire de la base de données de discours.
ALTER DATABASE discourse OWNER TO discourse_user;
Connectez-vous à la base de données de discours.
\c discourse;
Créer le hstore
et pg_trgm
extension.
CREATE EXTENSION hstore; CREATE EXTENSION pg_trgm;
Déconnectez-vous de la console PostgreSQL.
\q
Étape 2 :Installez Ruby sur Ubuntu 18.04
Discourse nécessite Ruby 2.7 ou supérieur. Cependant, le référentiel Ubuntu 18.04 est fourni avec Ruby 2.5.1. La dernière version de Ruby est la 3.0.1. Cependant, je ne recommande pas d'utiliser la dernière version, car elle pourrait ne pas être compatible avec Discourse. Pour une meilleure compatibilité, je recommande d'installer Ruby 2.7 à partir d'un PPA.
sudo apt install software-properties-common sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt install ruby2.7
Pour vérifier votre numéro de version Ruby, exécutez
ruby -v
Sortie :
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu]
Étape 3 :Téléchargez et configurez Discourse
Installez l'outil git.
sudo apt install git
En supposant que vous êtes dans votre répertoire personnel, exécutez la commande suivante pour cloner le référentiel de code Discourse à partir de Github.
git clone https://github.com/discourse/discourse.git
Créez le répertoire /var/www/, s'il n'est pas déjà créé.
sudo mkdir /var/www/
Déplacez le répertoire de discours vers /var/www/
.
sudo mv discourse/ /var/www/
Changez de répertoire et utilisez la dernière version stable de Discourse. Vous pouvez aller sur la page des versions de Github pour voir la dernière version stable. J'utilise maintenant la v2.5.0.
cd /var/www/discourse/ git checkout v2.5.0
Install bundler :le gestionnaire de dépendances Ruby.
sudo /usr/bin/gem install bundler
Installez les packages suivants pour compiler le code source.
sudo apt-get install gcc build-essential ruby2.7-dev libxslt-dev libxml2-dev zlib1g-dev libpq-dev imagemagick
Installez ensuite les dépendances de Discourse. Ce processus peut utiliser beaucoup de RAM.
RAILS_ENV=production /usr/local/bin/bundle config set path '/var/www/discourse/vendor/bundle/' RAILS_ENV=production /usr/local/bin/bundle install
Copiez le fichier de configuration par défaut dans un nouveau fichier.
cp config/discourse_defaults.conf config/discourse.conf
Modifiez le nouveau fichier.
nano config/discourse.conf
Configurez la connexion à la base de données.
# 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
Modifiez le nom de domaine utilisé avec votre forum Discourse.
# hostname running the forum hostname = "community.example.com"
Enregistrez et fermez le fichier.
Étape 4 :Obtenir une clé de licence MaxMind gratuite
Discourse est livré avec un outil d'analyse Web intégré. Si vous souhaitez connaître les informations géographiques de vos visiteurs, vous avez besoin d'une clé de licence MaxMind.
Créez un compte chez MaxMind. Maxmind vous enverra un e-mail. Cliquez sur le lien dans l'e-mail pour définir un mot de passe, puis connectez-vous à votre compte MaxMind. Ensuite, sélectionnez My License Key
sur la barre de gauche.
Cliquez sur Générer une nouvelle clé de licence bouton.
Donnez un nom à votre clé de licence. Choisissez ensuite No
, car nous n'avons pas besoin d'utiliser le geoipupdate
programme. Cliquez ensuite sur Confirm
bouton.
Une fois la clé de licence créée, copiez la clé de licence. Ouvrez le fichier de configuration de Discourse.
nano config/discourse.conf
Trouvez la ligne suivante et ajoutez votre clé de licence ici.
maxmind_license_key=
Enregistrez et fermez le fichier.
Étape 5 :Lancer le discours
Installez les packages requis.
sudo apt install redis-server optipng pngquant jhead jpegoptim gifsicle nodejs npm sudo npm install -g svgo
Modifiez le fichier de configuration de l'environnement de production.
nano /var/www/discourse/config/environments/production.rb
Ajoutez le code suivant comme cinquième ligne.
require 'uglifier'
Trouvez ensuite la ligne suivante.
config.assets.js_compressor = :uglifier
Remplacez-le par :
config.assets.js_compressor = Uglifier.new(:harmony => true)
Enregistrez et fermez le fichier. Exécutez ensuite la commande suivante pour initialiser la base de données. Si vous voyez des erreurs au cours de cette étape, exécutez simplement la commande à nouveau.
RAILS_ENV=production /usr/local/bin/bundle exec rake db:migrate
Ensuite, nous allons compiler des actifs statiques tels que JavaScript, mais avant cela, nous devons éditer un fichier.
nano /var/www/discourse/lib/tasks/assets.rake
Nous devons trouver les lignes qui contiennent brotli
et commentez-les pour désactiver la compression Brotili, car les fichiers JavaScript seront compressés avec Gzip. Si la compression Gzip et Brotili sont toutes deux activées, il y aura des erreurs gênantes lors de la compilation des actifs. Trouvez la ligne suivante (ligne 281) et commentez-la.
brotli(path, max_compress)
Enregistrez et fermez le fichier. Ensuite, exécutez la commande suivante pour compiler les actifs. Ce processus peut utiliser beaucoup de RAM comme 1 Go.
RAILS_ENV=production /usr/local/bin/bundle exec rake assets:precompile
Ensuite, modifiez le puma.rb fichier
nano /var/www/discourse/config/puma.rb
Trouvez la ligne suivante.
APP_ROOT = '/home/discourse/discourse'
Modifiez le chemin de l'application en
APP_ROOT = '/var/www/discourse'
Enregistrez et fermez le fichier. Créez ensuite les sockets et le répertoire d'ID de processus.
mkdir /var/www/discourse/tmp/sockets/ /var/www/discourse/tmp/pids/
Commencer le discours.
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Exemple de sortie :
[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 écoute sur le socket Unix :/var/www/discourse/tmp/sockets/puma.sock .
Étape 6 :Configurer le proxy inverse Nginx
Installez le serveur Web Nginx à partir du référentiel de logiciels Ubuntu 18.04 par défaut.
sudo apt install nginx
Copiez l'exemple de fichier de configuration de l'hôte virtuel Nginx.
sudo cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
Modifiez le nouveau fichier.
sudo nano /etc/nginx/conf.d/discourse.conf
Trouvez les lignes suivantes et commentez-les car nous allons utiliser Puma.
upstream discourse { server unix:/var/www/discourse/tmp/sockets/nginx.http.sock; server unix:/var/www/discourse/tmp/sockets/nginx.https.sock; }
Recherchez les lignes suivantes et décommentez-les.
# upstream discourse { # server unix:/var/www/discourse/tmp/sockets/puma.sock; # }
Trouvez la ligne suivante.
server_name enter.your.web.hostname.here;
Modifiez le nom du serveur. N'oubliez pas d'ajouter un enregistrement DNS A pour le nom de domaine.
server_name community.example.com;
Nginx par défaut ne prend pas en charge la compression Brotli, alors commentez la ligne suivante.
brotli_static on;
Enregistrez et fermez le fichier. Créez le répertoire de cache.
sudo mkdir -p /var/nginx/cache/
Testez ensuite la configuration de Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl reload nginx
Vous devriez maintenant pouvoir voir le forum Discourse sur http://community.example.com
.
Étape 7 :Activer HTTPS
Pour chiffrer le trafic HTTP, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur le serveur Ubuntu 18.04.
sudo apt install certbot python3-certbot-nginx
Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d community.example.com
Où
--nginx
:Utilisez le plug-in nginx.--agree-tos
:acceptez les conditions d'utilisation.--redirect
:Forcer HTTPS par redirection 301.--hsts
: ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.--staple-ocsp
: Active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.
Le certificat devrait maintenant être obtenu et installé automatiquement.
Et vous pouvez accéder au forum Discourse via HTTPS (https://community.example.com
).
Si Firefox affiche un triangle jaune dans la barre d'adresse du navigateur, c'est parce que certaines images sont toujours servies sur le protocole HTTP. Pour résoudre ce problème, vous pouvez modifier le fichier de configuration Discourse Nginx.
sudo nano /etc/nginx/conf.d/discourse.conf
Ajoutez la ligne suivante dans le bloc du serveur SSL pour mettre à niveau les requêtes non sécurisées.
add_header Content-Security-Policy upgrade-insecure-requests;
Enregistrez et fermez le fichier. Et rechargez Nginx.
sudo nginx -t sudo systemctl reload nginx
Étape 8 :Créer un compte administrateur
Allez dans le répertoire de discours (/var/www/discourse/ ) et exécutez la commande suivante pour créer un compte administrateur.
RAILS_ENV=production /usr/local/bin/bundle exec rake admin:create
Il vous sera demandé d'entrer une adresse e-mail et un mot de passe pour le compte administrateur.
Après cela, redémarrez Discourse.
RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid restart
Actualisez maintenant la page Web de Discourse et vous pourrez vous connecter.
Si vous voyez l'erreur 502 bad gateway, cela signifie que la commande de redémarrage n'a pas réussi, vous devez démarrer Discourse avec :
RAILS_ENV=production bundle exec puma -C /var/www/discourse/config/puma.rb
Une fois connecté, vous pouvez démarrer l'assistant de configuration. (https://community.example.com/wizard) et suivez les instructions pour terminer l'installation. Si vous utilisez Cloudflare CDN, vous devez accéder aux paramètres -> sécurité -> src de la politique de sécurité du contenu et ajoutez cette URL :https://community.example.com/cdn-cgi/
Étape 9 :Configurer le service de traitement en arrière-plan :Sidekiq
Sidekiq est un planificateur de tâches open source. De nombreuses tâches, comme l'envoi d'e-mails, sont exécutées de manière asynchrone par sidekiq. Modifiez le sidekiq.yml
fichier.
nano /var/www/discourse/config/sidekiq.yml
Ajoutez les lignes suivantes à la fin du fichier. Cette configuration convient à un forum Discourse avec une activité utilisateur et une RAM faibles. Si les activités des utilisateurs sont nombreuses, envisagez de doubler la simultanéité et le nombre de files d'attente.
production: :concurrency: 2 :queues: - [critical, 4] - [default, 2] - [low] - [ultra_low]
Enregistrez et fermez le fichier. Créez ensuite un service Systemd pour sidekiq.
sudo nano /etc/systemd/system/discourse-sidekiq.service
Ajoutez les lignes suivantes dans le fichier. Remplacer nom d'utilisateur avec votre vrai nom d'utilisateur.
[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
Enregistrez et fermez le fichier. Ensuite, démarrez et activez ce service.
sudo systemctl start discourse-sidekiq sudo systemctl enable discourse-sidekiq
Vérifiez l'état. Assurez-vous qu'il est en cours d'exécution.
sudo systemctl status discourse-sidekiq
Le tableau de bord Sidekiq est disponible sur https://community.example.com/sidekiq
.
Étape 10 :Créer un service Systemd pour Discourse
Tout d'abord, arrêtez le processus de Discourse en cours avec
cd /var/www/discourse/ RAILS_ENV=production /usr/local/bin/bundle exec pumactl -P /var/www/discourse/tmp/pids/puma.pid stop
Modifiez ensuite le puma.rb
fichier.
nano /var/www/discourse/config/puma.rb
Commentez les deux lignes suivantes (Ajoutez le #
symbole au début de chaque ligne) car Systemd gérera l'ID de processus et la démonisation.
pidfile "#{APP_ROOT}/tmp/pids/puma.pid" daemonize true
Ensuite, créez un service Systemd pour Discourse.
sudo nano /etc/systemd/system/discourse.service
Ajoutez les lignes suivantes dans le fichier. Remplacer nom d'utilisateur avec votre vrai nom d'utilisateur.
[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
Enregistrez et fermez le fichier. Ensuite, démarrez et activez ce service.
sudo systemctl start discourse sudo systemctl enable discourse
Vérifiez l'état. Assurez-vous qu'il est en cours d'exécution.
sudo systemctl status discourse
Étape 11 :Configurer SMTP
Discourse doit envoyer des e-mails afin que les visiteurs puissent créer un compte sur votre forum et recevoir des notifications. Pour modifier les paramètres SMTP, ouvrez le discourse.conf
fichier.
nano /var/www/discourse/config/discourse.conf
Vous pouvez trouver les lignes suivantes pour configurer le serveur SMTP. Normalement, vous voudriez utiliser 587 comme port 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
Vous pouvez également ajouter le De : adresse dans ce fichier comme ci-dessous.
# From: address notification_email = [email protected]
Pour savoir comment configurer votre propre serveur de messagerie, veuillez consulter le didacticiel suivant. Remarque que je recommande fortement d'exécuter le serveur de messagerie iRedMail sur un nouveau système d'exploitation propre. L'installation d'iRedMail sur un système d'exploitation doté d'autres applications Web peut échouer et probablement casser les applications existantes.
- Comment configurer facilement un serveur de messagerie complet sur Ubuntu 18.04 avec iRedMail
Si vous préférez utiliser un service de relais SMTP tiers, alors je vous recommande Sendinblue, qui vous permet d'envoyer gratuitement 9000 e-mails par mois.
Après avoir enregistré les paramètres SMTP, redémarrez le service Discourse.
sudo systemctl restart discourse discourse-sidekiq
Ensuite, vous pouvez tester l'envoi d'e-mails dans votre tableau de bord d'administration Discourse.
Vous pouvez vous rendre sur mail-tester.com, qui vous donnera une adresse e-mail unique. Envoyez un e-mail de test depuis votre Discourse à cette adresse e-mail pour connaître votre score d'expéditeur.
Impossible d'envoyer un e-mail
Si votre instance Discourse n'envoie pas d'e-mails et que vous voyez le message suivant sur la page Web Discourse,
All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent.
vous devez aller dans Paramètres -> Courriel (pas les e-mails), définissez désactiver les e-mails à non . Enregistrez le paramètre et redémarrez Discourse.
sudo systemctl restart discourse discourse-sidekiq
Si votre Discourse ne peut toujours pas envoyer d'e-mails, vérifiez s'il peut envoyer un ping au serveur de messagerie. Accédez également à https://community.example.com/sidekiq/retries
, il vous montrera les e-mails ayant échoué et pourquoi l'envoi des e-mails a échoué.
Parfois, le discourse-sidekiq.service
peut échouer et empêcher l'envoi des e-mails, vous pouvez donc vérifier si ce service est en cours d'exécution
sudo systemctl status discourse-sidekiq
Optimiser l'utilisation de la RAM
La configuration puma par défaut fait que Discourse utilise beaucoup de RAM. Par défaut, mon Discourse utilise 4 workers, 8 threads minimaux, 32 threads maximaux. Si votre RAM n'est pas suffisante, le serveur redis sera arrêté. Pour réduire l'utilisation de la RAM, vous pouvez diminuer le nombre de nœuds de calcul et de threads dans puma.rb
fichier.
nano /var/www/discourse/config/puma.rb
Trouvez les deux lignes suivantes.
workers "#{num_workers}" threads 8, 32
Vous pouvez modifier les valeurs comme ci-dessous, ce qui indique à puma d'utiliser 2 travailleurs, 4 threads minimaux et 16 threads maximaux. Ce paramètre convient aux serveurs avec seulement 1 Go de RAM.
workers 2 threads 4, 16
Enregistrez et fermez le fichier. Redémarrez ensuite le service Discourse.
sudo systemctl restart discourse
Discours de mise à niveau
Vous pouvez vous abonner au flux RSS des versions de Discourse pour rester informé de la dernière version. Avant de mettre à niveau Discourse, je vous recommande fortement d'effectuer une sauvegarde manuelle de la base de données dans le tableau de bord d'administration de Discourse et de la télécharger sur votre disque dur.
Remarque :La mise à niveau du navigateur en un clic (https://community.yourdomain.com/admin/upgrade) ne fonctionne pas si vous avez installé Discourse sans Docker. Vous devez suivre les instructions ci-dessous.
Pour mettre à niveau Discourse, arrêtez d'abord le service.
sudo systemctl stop discourse
Allez dans le répertoire d'installation de Discourse.
cd /var/www/discourse/
Obtenez de nouvelles balises à partir du référentiel Github.
git fetch --tags
Avant de vérifier la dernière version stable, je vous recommande de sauvegarder le fichier de configuration dans votre répertoire personnel.
cp config/puma.rb ~ cp config/environments/production.rb ~ cp config/sidekiq.yml ~ cp config/discourse.conf ~
Supprimez ensuite le fichier Gemfile.lock.
rm Gemfile.lock
Et découvrez la dernière version stable. Par exemple,
git checkout v2.3.4
Si vous voyez le message d'erreur suivant.
Please commit your changes or stash them before you switch branches. Aborting
Exécutez ensuite la commande suivante
git stash
Ensuite, exécutez à nouveau la commande git checkout.
Installez les dépendances pour la nouvelle version de Discourse. Ce processus peut utiliser beaucoup de RAM.
RAILS_ENV=production /usr/local/bin/bundle install --path vendor/bundle/
Modifiez le fichier assets.rake.
nano /var/www/discourse/lib/tasks/assets.rake
Trouvez la ligne suivante (ligne 273) et commentez-la.
brotli(path, max_compress)
Enregistrez et fermez le fichier. Ensuite, exécutez les commandes suivantes pour vous préparer à la production.
RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake assets:precompile
Ensuite, vous pouvez vérifier si le nouveau puma.rb
Le fichier de configuration a ajouté quelques nouvelles lignes, par rapport au fichier d'origine. S'il n'y a rien de nouveau, vous pouvez simplement remplacer le fichier par l'original.
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
Enfin, démarrez Discourse.
sudo systemctl start discourse
Vous pouvez maintenant vérifier la version de Discourse à partir du tableau de bord d'administration.
Personnalisation du thème du discours
Si vous n'aimez pas le thème blanc par défaut, vous pouvez le personnaliser via le tableau de bord d'administration -> Personnaliser -> Thèmes . Il y a 3 thèmes installés par défaut.
- Nuances de bleu
- Sombre
- Lumière
J'ai choisi le thème Shades of Blue. Vous pouvez également ajouter un CSS personnalisé en cliquant sur Modifier CSS/HTML bouton. Vous trouverez ci-dessous le CSS que j'ai ajouté pour mon discours.
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; }
Comment déplacer Discourse vers un nouveau serveur
Tout d'abord, faites une sauvegarde de votre forum Discourse d'origine et téléchargez le fichier tar.gz. (Ne modifiez pas le nom du fichier.)
Ensuite, vous devez installer Discourse sur le nouveau serveur en suivant les étapes 1 à 11. Ensuite, téléchargez le fichier de sauvegarde sur /var/www/discourse/public/backups/default/
répertoire sur le nouveau serveur.
Allez dans le répertoire /var/www/discourse/ sur le nouveau serveur.
cd /var/www/discourse/
Installer les dépendances.
sudo gem install thor
Accédez au tableau de bord d'administration de Discourse -> Paramètres -> Sauvegardes , cochez autoriser la restauration .
Ensuite, exécutez la commande suivante pour restaurer le site à partir de la sauvegarde.
RAILS_ENV=production script/discourse restore file-name-of-the-backup-file.tar.gz
Une fois la restauration terminée, redémarrez Discourse.
sudo systemctl restart discourse discourse-sidekiq
Actualisez la page Web de Discourse et vous retrouverez votre forum Discourse d'origine en ligne.
Si vous voyez l'erreur suivante,
You must use Bundler 2 or greater with this lockfile.
Ensuite, vous devez mettre à jour le bundler.
gem install bundler
Mettre à jour gemfile.lock
RAILS_ENV=production bundle update --bundler
Vous pouvez également supprimer le fichier Gemfile.lock afin de ne pas voir cette erreur.
Comment désinstaller Discourse
Supprimer le serveur de base de données PostgreSQL.
sudo apt remove postgresql
Supprimez le répertoire Webroot.
sudo rm /var/www/discourse/ -rf
Supprimez le fichier de configuration Nginx.
sudo rm /etc/nginx/conf.d/discourse.conf
Supprimer le certificat SSL Let's Encrypt.
sudo certbot revoke --cert-name community.example.com
Supprimer le service SystemD.
sudo rm /etc/systemd/system/discourse.service sudo rm /etc/systemd/system/discourse-sidekiq.service
Surveillance de l'état de santé de votre instance de discours
Vous devriez garder un œil sur le journal des erreurs de discours, que vous pouvez trouver via le tableau de bord d'administration -> Journaux -> Journaux d'erreurs . Si votre serveur reçoit beaucoup de trafic, vous aurez peut-être besoin de plus de RAM pour exécuter Discourse. Le journal suivant montre que mon serveur manquait de mémoire.
Comment gérer les utilisateurs difficiles dans le discours
S'il y a un utilisateur particulier sur votre forum Discourse qui vous complique la vie, vous pouvez verrouiller cet utilisateur sur le 0: new user
niveau de confiance, puis allez dans Discourse Admin
-> Settings
-> Posting
et nécessitent des messages/sujets créés par 0: new user
être approuvées avant de pouvoir être publiées.
Conclusion
J'espère que cet article vous a aidé à installer le logiciel de forum Discourse sur Ubuntu 18.04 sans utiliser Docker. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de conseils et astuces. Prenez soin de vous 🙂