Migratsioon

Tegelikult tegin oma saidi uuendamiseks 3 katset, kõik ca aastase vahega.

Esimene katse 2019. a andis tulemuse, mille ma kustutasin, ropendasin natuke omaette ja jäin asjade paranemist ootama.

Teine katse 2020. a alguses läks paremini, ent endiselt ma ropendasin ja jätsin projekti aastaks seisma.

Kolmas katse 2021. a kevadel andis tulemuse, millega ma olin nõus edasi töötama... Sisuliselt kordasin 31.01.2020 tehtud tööd, ent natuke hoolsamalt, läbimõeldumalt ja nii edasi. Omaette jutt on muidugi see, et kui 2020. a otsustasin saiti uuendada, tähendas see praktikas vaid, et ma terve aasta ei pannud oma lehele uut materjali üles...

Üldinfo

Kasutan Zone'i serverit ja minu nimel on (ligi 20 a juba) domainid veskimees.ee ja veskimees.eu. Drupal9 läks failide arvult ligi 4x suuremaks kui D7, ja kuna Zone pedereerib inode'idega, kasutan ka Hostgatorit (kus tegelikult alustasin) ja kaalun Veebimajutusse ülekolimist, aga see selleks; antud kontekstis on oluline, et mul on katsesaitide arv Zone'is tänu sellele pedereerimisele piiratud. (Ehh: lugege väikest kirja!)

 Mul on tavaliselt kasutusel 3 saiti, peasait (veskimees.eu, veskimees.ee on sinna aliasega suunatud), d91.veskimees.eu ja d92.veskimees.eu. Töö käib enamasti nii, et sisu lisan peasaiti ja iga natukese aja tagant kirjutan d91 & d92 peasaidiga üle, või siis teen katseid d91-s ja kirjutan teised kaks õnnestunud tulemusega üle. d92 on enamasti lihtsalt varuks, et kui ma olen teinud mingi kala, mis kohe välja ei tule, või mingi lolli näpuka teen (olen näinud, kuidas kord admin vajaliku storage tühjendas, ajades cp korralduses source ja targeti segamini...). Ja muidugi tõmban pärast oluliste tööde lõpetamist oma arvutisse FTP-ga backupi failidest ja mysqldump'iga andmebaasist.

Alles on ka vana sait old.veskimees.eu

Üldiselt on (mitte ainult) Zone'i vebftp ja phpmyadmin mänguasjad, millele eriti loota ei saa (st see pole Zone'i viga, et need suuremate andmemahtude puhul kokku jooksevad).

Saitide ülekirjutamine käib nii:

1. FTP-ga source kataloog alla (oma arvutisse).
2. FTP-ga target kataloog tühjaks.
3. FTP-ga oma arvutist source kataloog targetisse.
4. Olen kaalunud oma arvutisse 3 vastava faili tegemist, kuid seni olen teinud käsitsi; nüüd võib kasutada vebftp-d: target -> web -> sites -> default on fail settings.php; selle faili all otsas on andmebaasi andmed. Olen seal teinud 3 komplekti, mille siis vastavalt vajadusele aktiveerin:

$databases['default']['default'] = array (
 'database' => 'd101945sd425034',
 'username' => 'd101945sa383169',
 'password' => '*',
 'prefix' => '',
 'host' => 'd101945.mysql.zonevs.eu',
 'port' => '3306',
 'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
 'driver' => 'mysql',
);
#$databases['default']['default'] = array (
#  'database' => 'd101945_d91',
#  'username' => 'd101945_d91',
#  'password' => '*',
#  'prefix' => '',
#  'host' => 'd101945.mysql.zonevs.eu',
#  'port' => '3306',
#  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
#  'driver' => 'mysql',
#);
# $databases['default']['default'] = array (
#  'database' => 'd101945_d92',
#  'username' => 'd101945_d92',
#  'password' => '*',
#  'prefix' => '',
#  'host' => 'd101945.mysql.zonevs.eu',
#  'port' => '3306',
#  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
#  'driver' => 'mysql',
#);

5. Terminalis (võib olla veebi juurikas, st seal, kus kõigi saitide kataloogid on) mysqldump -uUSERNAME -p DATABASE > backup.sql , näiteks mysqldump -ud101945sa383169 -p d101945sd425034 > vmbackup.sql (terminal küsib siis andmebaasiparooli, võtab vastu paste'iga)
6. Lihtsam on olnud käivitada phpmyadmin ja seal valida kõik tabelid ja siis need kustutada (drop) (kui teha seda terminalis).
7. Terminalis mysql -h host.mysql.zonevs.eu -uUSERNAME -p DATABASE < backup.sql, näiteks mysql -h d101945.mysql.zonevs.eu -u d101945_d92 -p d101945_d92 < vmbackup.sql

Jah, viisakas vast oleks selleks ajaks leht 'maintenance mode'i panna, aga ausalt öeldes ei ole vaevunud...

Veel oluline tähele panna

Kui vanasti tegid subdomaine nii, et lihtsalt tegidki ja skript tegi isegi kataloogi ära, siis nüüd (D9-ga) on sellega natuke ikaldus. Nimelt tasub alustada sellest, et teha ise alamkataloog ja selle alla 'web' ja subdomain tuleb suunata sinna. Ehk veebijuurikas, kus Zone'il on peadomain 'htdocs' ja kõik su subdomainid on samal tasemel (mul näiteks 'syndmustehorisont' ehk raamatusarja Sündmuste horisont veebileht), teed kataloogi 'd91' ja selle alla kataloogi 'web' ja siis alles teed subdomaini, mis sinna suunatud.

Järgmiseks tuleb teha andmebaas, sest saidi esimesel käivitamisel tuleb selle andmed anda. (Seda on ikkagi kõige lihtsam üle veebi.)

Saab teisiti, aga tegelikult on mugav ja kindel hallata D9-t 'composer'i kaudu, seega näiteks kataloogi 'd91' drupali saamiseks tuleb anda juurikas korraldus:

composer create-project drupal/recommended-project d91

Kui kõik on õige, õnnestub brauseris sait käivitada ja ühendada andmebaasiga. NB! Zone'i puhul  'host' => 'd101945.mysql.zonevs.eu'.

Veel tuleb millalgi faili settings.php (asukoht vaata ülal) kirjutada:

$settings['trusted_host_patterns'] = [
  '^veskimees\.eu$',
  '^.+\.veskimees\.eu$',
  '^veskimees\.ee$',
  '^.+\.veskimees\.ee$',
];

(Arusaadavalt minu näite puhul! Teised: uurige ise...)

Märkus:

Eelnevas ja kõiges järgnevas on arusaadavalt kustutatud paroolid. Kasutan tegelikult lihtsuse huvides kõikjal üht. Aga see on pikk ja keeruline. See on teine lugu, aga meid on aastakümneid õpetatud valesti -- et kasutage erimärke täis paroole, mida on võimatu meelde jätta (ja mis seetõttu on kollase kleepsuga arvutil...) Ja mõelge ise, kas pahad murravad kiiremini lahti F*#€%ing parooli või "Kingi mulle kirves, Vanemuine / sõgedikke palju saanud / sitasisu savist sortse / vaja neid valjult vähendada"...