Devi spostare qualcosa 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 degli Argomenti
- uno o più argomenti e le loro risposte
- gli utenti che hanno postato nell’argomento
Esportazione/Importazione delle 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 abilitata la ‘richiesta di iscrizione’, il processo andrà in crash. Disattivala prima dell’esportazione
- tutti gli argomenti e i post nella categoria e nelle sottocategorie
- tutti gli utenti che hanno postato e li assegna ai gruppi
Inizio: Identifica gli ID
Per prima cosa, identifica l’ID (o gli ID) dell’=Esportazione= che desideri esportare. Lo trovi 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 ti trovi nel mezzo di un argomento - prendi il primo numero) -
https://meta.discourse.org/c/howto/faq/4
ID della Categoria o dell’Argomento
Più argomenti
Puoi selezionare più argomenti aggiungendo gli ID separati da uno spazio; questo funziona nel campo sopra (non credo che 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 assomigliare a questo:
Avvio dell’esportazione di =Export=…
Da dove provengono 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 di destinazione. Questo richiede alcuni passaggi.
Copialo all’esterno
Esci dal container se non l’hai già fatto
exit
Dovresti ora avere un prompt come 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 nell’altra istanza
Questo va oltre la portata di questa guida, ma questo potrebbe aiutarti a raggiungerlo:
Copialo nel container nell’istanza di destinazione
Accedi alla tua istanza di destinazione come root tramite SSH e vai alla directory di Discourse:
cd /var/discourse
Usa di nuovo docker per copiare il file nell’altro container
docker cp =FileName= app:/var/www/discourse
Importa i Contenuti
Entra nel container nell’istanza di destinazione:
./launcher enter app
Esegui lo script di importazione
discourse import_=Export= =FileName=
Fatto!
Potrebbe essere necessario sistemare alcuni dettagli, ma dovrebbe essere tutto completato.
Suggerimenti Avanzati
Gem Ruby Mancante
Durante un’importazione complessa di una categoria, la mia istanza mancava del ‘Listen’ Ruby.
Questo è stato risolto facendo quanto segue: (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 interrotto la console rails, rendendo necessario un rebuild successivo
./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 Contribute > Bug e richiedi miglioramenti nella categoria Contribute > Feature.
Argomenti Correlati
Ultimo revisione da @SaraDev il 2022-07-13T00:00:00Z