Devi spostare alcune cose da un’istanza di Discourse a un’altra?
Esiste uno strumento da riga di comando per esportare un argomento, un insieme di argomenti o un’intera categoria, e un altro per importarli nell’altra estremità.
Esportazione/Importazione di Argomenti
- uno o più argomenti e le relative risposte
- gli utenti che hanno pubblicato nell’argomento
Esportazione/Importazione di Categorie
- la categoria e tutte le sue sottocategorie
- le sue impostazioni di sicurezza
- i gruppi personalizzati menzionati nelle impostazioni di sicurezza
se uno qualsiasi dei gruppi ha abilitate le “richieste di iscrizione”, si bloccherà. Disattiva questa opzione prima dell’esportazione
- tutti gli argomenti e i post nella categoria e nelle sottocategorie
- tutti gli utenti che hanno pubblicato, e li assegna ai gruppi
Inizio: Identificare gli ID
Innanzitutto, identifica l’ID (o gli ID) di =Export= che desideri esportare. Lo troverai alla fine dell’URL utilizzato per accedervi.
-
https://meta.discourse.org/t/how-to-contribute-to-discourse/53797 -
https://meta.discourse.org/t/how-to-contribute-to-discourse/53797/12
(in questo caso sei nel mezzo di un argomento - prendi il primo numero) -
https://meta.discourse.org/c/howto/faq/4
ID della Categoria o dell’Argomento
Argomenti Multipli
Puoi selezionare più di un argomento aggiungendo ID separati da uno spazio; questo funziona nel campo sopra (non credo funzioni per le categorie):
53797 200943 124096
Esegui lo Script di Esportazione
Lo strumento può essere eseguito come utente root all’interno del container:
cd /var/discourse
./launcher enter app
Esegui questo comando:
discourse export_=Export= =ID=
L’output dovrebbe essere simile a questo:
Avvio dell’esportazione di =Export=…
Dove stanno arrivando tutti i nuovi utenti?
Esportazione salvata in =Export=-export-2021-08-27-015437.jsonFatto
Sposta il File Esportato
Il file .json esportato deve essere spostato dall’interno del container dell’applicazione dove hai eseguito l’esportazione all’interno del container dell’istanza ricevente. Questo richiede alcuni passaggi.
Copialo all’“esterno”
Esci dal container se non l’hai già fatto
exit
Dovresti ora avere un prompt simile a questo:
root@yourserver:/var/discourse
Usa docker per copiare il file fuori dal container (non credo tu possa spostarlo)
docker cp app:/var/www/discourse/=FileName= .
Spostalo sull’altra istanza
Questo è al di fuori dello scopo di questa guida, ma questo potrebbe aiutarti a raggiungerlo:
Copialo nel container nell’istanza ricevente
Effettua l’accesso SSH alla tua istanza ricevente come root e vai alla directory Discourse:
cd /var/discourse
Usa docker ancora una volta per copiare il file nell’altro container
docker cp =FileName= app:/var/www/discourse
Importa il Contenuto
Entra nel container nell’istanza ricevente:
./launcher enter app
Esegui lo script di importazione
discourse import_=Export= =FileName=
Fatto!
Potrebbe essere necessario sistemare alcune cose, ma si spera che sia tutto fatto.
Suggerimenti Avanzati
Gem Ruby Mancante
Durante l’importazione di una categoria complessa, alla mia istanza mancava la Ruby ‘Listen’.
Questo è stato risolto facendo questo: (usando l’utente Discourse all’interno del container)
./launcher enter app
su discourse
bundle config --delete without
bundle config --delete with
bundle install
exit
exit
Questo ha rotto la console rails, rendendo necessaria una successiva ricostruzione
./launcher rebuild app
Multisito
In un ambiente multisito, usa la variabile d’ambiente RAILS_DB.
RAILS_DB=xxxmoves discourse export_=Export= =ID=
RAILS_DB=dancerehab discourse import_=Export= =FileName=
Segnala i bug nella categoria bug e richiedi miglioramenti nella categoria #feature.
Argomenti Correlati
Ultima Revisione da @SaraDev il 2022-07-13T00:00:00Z