Üldine migratsiooni protsess

Uudiste migreerimine järgneva protsessi alusel on mõeldud veebilehe omanikele, kelledel on RMIT-iga keskne haldus- ja majutusleping.

Migratsiooni võib testkeskkonda teha mistahes ajahetkel, millega saavutatakse kindlus protsessi toimimise osas ning kontrollitakse andmekvaliteeti. Migratsioon LIVE keskkonda on soovitatav teha ca nädal enne LIVE mineku kuupäeva.

Peale uudiste migreerimist LIVE keskkonda, tuleb uudiseid sisestada nii vanale, kui ka uuele veebile paralleelselt ja käsitsi. 

Migratsiooni puhul on tegemist protsessiga, millesse kaasuvad järgmised osapooled:

  • 0 etapp Sisutoimetaja - teostab ettevalmistused (etalonuudise loomine), migratsiooni järgne andmete kontroll
  • I etapp Asutuse tehniline meeskond - teostab uudiste ekspordi vanalt VP saidilt
  • II etapp RMIT meeskond - teostab uudiste impordi uuele VP saidile.
  • Etalonuudise loomine testkeskkonda
  • Uudiste eksport vanal saidilt
  • Uudiste import testkeskkonda
  • Andmete kontroll
  • Protsess kodub LIVE keskkonnaga

Migratsiooni etapid

Enne kui saame uudiste migratsiooniga alustada tuleb kindel olla et järgmised sammud on tehtud.

  1. Uude keskkonda tuleb luua etalonuudis, (näide: https://demo.test.rmit.ee/uudised/etalon-uudis ), pealkiri: Etalonuudis, keel: Estonian, juhtlõik: Uudis. Lisada uudisele ka kaanepilt.
  2. Etalonuudisele lisada ka etalonautor, millele lisada ka pilt ( https://demo.test.rmit.ee/media/157/download ). Autori pilt on lisatud kasutajale alloleva menüü "Seotud dokumendid" alla.
  3. Eelmises punktis loodud kasutaja andmed vormistada nii nagu näidatud järgnevas peatükis "I etapp - vanade uudiste eksportimine" ja edastada need RMITile. Selleks teha Jira pilet.
  4. RMIT paneb need andmed eksportskripti ja tarnib selle tellijale (näiteks läbi repo https://gitlab.rmv/dmitri.andrejev/drupal_migration ). Samuti peab RMIT kliendile ütlema nn ekspordinime.
  5. Klient käivitab oma vanas keskkonnas eksportskripti ekspordinimega ja edastab selle tulemused RMITile. Detailid järgnevas peatükis "I etapp - vanade uudiste eksportimine".

Esmalt on vaja vanale veebilehe Drupal 7 scripts kausta paigutada export.php fail. Enne `export.php` käivitamist tuleb lisada massiivi $sources uus võti uue ekspordi nimega (edaspidi EKSPORDINIMI). Võtme väärtuseks anda omakorda massiiv järgmiste võtmetega (näidis):

"authorName" => "Valitsuse kommunikatsioonibüroo",
"authorOccupaction" => "-",
"authorDivision" => "-",
"authorPhone" => "693 5710",
"authorEmail" => "press@riik.ee",
"sourceName" => "valitsus.ee"

Samuti on võimalik lisada ekspordile lisaloogikat, lisades skripti funktsiooni nimega postHook_EKSPORDINIMI.
See funktsioon võtab sisendiks üldloogika poolt valmistehtud uudise ja kirjutab vajadusel selle oma loogikaga üle. Näiteks vaata funktsiooni  postHook_emta().

Peale seda, kui export.php failis on vajalikud asendused tehtud siis tuleb see käivitada käsurealt olles webroot kaustas:

php scripts/export.php EKSPORDINIMI

export.php skripti käivitamise tulemusel luuakse uus fail news.json ning kui skript on oma töö lõpetanud siis kuvatakse ekraanile ka kokkuvõtte. Antud kokkuvõte on vaja edastada RMITile, et oleks võimalik planeerida keskkonna failide hoidla mahtusid ja vajadusel neid suurendada.

news.json file created or updated
 - news count: 24187
 - images count: 3157
 - images total size: 5.7 GB
 - files count: 116
 - files total size: 37.99 MB

export.php skripti poolt loodud news.json fail peab kas olema kätte saadav vana veebilehe kaudu või tuleb see edastada samuti RMITi.

Enne II etapi töödega alustamist on KINDLASTI äärmiselt oluline, et oleks tehtud andmebaasist ja soovituslikult ka üleslaetud failidest varukoopia!!!

Enne vanade uudiste importimise alustamist on vaja veenduda, et serveris või üleslaetavate (veebi) failide PVC suurus oleks piisev, et importimise käigus salvestatavad pildid ja failid sinna ära mahuksid. Tähelepanu tuleb pöörata ka sellele, et impordi käigus salvestatakse pilte 3 erinevasse kausta, mis tähendab, et ekspordi käigus saadud võimalik failide maht tuleb korrutada kolmega.

NB! Vanade uudiste importimisel ei säili vanade uudiste ID'd vaid nende asemel tekivad uue süsteemi node ID'd. Mis oma korda tähendab seda, et põhimõtteliselt on võimalik sama importi korduvalt käivitada aga seda tehes imporditakse kõiki uudiseid topelt ehk, et impori skriptis sees ei ole kontrolle selle kohta, kas vastav uudis on juba süsteemi lisatud või mitte. Juhul, kui peaks tekkima vajadus importi korduvalt käivatada siis ALATI enne uue impordi käivitamist on vajalik teha andmebaasi taastamine.

NB! Juhul, kui samale lehele imporditakse mitmelt erinevalt vanalt veebilehelt uudiseid siis on soovituslik seda teha ühe veebi kaupa ja veenduda, et ühe veebi uudised on edukalt ja probleemideta sisse imporditud. See järel teha uus varundamine ning jätkata järgmise veebi uudiste importimisega. Nimetatud tegevusi teha seni, kuni kõik soovitud vanade veebide uudised on imporditud!

Vanade uudiste importimiseks on vajalik fail `import-news.php` paigutada `web/core/scripts` kausta. Enne käivitamist on vaja lisada massiivi $destinations uus võti uue impordi nimega (edaspidi IMPORDINIMI), võtme väärtuseks aga lisada järgnev massiiv (näidis):


// kohustuslikud väljad

"defaultLinkTitle" => "Link", // replacament if related link doesn't have title  
"tmpAuthorImageID" => 435, // Author image ID  (vportal: 45)
"tmpImageID" => 441, // Cover image ID, used when old news doesn't contain any images (vportal: 19)      
"tmpUserID" => 45, // User ID to related old news (vportal: 14)           

// mittekohustuslikud väljad

"newsJSONLocation" => "https://vv.valitsus.ee/news.json", // kus asub exporditud fail?
"replaceFileDomain" => false, // If  and true, news URLs * will be replaced as shown with keys *FileDomain
"oldFileDomain" => "localhost",
"newFileDomain" => "vv.valitsus.ee",
"urlReplacements" => array( // kuidas teha asendusi enne allalaadimist kaanepiltide ja failide URLides?
    "cover" => array("http://scripts/sites/default/files/","https://www.emta.ee/sites/default/files/styles/news_detail_cover_image/public/"),
    "file" => array("http://scripts/","https://www.emta.ee/")
),
"overrideData" => array( // kirjuta enne eksporti kindlad väljad uudiste JSONis üle
    "newsletter_category" => null
),
"translatedData" => [ // sama kui overrideData, ainult tõlgitud
  "body_summary" => ["et" => "Uudis","en" => "News","ru" => "Новости"]
],
"langMap" => ["eng" => "en"], // kui uudiste allika keelekoodid pole ISO 639-1, asenda need siin
"uriPrefix" => ["en" => "news/"], // kui võõrkeelsetel uudistel pole õiget prefiksit ( news/, novosti/, jne)
"urlSite" => "https://www.kul.ee" // kui olemas, püütakse seda lisada katkiste linkide ette ja laadida alla uudiste tekstis olevaid faile
"ownerNGroup" => "rmit.fisheye:apache", // allalaetavate failide ja kataloogide kasutsaja ja rühm, vaikimisi www-data:www-data
"bodyUrlPrefix" => "https://vana.rtk.ee" // kui olemas, lisatakse see URLi algus uudiste sisus olevate failide ette, et saada failide täielik URL
 

Enne, kui on võimalik eelnevaid andmed korrektseks muuta on soovituslik imporditavasse keskkonda luua üks avaldamata uudis põhjaks, mille pealt saab võtta vajalikud andmed näiteks uudise autori osas.

$tmpAuthorImageID väärtuse leidmine

Uudise autori pildi ID leidmiseks ava loodud uudis muutmiseks ning uudise autori pildi peal teha parem klikk ja valida "Inspect". Lähtekoodist otsida <input> tagi, mille name väärtuseks on field_news_authors[0][subform][field_news_author_item][0][subform][field_author_picture][0][fids] ning võtta selle väärtus, milleks peab olema number

Või sisesta konsooli:

jQuery('*[data-drupal-selector="edit-field-news-authors-0-subform-field-news-author-item-0-subform-field-author-picture-0-fids"]').val();

$tmpImageID väärtuse leidmine

Uudise pildi ID leidmiseks ava loodud uudis muutmiseks ning uudise autori pildi peal teha parem klikk ja valida "Inspect". Lähtekoodist otsida <input> tagi, mille name väärtuseks on field_news_media[target_id] ning võtta selle väärtuses oleva koolonile järgnev number (näiteks: media:43 puhul on korrektseks väärtuseks 43)

Või sisesta konsooli:

jQuery('*[data-drupal-selector="edit-field-news-media-target-id"]').val();

$tmpUserID väärtuse leidmine

Uudise kasutaja ID väärtuse leidmiseks, kellega imporditav uudis seotakse on ehk mõistlik luua eraldi kasutaja VP lehele ja siis avada VP halduses kasutajad nimekiri ja sealt nimekirjas see kasutaja üles otsida ning vajutada "Muuda" nuppu. See järel on võimalik brauseri aadressi rea pealt teada saada vastava kasutaja ID

Skripti käivitamine

Kõigepealt allalaadida vanade uudiste failid (ainult siis kui klient seda soovib). Selleks minna `web/core` kausta ja käivitada käsurealt käsk:

php scripts/import-news.php IMPORDINIMI pullfiles | bash

Vanade uudiste importimise käivitamiseks pead asuma `web/core` kaustas ja käivitama käsurealt käsu:

php scripts/import-news.php IMPORDINIMI importnews

Skript väljastab oma töötamise ajal pidevalt informatsiooni selle kohta, millist uudist ta parajasti impordib. 

NB! Kui import tehtud tuleb puhastada Solr cache "Clear all indexed data" → "Rebuild tracking information" →"Index now"

Viimati uuendatud 28.10.2021

open graph imagesearch block image