Migrare un forum SMF2 a Discourse

Impressionante! Anche se il mio vecchio SMF non utilizza URL amichevoli?

Cosa intendi per non proprio?

Alle tue domande:

  1. Sì, ma…
  2. Non proprio significa che i collegamenti all’ID del argomento (ad esempio index.php?topic=123) verranno creati come collegamenti permanenti e funzioneranno, ma gli ancoraggi a post specifici come index.php?topic=123.msg789#msg789 non verranno più preservati/funzioneranno. Verranno troncati all’ID dell’argomento.

Di seguito un esempio di collegamenti permanenti dal mio forum, importati da SMF2

image

2 Mi Piace

almeno l’argomento rimarrà un riferimento per i post specifici. è più che sufficiente. eccellente, grazie mille per la tua risposta e anche per aver preparato queste istruzioni.

1 Mi Piace

Scusa, ho dimenticato di chiedere: se il mio SMF è configurato come categoria → board → child board, devo prima rimuovere la categoria “board” in modo che rimangano solo due livelli (forum → subforum) per convertire correttamente a Discourse?

Ciao @marcozambi,

Sono curioso di sapere come sei riuscito a farlo funzionare. Ho usato l’importatore il 19 ottobre per migrare un grande forum da SMF a Discourse e tutti i link nel vecchio formato sono praticamente persi (cioè ottengo un 404 quando uso i vecchi URL).

Ad esempio, il vecchio link:

identificava il seguente argomento:

Potresti condividere il tuo “trucco magico”? :grin:

Nessuna magia speciale.
Quando ho effettuato l’importazione da SMF nel settembre 2018, lo script importatore SMF2 ha fatto tutto il lavoro.
Dopo aver importato ogni post, lo script creava il permalink corrispondente.
In ogni caso, ho apportato delle piccole personalizzazioni agli script, che ho dettagliato nel primo post di questo argomento.

1 Mi Piace

Esatto. È necessario “appiattire” l’albero esistente dei sottoproprietà SMF a 2 livelli.

1 Mi Piace

Sì, e ti ringrazio per il tuo ottimo post; l’ho seguito attentamente e sono riuscito a migrare con successo un forum con 6 milioni di post.

Ma forse i permalink sono stati creati comunque: come puoi verificarne la presenza? Se sono nel database, potrebbe trattarsi semplicemente di un problema di nginx che devo risolvere.

Puoi consultare l’elenco dei tuoi Permalink andando su Admin → Personalizza → Permalink.
Da lì puoi anche crearne di nuovi, se necessario.

1 Mi Piace

:+1:

Era vuoto, come sospettavo. Significa che quella parte dello script non ha funzionato nel nostro caso. :expressionless: Non importa, posso comunque costruirne alcuni manualmente (ho appena provato e ci sono riuscito per l’esempio che ho pubblicato sopra).

Questo passaggio dovrebbe riferirsi ai dettagli del vecchio database SMF2, oppure deve essere esattamente ‘user’, ‘pass’, ‘db’?

Questo passaggio dovrebbe riferirsi ai dettagli del vecchio database SMF2, oppure deve essere esattamente come specificato; ‘db’, ‘user’ e ‘pass’?

Questo è l’unico passaggio in cui dovrei utilizzare i dettagli originali del vecchio database SMF2?

Queste sono le credenziali per connettersi all’istanza MySQL dockerizzata in cui è stato importato il dump del database del forum SMF.
Per essere chiari, il MySQL dockerizzato è in esecuzione sullo stesso server su cui gira Discourse ed è necessario solo per contenere il dump che dovresti aver creato del database SMF.

Questo è il comando che dovresti eseguire sul server che ospita il database originale SMF2 per ottenere un dump, che dovrai poi importare nell’istanza MySQL dockerizzata menzionata sopra.

1 Mi Piace

Grazie per la risposta.

Sì, ho già importato il database originale di SMF2 nell’istanza Dockerizzata di MySQL sul server Discourse.

Con le informazioni di MySQL in Dockerizzate in Settings.php, ottengo questo errore quando eseguo lo script di importazione:

Caricamento dei gruppi esistenti…

Caricamento degli utenti esistenti…

Caricamento delle categorie esistenti…

Caricamento dei post esistenti…

Caricamento degli argomenti esistenti…

Creazione dei gruppi

Traceback (più recente chiamata per prima):

11: da script/import_scripts/smf2.rb:701:in `’

10: da script/import_scripts/smf2.rb:28:in `run’

9: da /var/www/discourse/script/import_scripts/base.rb:47:in `perform’

8: da script/import_scripts/smf2.rb:66:in `execute’

7: da script/import_scripts/smf2.rb:77:in `import_groups’

6: da script/import_scripts/smf2.rb:281:in `query’

5: da script/import_scripts/smf2.rb:287:in `__query’

4: da /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.0.4/lib/patches/db/mysql2.rb:22:in `query’

3: da /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query’

2: da /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt’

1: da /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query’

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query’: La tabella ‘db.smf_membergroups’ non esiste ( Mysql2::Error )

Hai qualche idea?

Ho seguito questa guida passo dopo passo letteralmente diverse volte, ma continuo a bloccarmi in questo punto.

Grazie.

Controlla nel tuo database MySQL se esiste la tabella smf_membergroups. Se non esiste, devi:

  1. Modificare lo script per gestire un nome di tabella diverso, oppure
  2. Saltare l’importazione dei gruppi se non ne esistono.
2 Mi Piace

L’estensione del file alla fine non importa. Se il file contiene istruzioni SQL valide, verrà caricato comunque.

1 Mi Piace

Inoltre, è comune che il database abbia un prefisso diverso da smf_. Molti importatori hanno questa opzione, ma non ho controllato questo in particolare.

2 Mi Piace

L’utilizzo delle stesse credenziali dal database smf2 per l’istanza dockerizzata di MySQL ha risolto il mio problema. Grazie ragazzi!

1 Mi Piace

@Paracelsus Sembro essere nella stessa situazione; i permalink sono vuoti. :frowning:

Il mio smf2 è in esecuzione sul dominio principale, mentre Discourse è in esecuzione su un sottodominio del dominio principale di smf2. Questo fa differenza?

Sì… i permalink sono una seccatura, ma ho imparato a conviverci. Ho cercato su Google ogni pagina web in cui era stato pubblicato un link al nostro forum (con il vecchio formato SMF), sono andato su quelle pagine, ho preso una stringa di testo o trascritto un paragrafo, l’ho cercato nel forum Discourse e ho inserito un permalink al suo posto. Se hai ancora attivo il tuo forum SMF, ti consiglio di farlo ora, perché a volte questi link che le persone inseriscono nelle loro pagine web non hanno alcuna citazione o stringa di testo associata, solo l’URL, e puoi comunque trovare l’argomento corretto.

Nel nostro caso, abbiamo usato la nostra prima versione come forumscp.com, tenendo forumscp.com su SMF come “forum di produzione” per un po’ di tempo (per poter testare le cose su Discourse e abituarci). Ho testato il processo di aggiornamenti incrementali diverse volte, poi alcune settimane prima per assicurarmi che la transizione funzionasse come previsto, e nel giorno della transizione abbiamo disattivato il nostro vecchio forum, eseguito l’ultimo aggiornamento incrementale del database da SMF a Discourse e poi cambiato il dominio seguendo le istruzioni che si trovano da qualche parte qui. Abbiamo anche avuto bisogno dell’aiuto del nostro hosting per verificare le configurazioni di nginx e non ricordo esattamente, ma c’era qualcosa relativo al DNS che dovevamo modificare, ma abbiamo semplicemente seguito le istruzioni del nostro hosting e tutto è andato bene.

Puoi cercare un altro importatore che gestisca i permalink e copiare il codice. vBulletin e phpBB sono probabilmente buoni esempi.