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 premigrovať web cez Putty 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.

V tomto návode budeme postupovať bez preskakovania jednotlivých krokov, aby bol čo najpodrobnejší. Aj napriek tomu je určený pre pokročilejších úžívateľov, ktorí majú aspoň základné znalosti práce pomocou SSH.

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

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. Relatívnu cestu k priečinku novej domény
  3. Spustenie skriptu
  4. Zmena url adresy a relatívnych ciest (pomocou wp search-replace ak ide o wordpress)
    1. Zmena url adresy ( 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

Tento skript priložený nižšie použijeme len pre vysvetlenie. 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.

Všetko čo je napísané hrubým písmom sú len pomocné poznámky a nie sú súčasťou skriptu.

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

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ť
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ť - Zistíte ju cez FTP klienta, z ktorej si ju aj skopírujete (podľa obrázku nižšie).

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.2. Údaje k pôvodnej databáze

Údaje k pôvodnej databáze zistíte z konfiguračného súboru, ku ktorému sa dostanete takisto 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: settings.inc.php  v adresári config
  • Konfiguračný súbor pre Opencart: config.php v adresári web
  • Konfiguračný súbor pre Shoptet: config.php v adresári web

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.3. Relatívna 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 roote 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 relatívnu cestu k adresáru web podľa obrázka nižšie. Tú potom použijete v skripte.

Celú relatívnu cestu vložte do skriptu:

LOCAL_DIR='/var/www2/pXXXX/nazov_novej_domeny/web' #adresár kam sa bude migrovať
Pozor: V putty funguje kopírovanie inak ako sme zvkynutí vo Windowse.
CTRL + C - iba vysvietite to, čo chcete skopírovať (nič viac).
CTRL + V - klik pravým tlačítkom na myši.
relatívna cesta

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ň aj 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.

Pokiaľ kopírujete WordPress web a použili ste skript pre WordPress, tak na konci migrácie vám vypíše info 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.

Do putty prejdeme do adresára web (tam kde máme prekopírovaný web) a zadáme 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á relatívna cesta k niektorým súborom.

Príklad relatívnej cesty: /var/www2/pXXXX/nazov_domeny/web/content/uploads/nazov_suboru

Túto relatívnu cetu treba zmeniť pomocou príkazu wp search-replace rovnakým spôsobom, ako sme menili starú URL adresu za novú.

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.

URL adresy a prípadne aj relatívne cesty v databáze musíte zmeniť manuálne v samotnej databáze v tabuľke "options".

Č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"