Nous avons le site this. Nous devons configurer un forum Discourse dans un sous-dossier Docker sur Ubuntu. Nous souhaitons servir Discourse sur TalkWithStranger Ask - Ask and chat random strangers and meet new people in online free chat rooms. sans utiliser de CDN.
J’ai essayé de le configurer en suivant ce tutoriel, mais je rencontre les problèmes suivants :
- Les avatars disparaissent après 2 ou 3 reconstructions.
- Les images téléchargées dans les sujets renvoient une erreur 404 après quelques reconstructions.
Vous devez corriger les bugs sur ce domaine de test afin que je puisse installer et corriger ces mêmes bugs sur mon site en direct. 95 % du travail est terminé ; il ne vous reste plus qu’à corriger certains bugs.
Mon app.yml
## Prise en charge des sous-dossiers avec Docker https://meta.discourse.org/t/subfolder-support-with-docker/30507
## Modèle de configuration Docker discourse-terraform
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire pour que
## les modifications prennent effet sur votre instance Discourse en direct :
##
## /var/discourse/launcher rebuild app
##
## il s'agit du modèle de conteneur Docker Discourse tout-en-un, autonome
# Vous pouvez ajouter une limitation du débit en commentant le modèle ratelimited.
# Par défaut, il autorise 12 req/s par IP et 100 req/min par IP
# Cela est configurable en modifiant les paramètres dans ce fichier
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/sshd.template.yml"
## quels ports TCP/IP ce conteneur doit-il exposer ?
expose:
- "1357:80" # changez ce port vers le port sur lequel vous souhaitez exécuter Discourse # forward du port hôte 80 vers le port conteneur 80 (http)
#- "2222:22" # forward du port hôte 2222 vers le port conteneur 22 (ssh)
params:
db_default_text_search_config: "pg_catalog.english"
## Définir db_shared_buffers à 1/3 de la mémoire que vous souhaitez allouer à postgres
## sur une installation de 1 Go, réglez à 128 Mo ; sur une instance de 4 Go, vous pouvez augmenter à 1 Go
db_shared_buffers: "512MB"
#
## Quelle révision Git ce conteneur doit-il utiliser ? (par défaut : tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
## TODO : Combien de requêtes web simultanées sont prises en charge ?
## Avec 2 Go, nous recommandons 3-4 workers, avec 1 Go seulement 2
UNICORN_WORKERS: 3
##
## TODO : Liste d'e-mails séparé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: "ahmeds.works@gmail.com" # changez ces e-mails par ceux des administrateurs du site
##
## TODO : Le nom de domaine auquel cette instance Discourse répondra
DISCOURSE_RELATIVE_URL_ROOT: /ask
DISCOURSE_HOSTNAME: "privitevps.ga" # changez ce domaine par le domaine de votre site
##
## TODO : Le serveur de messagerie que cette instance Discourse utilisera
# changez les paramètres SMTP par vos propres paramètres SMTP
DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: example@example.com
DISCOURSE_SMTP_PASSWORD: example_password
##
## L'adresse CDN pour cette instance Discourse (configurée pour récupérer)
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## Ces conteneurs sont sans état, toutes les données sont stockées dans /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Le plugin docker manager vous permet de mettre à jour Discourse en un clic
## http://discourse.example.com/admin/docker
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- mkdir -p plugins
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-voting.git
## Rappelez-vous, il s'agit de syntaxe YAML - vous ne pouvez avoir qu'un seul bloc avec un nom
run:
- exec:
cd: $home
cmd:
- rm -fr public/assets
- sudo -E -u discourse bundle exec rake assets:precompile
- mkdir -p public/ask
- cd public/ask && ln -s ../uploads && ln -s ../backups
- rm public/uploads
- rm public/backups
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: proxy_pass http://discourse;
to: |
rewrite ^/(.*)$ /ask/$1 break;
proxy_pass http://discourse;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: etag off;
to: |
etag off;
location /ask {
rewrite ^/ask/?(.*)$ /$1;
}
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_fastly_client_ip
global: true
- exec: echo "Fin des commandes personnalisées"
- exec: awk -F\# '{print $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Clés SSH autorisées pour ce conteneur :"; } NF\u003e=2 {print $NF;}'
Configuration nginx
location /ask {
proxy_pass http://localhost:1357;
proxy_read_timeout 90;
proxy_redirect http://localhost:1357 https://privitevps.ga;
}
Journal d’erreurs Discourse
/var/www/discourse/app/models/report.rb:267:in `rescue in find'
/var/www/discourse/app/models/report.rb:234:in `find'
/var/www/discourse/app/controllers/admin/reports_controller.rb:42:in `block (2 levels) in bulk'
actionpack-6.0.3.5/lib/action_controller/metal/strong_parameters.rb:345:in `block in each_pair'
actionpack-6.0.3.5/lib/action_controller/metal/strong_parameters.rb:344:in `each_pair'
actionpack-6.0.3.5/lib/action_controller/metal/strong_parameters.rb:344:in `each_pair'
/var/www/discourse/app/controllers/admin/reports_controller.rb:31:in `block in bulk'
/var/www/discourse/lib/hijack.rb:56:in `instance_eval'
/var/www/discourse/lib/hijack.rb:56:in `block in hijack'
/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work'
rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in `with_connection'
/var/www/discourse/lib/scheduler/defer.rb:89:in `do_work'
/var/www/discourse/lib/scheduler/defer.rb:79:in `block (2 levels) in start_thread'
Journal PostgreSQL
2021-04-01 18:33:04.209 UTC [51] LOG: démarrage de PostgreSQL 13.2 (Debian 13.2-1.pgdg100+1) sur x86_64-pc-linux-gnu, compilé par gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2021-04-01 18:33:04.210 UTC [51] LOG: écoute sur l'adresse IPv4 "0.0.0.0", port 5432
2021-04-01 18:33:04.211 UTC [51] LOG: écoute sur l'adresse IPv6 "::", port 5432
2021-04-01 18:33:04.211 UTC [51] LOG: écoute sur le socket Unix "/var/run/postgresql/.s.PGSQL.5432"
2021-04-01 18:33:04.223 UTC [73] LOG: le système de base de données a été arrêté à 2021-04-01 18:32:19 UTC
2021-04-01 18:33:04.230 UTC [51] LOG: le système de base de données est prêt à accepter les connexions
2021-04-01 18:44:16.543 UTC [1155] discourse@discourse LOG: le nom d'utilisateur fourni (discourse) et le nom d'utilisateur authentifié (root) ne correspondent pas
2021-04-01 18:44:16.544 UTC [1155] discourse@discourse FATAL: échec de l'authentification peer pour l'utilisateur "discourse"
2021-04-01 18:44:16.544 UTC [1155] discourse@discourse DETAIL: La connexion correspond à la ligne 94 de pg_hba.conf : "local all all peer"
2021-04-02 03:33:33.893 UTC [36640] discourse@discourse LOG: durée : 141,998 ms instruction : COPY public.stylesheet_cache (id, target, digest, content, created_at, updated_at, theme_id, source_map) TO stdout;
2021-04-02 17:49:50.676 UTC [92100] discourse@discourse LOG: durée : 156,461 ms instruction : DO $$DECLARE row record;
BEGIN
-- créer le schéma <destination> s'il n'existe pas déjà
-- NOTE : DROP & CREATE SCHEMA est plus simple, mais nous ne voulons pas supprimer le schéma public
-- sinon les extensions (comme hstore & pg_trgm) ne fonctionneront plus...
CREATE SCHEMA IF NOT EXISTS backup;
-- déplacer toutes les tables <source> vers le schéma <destination>
FOR row IN SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'discourse'
LOOP
EXECUTE 'DROP TABLE IF EXISTS backup.' || quote_ident(row.tablename) || ' CASCADE;';
EXECUTE 'ALTER TABLE public.' || quote_ident(row.tablename) || ' SET SCHEMA backup;';
END LOOP;
-- déplacer toutes les vues <source> vers le schéma <destination>
FOR row IN SELECT viewname FROM pg_views WHERE schemaname = 'public' AND viewowner = 'discourse'
LOOP
EXECUTE 'DROP VIEW IF EXISTS backup.' || quote_ident(row.viewname) || ' CASCADE;';
EXECUTE 'ALTER VIEW public.' || quote_ident(row.viewname) || ' SET SCHEMA backup;';
END LOOP;
END$$;
2021-04-02 17:49:52.092 UTC [92128] discourse@discourse LOG: durée : 114,918 ms instruction : COPY public.scheduler_stats (id, name, hostname, pid, duration_ms, live_slots_start, live_slots_finish, started_at, success, error) FROM stdin;
2021-04-02 17:49:53.398 UTC [92128] discourse@discourse LOG: durée : 1266,208 ms instruction : COPY public.stylesheet_cache (id, target, digest, content, created_at, updated_at, theme_id, source_map) FROM stdin;
2021-04-02 17:51:24.451 UTC [51] LOG: demande d'arrêt intelligent reçue
2021-04-02 17:51:26.828 UTC [51] LOG: l'ouvrier d'arrière-plan "logical replication launcher" (PID 79) s'est terminé avec le code de sortie 1
2021-04-02 17:51:26.836 UTC [74] LOG: arrêt en cours
2021-04-02 17:51:26.948 UTC [51] LOG: le système de base de données est arrêté
2021-04-02 18:00:56.877 UTC [52] LOG: démarrage de PostgreSQL 13.2 (Debian 13.2-1.pgdg100+1) sur x86_64-pc-linux-gnu, compilé par gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2021-04-02 18:00:56.879 UTC [52] LOG: écoute sur l'adresse IPv4 "0.0.0.0", port 5432
2021-04-02 18:00:56.879 UTC [52] LOG: écoute sur l'adresse IPv6 "::", port 5432
2021-04-02 18:00:56.880 UTC [52] LOG: écoute sur le socket Unix "/var/run/postgresql/.s.PGSQL.5432"
2021-04-02 18:00:56.893 UTC [73] LOG: le système de base de données a été arrêté à 2021-04-02 18:00:11 UTC
2021-04-02 18:00:56.909 UTC [52] LOG: le système de base de données est prêt à accepter les connexions
2021-04-02 18:03:23.275 UTC [343] discourse@discourse LOG: durée : 172,267 ms instruction : UPDATE "stylesheet_cache"
SET "content" = REPLACE("content", '/uploads', '/../uploads'), "digest" = REPLACE("digest", '/uploads', '/../uploads'), "source_map" = REPLACE("source_map", '/uploads', '/../uploads'), "target" = REPLACE("target", '/uploads', '/../uploads')
WHERE "content" IS NOT NULL AND "content" LIKE '%/uploads%' OR "digest" IS NOT NULL AND "digest" LIKE '%/uploads%' OR "source_map" IS NOT NULL AND "source_map" LIKE '%/uploads%' OR "target" IS NOT NULL AND "target" LIKE '%/uploads%'
2021-04-02 18:03:55.952 UTC [52] LOG: demande d'arrêt intelligent reçue
2021-04-02 18:03:57.185 UTC [52] LOG: l'ouvrier d'arrière-plan "logical replication launcher" (PID 79) s'est terminé avec le code de sortie 1
2021-04-02 18:03:57.189 UTC [74] LOG: arrêt en cours
2021-04-02 18:03:57.308 UTC [52] LOG: le système de base de données est arrêté
2021-04-02 18:04:00.354 UTC [47] LOG: démarrage de PostgreSQL 13.2 (Debian 13.2-1.pgdg100+1) sur x86_64-pc-linux-gnu, compilé par gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2021-04-02 18:04:00.355 UTC [47] LOG: écoute sur l'adresse IPv4 "0.0.0.0", port 5432
2021-04-02 18:04:00.356 UTC [47] LOG: écoute sur l'adresse IPv6 "::", port 5432
2021-04-02 18:04:00.359 UTC [47] LOG: écoute sur le socket Unix "/var/run/postgresql/.s.PGSQL.5432"
2021-04-02 18:04:00.375 UTC [66] LOG: le système de base de données a été arrêté à 2021-04-02 18:03:57 UTC
2021-04-02 18:04:00.380 UTC [47] LOG: le système de base de données est prêt à accepter les connexions
2021-04-02 18:13:27.137 UTC [47] LOG: demande d'arrêt intelligent reçue
2021-04-02 18:13:27.980 UTC [47] LOG: l'ouvrier d'arrière-plan "logical replication launcher" (PID 72) s'est terminé avec le code de sortie 1
2021-04-02 18:13:27.982 UTC [67] LOG: arrêt en cours
2021-04-02 18:13:28.009 UTC [47] LOG: le système de base de données est arrêté
2021-04-02 18:13:31.497 UTC [45] LOG: démarrage de PostgreSQL 13.2 (Debian 13.2-1.pgdg100+1) sur x86_64-pc-linux-gnu, compilé par gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2021-04-02 18:13:31.499 UTC [45] LOG: écoute sur l'adresse IPv4 "0.0.0.0", port 5432
2021-04-02 18:13:31.499 UTC [45] LOG: écoute sur l'adresse IPv6 "::", port 5432
2021-04-02 18:13:31.500 UTC [45] LOG: écoute sur le socket Unix "/var/run/postgresql/.s.PGSQL.5432"
2021-04-02 18:13:31.515 UTC [67] LOG: le système de base de données a été arrêté à 2021-04-02 18:13:27 UTC
2021-04-02 18:13:31.520 UTC [45] LOG: le système de base de données est prêt à accepter les connexions
Journal d’erreurs Nginx
2021/04/02 18:01:06 [error] 69#69: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: _, request: "GET /ask/ HTTP/1.0", upstream: "http://127.0.0.1:3000/ask/", host: "localhost:1357"
2021/04/02 18:13:38 [error] 64#64: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: _, request: "POST /ask/message-bus/c734a550b6e54923aff3e0c6fdf1b014/poll HTTP/1.0", upstream: "http://127.0.0.1:3000/ask/message-bus/c734a550b6e54923aff3e0c6fdf1b014/poll", host: "localhost:1357", referrer: "https://privitevps.ga/ask/latest"
Quand avez-vous besoin que ce soit fait ?
Dès que possible
Quel est votre budget, en $ USD, que vous pouvez offrir pour cette tâche ?
Ouvert aux suggestions. Veuillez me contacter par MP avec votre approche et votre estimation.