Pridaj hodnotenie:

Migrácia webu cez SSH

Existuje veľa spôsobov, akými sa dá premigrovať webstránka, ale najrýchlejší z nich je migrácia webstránky cez SSH pomocou skriptu. Stačí správne vyplniť premenné a všetko ostatné vykoná skript.

V tomto návode si vysvetlíme celý postup migrácie webstránky cez SSH.

Skôr než začneme

Skôr než začneme potrebujete mať:

Na začiatok Vám môže byť nápomocný návod Základné príkazy SSH a práca s PuTTY.

Postup

  1. Skopírovanie skriptu do wordového dokumentu
  2. Dohľadanie a doplnenie potrebných údajov do skriptu
    1. Doplnenie údajov k pôvodnému FTP
    2. Cestu k priečinku pôvodného webu
    3. Údaje k pôvodnej databáze
    4. Absolútnu cestu k priečinku novej domény
  3. Spustenie skriptu
  4. Zmena url adresy a absolútnych ciest (pomocou wp search-replace ak ide o WordPress)
    1. Zmena url adresy (ak web nie je vo WordPresse)

1. Skopírovanie skriptu do wordu

Skopírujte si čistý skript, ktorý je na úplnom konci tohto návodu do wordu, kde ho budeme upravovať.

Vyberte si z dvoch možností podľa toho, či máte web postavený na WordPresse, alebo nie:

  • Čistý skript pre WordPress
  • Čistý skript pre web, ktorý nie je vo WordPresse

Vysvetlivky k skriptu

Skript priložený nižšie použijeme len pre vysvetlenie (všetko čo je napísané hrubým písmom sú len pomocné poznámky a nie sú súčasťou skriptu). Odporúčame skopírovať čistý skript, ktorý prikladáme na konci tohto návodu, aby sa nestalo, že zabudnete odstrániť komentáre, alebo iné popisy, ktoré by mohli narušiť správne fungovanie skriptu.

#!/bin/bash
PHPBIN='/usr/lib64/php7.4/bin/php'

HOST='old.ftp.host' #– pôvodný host FTP
USER='odl.ftp.user' #- pôvodné meno FTP
PASSWORD='old.ftp.password' #– pôvodné heslo FTP
REMOTE_DIR='/nazov_starej_domeny/web' #adresár, z ktorého sa bude migrovať
LOCAL_DIR='/var/www2/pXXXX/nazov_novej_domeny/web' #adresár kam sa bude migrovať

DB_OLD_SERVER='old.sql.server' #- host starej databázy (bez portu)
DB_OLD_SERVER_PORT=3306 #- port k starej databáze
DB_OLD_DATABASE='olddatabase' #- názov starej databázy
DB_OLD_USER='olduser'#- používateľ starej databázy
DB_OLD_PASS='oldpass' #- heslo k starej databáze

DB_SERVER='sql2.hostcreators.sk' #- host novej databázy (bez portu)
DB_SERVER_PORT=3307 #- port novej databázy
DB_DATABASE='dXXXX_db' #- názov novej databázy
DB_USER='uXXXX_user' #- používateľ novej databázy
DB_PASS='XXXXXXXX' #- heslo k novej databázy 

echo "Starting dump OLD database $DB_OLD_DATABASE to NEW database $DB_DATABASE"
mysqldump -h $DB_OLD_SERVER -P $DB_OLD_SERVER_PORT -u $DB_OLD_USER -p$DB_OLD_PASS --routines $DB_OLD_DATABASE > oldsqldump.sql #– iba ak prenášam aj databázu
mysql -h $DB_SERVER -P $DB_SERVER_PORT -u $DB_USER -p$DB_PASS $DB_DATABASE < oldsqldump.sql  #– iba ak prenášam aj databázu

echo "Starting download $REMOTE_DIR from $HOST to $LOCAL_DIR"
lftp -u "$USER","$PASSWORD" $HOST <<EOF

# the next 3 lines put you in ftpes mode. Uncomment if you are having trouble connecting.
set ftp:ssl-force true
set ftp:ssl-protect-data true
set ssl:verify-certificate no
set ftp:list-options -a
# transfer starts now...
mirror --delete --verbose --parallel=10 $REMOTE_DIR $LOCAL_DIR;
exit
EOF

#(Nasledujúce4 riadky odkomentovať, len ak ide o wordpress)
#$PHPBIN /usr/local/bin/wp config set DB_HOST $DB_SERVER:$DB_SERVER_PORT --path=$LOCAL_DIR
#$PHPBIN /usr/local/bin/wp config set DB_NAME $DB_DATABASE --path=$LOCAL_DIR
#$PHPBIN /usr/local/bin/wp config set DB_USER $DB_USER --path=$LOCAL_DIR
#$PHPBIN /usr/local/bin/wp config set DB_PASSWORD $DB_PASS --path=$LOCAL_DIR

chmod -R g+rw $LOCAL_DIR
find $LOCAL_DIR -type d -exec chmod g+x {} +

#(Nasledujúce 4 riadky odkomentovať, len ak ide o wordpress)
#echo "WordPress Info"

#$PHPBIN /usr/local/bin/wp user list --path=$LOCAL_DIR
#$PHPBIN /usr/local/bin/wp plugin list --path=$LOCAL_DIR
#$PHPBIN /usr/local/bin/wp theme list --path=$LOCAL_DIR

echo "Transfer finished"

2.1. a 2.2. Údaje k pôvodnému FTP

Údaje k starému FTP nájdete u súčasného poskytovateľa hostingu vo WebAdmine.

Potrebujete:

  • Host
  • Meno
  • Heslo
  • Cestu k priečinku web, ktorý idete migrovať

Tieto údaje doplnte do skriptu:

HOST='old.ftp.host' #– pôvodný host
USER='odl.ftp.user' #- pôvodné meno
PASSWORD='old.ftp.password' #– pôvodné heslo
REMOTE_DIR='/nazov_starej_domeny/web' #adresár, z ktorého sa bude migrovať

2.3. Údaje k pôvodnej databáze

Údaje k pôvodnej databáze zistíte u Vášho súčasného hostingového poskytovateľa, alebo z konfiguračného súboru, ku ktorému sa dostanete cez FTP klienta:

  • Konfiguračný súbor pre WordPress: wp-config.php v adresári web/
  • Konfiguračný súbor pre Joomlu: configuration.php v adresári web/
  • Konfiguračný súbor pre PrestaShop: app/config/parameters.php  v adresári app/config/
  • Konfiguračný súbor pre Opencart: config.php v adresári web/ a v adresári admin/

K migrácii budete potrebovať nasledovné údaje k databáze:

  • host pôvodnej databázy
  • názov databázy pôvodnej databázy
  • meno používateľa pôvodnej databázy
  • heslo pôvodnej databázy

Tieto údaje vložte do skriptu:

DB_OLD_SERVER='old.sql.server' #- host starej databázy (bez portu)
DB_OLD_SERVER_PORT=3306 #- port k starej databáze
DB_OLD_DATABASE='olddatabase' #- názov starej databázy
DB_OLD_USER='olduser' #- používateľ starej databázy
DB_OLD_PASS='oldpass' #- heslo k starej databáze

2.4. Absolútna cesta k priečinku novej domény

Prihláste sa do putty pomocou prihlasovacích údajov do SSH.

Na migráciu webu cez SSH, budeme potrebovať iba základné príkazy.

Keď už ste prihlasení do SSH napíšte príkaz ls -la. Takto si necháte vypísať všetky priečinky, aj súbory, ktoré sa v koreňovom adresári Vášho hostingového balíka nachádzajú.

Napíšte príkaz cd nazov_domeny. Týmto príkazom sa dostanete do priečinku Vašej domény.

Takto isto postupujte, až sa dostanete do priečinku web, do ktorého budete kopírovať dáta z pôvodného FTP.

Skopírujte absolútnu cestu k adresáru web. Tú potom použijete v skripte.

Celú absolútnu cestu vložte do skriptu:

LOCAL_DIR='/var/www2/pXXXX/nazov_novej_domeny/web' #adresár kam sa bude pôvodný web migrovať

Vedeli ste že?: V putty funguje kopírovanie inak ako sme zvkynutí vo Windowse.
CTRL + C - iba vyznačíte to, čo chcete skopírovať (nič viac).
CTRL + V - klik pravým tlačidlom na myši.

3. Spustenie skriptu

Teraz sa nachádzate v priečinku web Vašej domény. Treba, aby ste sa dostali o priečinok späť, kde budeme vykonávať samotnú migráciu. To dosiahnete napísaním príkazu  cd .. (cd + dve bodky).

Tu si vytvoríme súbor, ktorý nazveme migracia.sh. Vytvoríme si ho napísaním príkazov nano migracia.sh. Tento príkaz (nano nazov_súboru) slúži pre editovanie vybraného súboru, ale pokiaľ taký súbor neexistuje, tak ho zároveň vytvorí.

Do súboru migracia.sh prekopírujeme skript, ktorý sme si predpripravili vo worde.

Následne zmeny uložíme klávesovou skratkou Ctrl + O, potvrdíme klávesou ENTER, stlačíme klávesovú skratku Ctrl + X, čím zatvoríme súbor migracia.sh a dostaneme sa späť do adresára našej domény.

Napíšeme chmod u+x migracia.sh a potvrdíme stlačením klávesy ENTER. Zadáme príkaz ./migracia.sh a stlačíme ENTER. Týmto príkazom sme sputili migráciu webu. Ako prvé sa začne zálohovať databáza a následne sa prekopíruje celý obsah vybraného adresára.

Ak kopírujete WordPress web a použili ste skript pre WordPress, tak na konci migrácie Vám vypíše informácie o používateľoch, pluginoch, témach, ktoré sú vo WordPresse nainštalované.

4. Zmena url adresy pomocou wp search-replace (ak ide o wordpress)

Po skončení migrácie budú prekopírované dáta z FTP a takisto aj databáza, ale url adresy zapísané v databáze, budú nezmenené.

Tie zmeníme pomocou wp-cli príkazu wpsearch-replace, pričom potrebujeme obsiahnuť všetky varianty: http:// | https:// | http://www | https://www.

V putty zadávame v adresári web (tam, kde máme prekopírovaný web) príkaz:

wp search-replace http://stara_domena.sk http://nova_domena.sk
wp search-replace https://stara_domena.sk https://nova_domena.sk
wp search-replace http://www.stara_domena.sk http://www.nova_domena.sk
wp search-replace https://www.stara_domena.sk https://www.nova_domena.sk

Po každej variante stlačíme ENTER, čím spustíme príkaz.

Následne sa pirihláste do (novej) databázy a v tabuľke "options" treba skontrolovať, či niekde nebola natvrdo zadaná absolútna cesta k niektorým súborom.

Príklad absolútnej cesty: /var/www2/pXXXX/nazov_domeny/web/content/uploads/nazov_suboru

Túto absolútnu cetu treba zmeniť pomocou príkazu wp search-replace rovnakým spôsobom, ako sme menili starú URL adresu za novú (wp search-replace [stará absolútna cesta] [nová aboslútna cesta]).

Príklad:
wp search-replace /var/www4/pXXXX/nazov_starej_domeny/web/content/uploads/nazov_suboru /var/www2/pxxxx/nazov_novej_domeny/web/content/uploads/nazov_suboru

4.1. Zmena url adresy (web nie je vo WordPresse)

V prípade, že migrujete web, ktorý nie je vytvorený vo WordPresse, nebudú fungovať príkazy wp-cli, čiže ani wp search-replace.

Všetky cesty v databáze musíte zmeniť manuálne v samotnej databáze.

Čistý skript pre WordPress

#!/bin/bash
PHPBIN='/usr/lib64/php7.4/bin/php'

HOST=''
USER=''
PASSWORD=''
REMOTE_DIR=''
LOCAL_DIR=''

DB_OLD_SERVER=''
DB_OLD_SERVER_PORT=
DB_OLD_DATABASE=''
DB_OLD_USER=''
DB_OLD_PASS=''

DB_SERVER=''
DB_SERVER_PORT=
DB_DATABASE=''
DB_USER=''
DB_PASS=''

echo "Starting dump OLD database $DB_OLD_DATABASE to NEW database $DB_DATABASE"
mysqldump -h $DB_OLD_SERVER -P $DB_OLD_SERVER_PORT -u $DB_OLD_USER -p$DB_OLD_PASS --routines $DB_OLD_DATABASE > oldsqldump.sql
mysql -h $DB_SERVER -P $DB_SERVER_PORT -u $DB_USER -p$DB_PASS $DB_DATABASE < oldsqldump.sql

echo "Starting download $REMOTE_DIR from $HOST to $LOCAL_DIR"
lftp -u "$USER","$PASSWORD" $HOST <<EOF
# the next 3 lines put you in ftpes mode. Uncomment if you are having trouble connecting.
set ftp:ssl-force true
set ftp:ssl-protect-data true
set ssl:verify-certificate no
set ftp:list-options -a

# transfer starts now...
mirror --delete --verbose --parallel=10 $REMOTE_DIR $LOCAL_DIR;
exit
EOF

$PHPBIN /usr/local/bin/wp config set DB_HOST $DB_SERVER:$DB_SERVER_PORT --path=$LOCAL_DIR
$PHPBIN /usr/local/bin/wp config set DB_NAME $DB_DATABASE --path=$LOCAL_DIR
$PHPBIN /usr/local/bin/wp config set DB_USER $DB_USER --path=$LOCAL_DIR
$PHPBIN /usr/local/bin/wp config set DB_PASSWORD $DB_PASS --path=$LOCAL_DIR

chmod -R g+rw $LOCAL_DIR
find $LOCAL_DIR -type d -exec chmod g+x {} +

echo "WordPress Info"

$PHPBIN /usr/local/bin/wp user list --path=$LOCAL_DIR
$PHPBIN /usr/local/bin/wp plugin list --path=$LOCAL_DIR
$PHPBIN /usr/local/bin/wp theme list --path=$LOCAL_DIR

echo "Transfer finished"

Čistý skript pre web, ktorý nie je vo WordPresse

Tento skript môžete použiť, pokiaľ máte web naprogramovaný a nie je vytvorený v nijakom redakčnom systéme.

#!/bin/bash
PHPBIN='/usr/lib64/php7.4/bin/php'

HOST=''
USER=''
PASSWORD=''
REMOTE_DIR=''
LOCAL_DIR=''

DB_OLD_SERVER=''
DB_OLD_SERVER_PORT=
DB_OLD_DATABASE=''
DB_OLD_USER=''
DB_OLD_PASS=''

DB_SERVER=''
DB_SERVER_PORT=
DB_DATABASE=''
DB_USER=''
DB_PASS=''

echo "Starting dump OLD database $DB_OLD_DATABASE to NEW database $DB_DATABASE"
mysqldump -h $DB_OLD_SERVER -P $DB_OLD_SERVER_PORT -u $DB_OLD_USER -p$DB_OLD_PASS --routines $DB_OLD_DATABASE > oldsqldump.sql
mysql -h $DB_SERVER -P $DB_SERVER_PORT -u $DB_USER -p$DB_PASS $DB_DATABASE < oldsqldump.sql

echo "Starting download $REMOTE_DIR from $HOST to $LOCAL_DIR"
lftp -u "$USER","$PASSWORD" $HOST <<EOF
# the next 3 lines put you in ftpes mode. Uncomment if you are having trouble connecting.
set ftp:ssl-force true
set ftp:ssl-protect-data true
set ssl:verify-certificate no
set ftp:list-options -a

# transfer starts now...
mirror --delete --verbose --parallel=10 $REMOTE_DIR $LOCAL_DIR;
exit
EOF

chmod -R g+rw $LOCAL_DIR
find $LOCAL_DIR -type d -exec chmod g+x {} +
echo "Transfer finished"