GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Installer le logiciel Discourse Forum sur Ubuntu 18.04 sans Docker

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

  • --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 🙂


Ubuntu
  1. Comment installer Discourse sur Ubuntu 20.04 LTS

  2. Installer le serveur 18.04 sans connexion réseau ?

  3. Comment installer Ubuntu Server sans connexion réseau ?

  4. Comment installer Discourse sur Ubuntu 20.04

  5. Comment installer un serveur PostgreSQL sur Ubuntu 18.04

Installez Mailtrain v1.24 sur le serveur Ubuntu 20.04 sans Docker

Comment installer VNC Server sur Ubuntu 14.04+

Installez SonarQube sur le serveur Ubuntu 20.04 LTS

Comment installer le logiciel Flarum Forum sur Ubuntu 22.04 | 20.04

Comment installer le forum phpBB sur Ubuntu 22.04 | 20.04 Serveur

Comment installer Discourse Forum sur Ubuntu 14.04