Migrare un forum phpBB3 a Discourse

Dopo aver utilizzato con successo l’importatore nel mio primo ambiente di test, ora volevo importare di nuovo (o da zero) il vecchio forum in un nuovo ambiente che dovrebbe diventare quello reale, ma ora è fallito.

Ho ricevuto un errore:
/var/www/discourse/plugins/discourse-migratepassword/plugin.rb:71:in `crypt’: codifiche dei caratteri incompatibili: ASCII-8BIT e UTF-8 (Encoding::CompatibilityError).

Apparentemente questo si verifica con il terzo utente, che ha un umlaut.

Ora, cosa ho cambiato rispetto alla volta in cui ha funzionato?

  • nuova VM con Ubuntu 18.04.3 LTS (quella precedente era la 16)
  • Discourse aggiornato (versione più recente)
  • impostato “nomi utente Unicode” con [äöüßÄÖÜẞ] dato che molti dei miei utenti hanno umlaut nei nomi utente (il primo import è stato fatto senza questa impostazione e gli utenti sono stati importati perdendo i punti sugli umlaut)
  • migratepassword preinstallato (l’ultima volta l’ho installato in un secondo momento).

Qualcuno ha un’idea su cosa stia fallendo? Vorrei davvero migrare i miei utenti senza dover cambiare i nomi utente.

1 Mi Piace

Sembra che stia attivando un bug nel plugin migratepassword. Nei miei test funziona, quindi non sono sicuro di cosa stia succedendo qui. Ti suggerisco di disabilitare il plugin durante la migrazione. In ogni caso, non è necessario durante la migrazione.

6 Mi Piace

Grazie - ha funzionato :slight_smile:

2 Mi Piace

Ciao, sto cercando di eseguire una prova nel mio ambiente locale per verificare se posso migrare il mio forum su Discourse.

Ho usato questa guida all’installazione per installare Discourse.

Ho un esportazione del database phpBB3 sul mio computer locale.
Ho installato Discourse in locale sul mio Mac con Docker per Desktop.

Ora sto cercando di seguire le istruzioni in questo argomento, ma mi blocco perché uso Docker, ma non Ubuntu, e si tratta di un ambiente locale. Quindi non so come procedere :frowning:
nel mio directory di Discourse non c’è alcun file app.yml.

Potete aiutarmi a capire quali passaggi compiere?

Grazie mille in anticipo!

1 Mi Piace

Mi dispiace, non ho alcuna esperienza con Mac, Docker e la tua configurazione. Potresti riuscire a seguire approssimativamente la guida Importazione tramite ambiente di sviluppo… ma non posso offrirti alcun supporto a riguardo.

1 Mi Piace

Credo che tu farebbe meglio a seguire la “guida ufficiale all’installazione” (anche sul tuo Mac locale) ed eseguire l’installer in questo modo.

4 Mi Piace

Evviva, ho completato con successo l’importazione!
Alla fine ho deciso di prendere un droplet DO e procedere da lì. E ha funzionato!

Domanda su Sidekiq: @gerhard, dici:

Cosa fa esattamente? Devo aspettare che sia finito prima di poter fare qualsiasi cosa nel forum?

2 Mi Piace

A meno che tu non abbia bisogno di eseguire un backup per il ripristino su un server diverso, sei a posto. Puoi procedere a utilizzarlo e Sidekiq elaborerà i dati.

4 Mi Piace

Ciao, attualmente sto cercando di importare i dati di un forum phpBB 3.1 su Discourse. Tuttavia, l’importazione dei sondaggi non funziona per me:

Se il proprietario del thread (creatore del sondaggio) è stato eliminato, ricevo il seguente messaggio di errore durante l’importazione:

Errore nella creazione del post 70978. Ignorato. [“Non sei autorizzato a creare sondaggi.”]

Per quanto riguarda le seguenti opzioni del sondaggio
<12
12

12
ricevo il seguente messaggio di errore:
Errore nella creazione del post 345655. Ignorato. [“Il sondaggio deve avere opzioni diverse.”]

Quindi, come posso risolvere il problema?

Grazie in anticipo

Cordiali saluti

1 Mi Piace

Hai attivato i sondaggi?

1 Mi Piace

Sì, alcuni sondaggi sono stati importati, ma non tutti.

1 Mi Piace

Dovrai creare quell’utente o modificare lo script per, ad esempio, utilizzare “system” se il proprietario non esiste.

1 Mi Piace

I thread normali di utenti eliminati vengono importati correttamente. Come posso modificare lo script di importazione in modo che anche i sondaggi di utenti eliminati vengano importati?

1 Mi Piace

Sto attualmente provando una migrazione da phpBB per la prima volta e mi chiedo se, trasferendo un backup di Discourse in un secondo momento, questo conterrà tutte le informazioni metadate dall’importazione (come l’ID originale del post da phpBB). Il motivo è che sto pensando di eseguire l’importazione su una macchina più potente per accelerare il processo e poi far funzionare il forum su un VPS, ma potrei eseguire un’altra importazione incrementale dopo aver spostato tutto sul VPS. Mi chiedo se sia sufficiente fare un backup e reimportazione di Discourse o se sia meglio eseguire un dump del database in qualche altro modo (quale?).

Un’altra domanda: le riscritture degli URL nell’importatore sono sicure in caso di successivo cambio di dominio? Avevo intenzione di utilizzare un dominio o un sottodominio diverso per la migrazione iniziale e poi passare al dominio reale in un secondo momento.

3 Mi Piace

Sì, il backup contiene l’ID del post originale in un campo personalizzato. Eseguire l’importazione finale sul cloud dovrebbe non presentare problemi.

La modifica del nome host richiede un po’ di lavoro. Change the domain name or rename your Discourse

4 Mi Piace

Ho appena completato la prima migrazione di prova e, prima di tutto, voglio ringraziare @gerhard e tutti gli altri che hanno contribuito. È incredibile quanto bene abbia funzionato al primo tentativo. Mi sono volute circa 24 ore per importare quasi 900.000 post con utenti, messaggi privati e altro, e i risultati sembrano ottimi per un primo tentativo. È semplicemente fantastico avere un importatore così eccellente per portare a termine questo lavoro.

Ci sono però alcune cose, e la più importante che sto cercando di individuare è che alcuni link interni sembrano essere andati completamente storti, mentre altri hanno funzionato molto bene. Per essere più precisi, molti di più sembrano essere corretti rispetto a quelli errati. Sto cercando di capire un pattern per capire quali non hanno funzionato. Qualcuno può offrire qualche spunto su come funziona la modifica dei link interni? Probabilmente ci sono delle insidie dove potrebbe fallire?

Nota a margine: Subito dopo l’importazione ho visto che tutte le avatar mancavano nelle citazioni, ma poi ho scoperto che sembrano essere generate e sembra che dopo 20 minuti tutto sia presente ora. Fascinante :wink:

Per quanto riguarda il tempo di importazione: Questo è stato eseguito su un VPS Hetzner a 4 core con core CPU esclusivi - penso che proverò a ripeterlo su un server bare metal solo per l’importazione per migliorare i tempi di migrazione. Devo prima vedere come funziona lo spostamento del backup di Discourse.

5 Mi Piace

Il codice per sostituire i collegamenti interni si trova qui: discourse/script/import_scripts/phpbb3/support/text_processor.rb at 43ddf60cdf27a865b7b1aa0d54a144a3e46c74cf · discourse/discourse · GitHub

La riscrittura dei collegamenti interni fallirà quando un post contiene un link a un altro post che non è ancora stato importato. I post vengono importati nell’ordine della loro creazione originale.

6 Mi Piace

È un suggerimento interessante. Non capisco perché questo sarebbe stato il caso in alcuni degli esempi che ho controllato, ma seguirò sicuramente questa strada. La cosa strana è che nel mio caso collega i post sbagliati. In caso di errore, mi aspetterei che non facesse nulla o lasciasse il link invariato. Purtroppo la mia conoscenza di Ruby è quasi nulla, ma controllerò comunque il codice.

Esiste un modo per aggirare questo problema? Penso che potrebbe accadere spesso con post di tipo tutorial che vengono modificati e aggiornati ripetutamente, aggiungendo link. C’è qualche possibilità di evitarlo, a parte modificare manualmente quei post?

Grazie per l’aiuto! :+1:

1 Mi Piace

Hmm, ho appena notato che i gruppi di utenti non sono stati importati e ho anche visto che non sono elencati nel post iniziale qui, ma sono effettivamente tra le prime cose che vengono elencate nell’importatore. Mi chiedo se ci sia un modo per importarli includendo l’associazione degli utenti a quei gruppi o se ciò semplicemente non funzioni ancora. Nel secondo caso, probabilmente dovremmo trovare una soluzione alternativa.

1 Mi Piace

Sì, è strano. Questo suggerisce che alcuni dei tuoi link locali sono in un formato diverso da quello previsto dallo script di importazione, il che fa sì che l’espressione regolare individui il post sbagliato da cercare. Se qualcuno ha modificato un post per puntare a un post che non esisteva al momento in cui il post è stato originariamente scritto (hai confermato che è questo il caso?), potrebbe aver utilizzato un altro metodo per creare il link, confondendo lo script.

È sorprendente quanto ogni importazione (specialmente per un forum maturo) sia unica. È piuttosto raro che un’importazione si limiti a eseguire lo script (ma, suppongo, le persone siano più propense ad assumermi se la loro importazione presenta delle complicazioni).

1 Mi Piace