J’ai installé avec succès le site 1 et l’ai fait fonctionner pendant plus d’un mois. Aujourd’hui, j’ai suivi les instructions ici https://meta.discourse.org/t/running-other-websites-on-the-same-machine-as-discourse/17247. J’ai modifié la première configuration de Discourse, installé un nginx externe sur la machine hôte et reconstruit le premier Discourse.
Configuration app.yml du site n°1
root@docker-s-1vcpu-2gb-sgp1-01:~# cat /var/bbs-antivte-discourse/containers/app.yml
## Ceci est le modèle de conteneur Docker Discourse tout-en-un, autonome
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ *TRÈS* PRUDENT EN ÉDITANT !
## LES FICHIERS YAML SONT SUPER SUPER SENSIBLES AUX ERREURS D'ESPACE OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.socketed.template.yml" # <-- Ajouté
## Quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## consultez https://meta.discourse.org/t/17247 pour plus de détails
#expose:
# - "80:80" # http
# - "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Définissez db_shared_buffers à un maximum de 25 % de la mémoire totale.
## Sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez remplacer
db_shared_buffers: "256MB"
## Peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
#db_work_mem: "40MB"
## Quelle révision Git ce conteneur doit-il utiliser ? (par défaut : tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
## Sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez remplacer
UNICORN_WORKERS: 4
## TODO : Le nom de domaine auquel cette instance Discourse répondra
## Requis. Discourse ne fonctionnera pas avec une adresse IP brute.
DISCOURSE_HOSTNAME: bbs.antivte.com
## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
## nom d'hôte (option -h) que spécifié ci-dessus (par défaut "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO : Liste d'e-mails délimités par des virgules qui seront administrateurs et développeurs
## lors de l'inscription initiale, exemple 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'techempower@163.com'
## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
## L'adresse SMTP, le nom d'utilisateur et le mot de passe sont requis
## ATTENTION : le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@mail.antivte.com
DISCOURSE_SMTP_PASSWORD: "67c9458eb7a6ff11b4db70f097b1b5c3-f7910792"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optionnel, par défaut true)
## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
LETSENCRYPT_ACCOUNT_EMAIL: techempower@163.com
## L'adresse CDN http ou https pour cette instance Discourse (configurée pour extraire)
## voir https://meta.discourse.org/t/14857 pour plus de détails
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
- volume:
host: /var/bbs-antivte-discourse/shared/standalone
guest: /shared
- volume:
host: /var/bbs-antivte-discourse/shared/standalone/log/var-log
guest: /var/log
## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour plus de détails
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-knowledge-explorer
- git clone https://github.com/discourse/discourse-spoiler-alert.git
- git clone https://github.com/procourse/procourse-static-pages
## Toutes les commandes personnalisées à exécuter après la construction
run:
- exec: echo "Début des commandes personnalisées"
## Si vous souhaitez définir l'adresse e-mail 'From' pour votre première inscription, décommentez et modifiez :
## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit être exécutée qu'une seule fois.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fin des commandes personnalisées"
Ensuite, pour l’installation du deuxième site, j’ai cloné le code source dans un autre répertoire, copié le premier app.yml modifié et simplement édité le nom de domaine et le nom du répertoire de clonage dans celui-ci pour mon deuxième site, puis j’ai exécuté https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
./discourse-setup
J’ai été confus par les indications suivantes et j’ai deux configurations nginx différentes pour les 2 sites
Configuration nginx du site n°1
root@docker-s-1vcpu-2gb-sgp1-01:~# cat /var/website/conf/conf.d/ytb.antivte.com
server {
listen 80; listen [::]:80;
server_name ytb.antivte.com; # <-- modifiez ceci
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2; listen [::]:443 ssl http2;
server_name ytb.antivte.com; # <-- modifiez ceci
# ssl on;
ssl_certificate /var/ytb-antivte-discourse/shared/standalone/ssl/ssl.crt;
ssl_certificate_key /var/ytb-antivte-discourse/shared/standalone/ssl/ssl.key;
ssl_dhparam /var/ytb-antivte-discourse/shared/standalone/ssl/dhparams.pem;
ssl_session_tickets off;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
http2_idle_timeout 5m; # augmenté de 3m par défaut
location / {
proxy_pass http://unix:/var/ytb-antivte-discourse/shared/standalone/nginx.http.sock:;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
}
Configuration nginx du site n°2
server {
listen 80; listen [::]:80;
server_name bbs.antivte.com; # <-- modifiez ceci
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2; listen [::]:443 ssl http2;
server_name bbs.antivte.com; # <-- modifiez ceci
# ssl on;
ssl_certificate /var/bbs-antivte-discourse/shared/standalone/ssl/bbs.antivte.com.cer;
ssl_certificate_key /var/bbs-antivte-discourse/shared/standalone/ssl/bbs.antivte.com.key;
ssl_dhparam /var/bbs-antivte-discourse/shared/standalone/ssl/dhparams.pem;
ssl_session_tickets off;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
http2_idle_timeout 5m; # augmenté de 3m par défaut
location / {
proxy_pass http://unix:/var/bbs-antivte-discourse/shared/standalone/nginx.http.sock:;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
}
et
/var/ytb-antivte-discourse/discourse-setup
Le port 80 semble déjà être utilisé.
Cela vous montrera quelle commande utilise le port 80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 4255 root 6u IPv4 22842780 0t0 TCP *:http (LISTEN)
nginx 4255 root 7u IPv6 22842781 0t0 TCP *:http (LISTEN)
nginx 4256 nobody 6u IPv4 22842780 0t0 TCP *:http (LISTEN)
nginx 4256 nobody 7u IPv6 22842781 0t0 TCP *:http (LISTEN)
Si vous essayez d'exécuter Discourse simultanément avec un autre serveur web
comme Apache ou nginx, vous devrez vous lier à un port différent
Voir https://meta.discourse.org/t/17247
Si vous reconfigurez un Discourse déjà configuré, utilisez
./launcher stop app
pour arrêter Discourse avant de le reconfigurer et réessayez.