Last Updated on 13/11/2025 by administrator
10 kroků jak zmigrovat WordPress na nový hosting
10 kroků jak zmigrovat WordPress na nový hosting
Motivace:
Migrace webu postaveného na WordPressu nemusí být složitá, pokud se postupuje systematicky.
V tomto článku se podíváme na kompletní proces přesunu WordPressu na nový hosting — od stažení souborů a databáze, přes jejich nahrání na nový server s Ubuntu 24.04, až po získání a nastavení SSL certifikátu od Let’s Encrypt.
Tneto článek – 10 kroků jak zmigrovat WordPress na nový hosting je rozdělen do přehledných kroků, které zvládne i uživatel se základní znalostí Linuxu a práce s FTP.
Prerekvizita:
Před samotnou migraci je potřeba připravit samotný nový webový server a je možné postupovat podle tohoto článku – Instalace LAMP na Ubuntu 24.04 (Linux, Apache, MySQL, PHP)
Implementace – 10 kroků jak zmigrovat WordPress na nový hosting:
1. Stažení všech souborů z původního hostingu přes FTP:
Přes libovolného FTP klienta stáhnout soubory z původního hostingu do PC. Zde je použitý FTP klient Filezilla. V mém případě chci migrovat stránky původního webu https://martinuvzivot.cz.

2. Stažení databázového souboru z původního hostingu:
Během stahování všech WordPress souborů – stáhnout databázový soubor.
Doporučuji stáhnout a nainstalovat plugin BackWPup pro WordPress na původním hostingu:
V pluginu BackWPup stáhnout databázový soubor:
To stáhne zabalený soubor, což je v tomto případě 2025-10-25_22-19-17_YMJVIDEQ04_DBDUMP.tar, který je potřeba extrahovat. V tomto zabaleném souboru se nachází databázový soubor – zde např. databa1514.sql.
3. Překopírování všech WordPress souborů z původního na nový hosting:
V bodě č. 1 byly nakopírované všechny soubory z původního hostingu do PC. Teď budou nakopírovány na nový hosting server s IP adresou 192.168.0.144, kde v tomto případě běží Ubuntu 24.04.
V článku Instalace LAMP na Ubuntu 24.04 byl vytvořený nový adresář martinuvzivot.cz (podle doménového jména) v /var/www/ složce. Překopírovat všechny WordPress soubory do této složky martinuvzivot.cz.
Pozn. Je dobré si zjistit celkovou velikost všech souboru WordPressu, které se budou kopírovat, a tak si alokovat dostatek místa pro nový web (v praxi jsem si nealokoval dostatek místa a pak se divil, proč mi web nechce najet):
4. Nastavení vlastníka a zápisu pro WordPress:
Ačkoliv bylo nastavení vlastníka pro celou složku /var/www/martinuvzivot.cz provedeno už v článku Instalace LAMP na Ubuntu 24.04, po překopírování nových souborů je nutné vlastnictví jednotlivých složek znovu upravit.
WordPress potřebuje mít možnost zapisovat do některých složek, například:
- wp-content/uploads (nahrávání médií)
- wp-content/plugins (instalace pluginů)
- wp-content/themes (instalace a úprava témat)
Pokud vlastník souborů a složek není uživatel webového serveru (www-data), WordPress se sice pokusí zapisovat, ale nedostane k tomu oprávnění a některé funkce (nahrávání souborů, instalace pluginů/témat) selžou.
Příkaz níže nastaví, aby všechny soubory a složky ve WordPressu patřily uživateli a skupině www-data, což je standardní uživatel, pod kterým běží webový server Apache nebo Nginx:
chown -R www-data:www-data /var/www/martinuvzivot.cz
5. Překopírování databázového souboru na nový hosting:
Databázový soubor, což je v tomto případě databa1514.sql, nakopírovat na nový hosting server např. do /home složky. K překopírování byl zde opět použitý FTP klient Filezilla.
Připojit se na konzoli nebo přes SSH na nový hostingový server.
Před překopírováním původní databaže je potřeba zjistit ze souboru wp-config.php parametry nastavení původní databáze jako jméno databáze, uživatele databáze a heslo databáze. To lze zjistit pomocí příkazu níže:
Vytvořit stejné jméno databáze jako bylo na starém hostingu. To lze zjistit souboru wp-config.php a ověřit pomocí příkazu níže:
cat /var/www/martinuvzivot.cz/wp-config.php | grep DB_
Výstup příkazu cat /var/www/martinuvzivot.cz/wp-config.php | grep DB_ nastavené parametry původní databáze:
define('DB_NAME', 'databa1514');
define('DB_USER', 'databa1514');
define('DB_PASSWORD', '1kYqWv9rqf');
define('DB_HOST', 'localhost:3312');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');Z tohoto výstupu vidíme, že původní databáze má:
- název: databa1514
- uživatel: databa151
- heslo: 1kYqWv9rqf
- databázový server běží na: localhost:3312
Přihlášení do MariaDB jako root. Heslo odpovídá tomu, které bylo nastaveno dříve při instalaci nebo konfiguraci MariaDB, viz ve článku Instalace LAMP na Ubuntu 24.04 (Linux, Apache, MySQL, PHP).
mysql -u root -p
Výpis všech databází:
MariaDB [(none)]> SHOW DATABASES;
Pokud na serveru existuje původní databáze WordPressu s názvem wordpress, která se již nepoužívá, je možné ji odstranit následujícím příkazem níže. Tento příkaz trvale smaže celou databázi včetně všech tabulek a dat.
MariaDB [(none)]> DROP DATABASE wordpress;
Vytvořit novou prázdnou databázi (DB_NAME) se stejným názvem, jaký měl WordPress na původním hostingu, v tomto případě databa1514:
MariaDB [(none)]> CREATE DATABASE databa1514;
Následně vytvořit uživatele databáze (DB_USER) se jménem databa1514 a heslem (DB_PASSWORD) 1kYqWv9rqf v obou případech:
MariaDB [(none)]> CREATE USER 'databa1514'@'localhost' IDENTIFIED BY '1kYqWv9rqf';
Udělit novému uživateli plný přístup k nově vytvořené databázi:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON databa1514.* TO 'databa1514'@'localhost';
Projevení nově nastavených práv se zajistí příkazem:
MariaDB [(none)]> FLUSH PRIVILEGES;
Po dokončení všech operací ukončit konzoli MariaDB:
MariaDB [(none)]> exit
Import původní databáze se provede příkazem níže. Při výzvě k zadání hesla je potřeba použít původní heslo databáze (DB_PASSWORD), což v tomto případě bylo 1kYqWv9rqf:
mysql -u databa1514 -p databa1514 < /home/databa1514.sql
Ve většině případech MySQL/MariaDB databáze běží na portu TCP/3306, pokud tomu tak je, je potřeba ještě souboru wp-config.php ve složce /var/www/martinuvzivot.cz/ vymazat původní port 3312:
vi /var/www/martinuvzivot.cz/wp-config.php
Výsledný parametr přepsat takto:
define('DB_HOST', 'localhost');Pokud port není uveden, použije se automatický defaultní port 3306, parametr localhost, pak říká, že databáze se nachází na tomto serveru.
6. Testování nového webu lokálně:
Je potřeba přesměrovat doménu martinuzivot.cz na nový server 192.168.0.144. To se provede v souboru hosts obvykle ve Windows složce C:\Windows\System32\drivers\etc\, jde je potřeba přidat řádek níže:
192.168.0.144 martinuvzivot.cz
Po změně v souboru hosts je potřeba promazat DNS cache. Na Windows se použije:
ipconfig /flushdns
Doporučené je vymazat cache prohlížeče. Je potřeba prozatím použít anonymní režim jakéhokoliv prohlížeče, protože jen v něm je umožněno přidat výjimku zatím neplatného certifikátu a načíst tak web i bez validního SSL certifikátu.
Pokud se stránka nenačítá a píše hlášku níže:
je možné dočasně deaktivovat .htaccess soubor. Stránka se tak načte bez pravidel přepisování URL:
mv /var/www/martinuvzivot.cz/.htaccess /var/www/martinuvzivot.cz/htaccess.bak
V prohlížeči kliknout na Advanced a následně Accept the Risk and Continue:
Stránka webu martinuvzivot.cz se načetla v pořádku. Pokud se např. používají i Google reklamy, taky jsou také zachovány:
Nicméně jednotlivé odkazy budou pravděpodobně házet chybu níže, protože se nevygeneroval nový .htaccess soubor:
Co by mělo jít otevřít je přihlášení do wp-admin, jelikož složka wp-admin fyzicky na serveru existuje:
Nový soubor .htaccess se vygeneruje kliknutím na Nastavení > Trvalé odkazy. Není potřeba ani klikat na Uložit změny, i tak se .htaccess vytvoří:
Pozn. Problém může dělat plugin Really Simple Security, který může v prohlížeči psát ERR_TOO_MANY_REDIRECTS. V tomto případě je možné postupovat podle tohoto článku – https://martinuvzivot.cz/really-simple-ssl-err_too_many_redirects-chyba/
7. Stažení SSL certifikátu pro doménu:
Díky Certbotu od Let’s Encrypt můžete snadno nasadit HTTPS zdarma a s možností automatického prodlužování certifikátu.
Aktualizovat lokální seznam balíčků z repozitářů systému:
sudo apt update
Nainstalovat nástroj Certbot pro získání a obnovu SSL/TLS certifikátů od Let’s Encrypt a plugin Apache pro Certbot:
sudo apt install certbot python3-certbot-apache
Existují dva způsoby, jak získat certifikát pro domény martinuvzivot.cz a www.martinuvzivot.cz:
Možnost A – doména již směřuje na nový server:
Pokud vaše doména směřuje přímo na nový server, lze použít jednoduchý příkaz Certbotu pro Apache:
certbot --apache -d martinuvzivot.cz -d www.martinuvzivot.cz
Výpis příkazu certbot –apache -d martinuvzivot.cz -d www.martinuvzivot.cz ukazuje instalaci, kde bude vyzváno:
- k zadání e-mailu pro upozornění a obnovu certifikátu,
- k souhlasu s podmínkami Let’s Encrypt,
- volitelně k sdílení e-mailu s EFF.
Aby se ověřilo, zda automatické obnovení funguje, je možné spustit simulaci použitím příkazu níže:
sudo certbot renew --dry-run
Pozn. Pokud lze vidět chybová hláška je možné, že doménové jméno stále nebylo přesunuté na novou veřejnou IP adresu.
Možnost B – doména ještě nesměřuje na nový server:
Pokud doménové jméno martinuvzivot.cz stále směřuje na starý hosting nebo www nemá platný DNS záznam, Certbot nebude moci certifikát vydat klasickým způsobem. V takovém případě je nutno použít DNS-01 challenge:
certbot -d martinuvzivot.cz -d www.martinuvzivot.cz --manual --preferred-challenges dns certonly
Výpis příkazu certbot -d martinuvzivot.cz -d www.martinuvzivot.cz –manual –preferred-challenges dns certonly ukazuje, že certbot vygeneroval TXT záznamy, které je potřeba přidat do DNS pod _acme-challenge.martinuvzivot.cz a_acme-challenge.www.martinuvzivot.cz.
Saving debug log to /var/log/letsencrypt/letsencrypt.log Requesting a certificate for martinuvzivot.cz and www.martinuvzivot.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name: _acme-challenge.martinuvzivot.cz. with the following value: BD1xX72bWK8Zk6z2H4luNU8cEwknt1F1b2ia0GXdhn8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name: _acme-challenge.www.martinuvzivot.cz. with the following value: H2Ukd4HmfvARFAGlnbPWLBrAyXRq1GUq9P_QsdObUqc (This must be set up in addition to the previous challenges; do not remove, replace, or undo the previous challenge tasks yet. Note that you might be asked to create multiple distinct TXT records with the same name. This is permitted by DNS standards.) Before continuing, verify the TXT record has been deployed. Depending on the DNS provider, this may take some time, from a few seconds to multiple minutes. You can check if it has finished deploying with aid of online tools, such as the Google Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.www.martinuvzivot.cz. Look for one or more bolded line(s) below the line ';ANSWER'. It should show the value(s) you've just added. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue
Před stiknutím klávesy Enter, je nejprve potřeba do DNS přidat TXT záznam typu _acme-challenge u registrátora domény. V tomto případě jej mám u WEDOSu čili je možné postupovat podle tohoto článku https://martinuvzivot.cz/nastaveni-acme-challenge-v-dns/
Po úspěšném přidání TXT záznamu v DNS a po propagaci TXT záznamů, lze stisknout tlačítko Enter. Výstup by měl ukázat, že byl certifikát úspěšně stažený a uložený.
Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/martinuvzivot.cz/fullchain.pem Key is saved at: /etc/letsencrypt/live/martinuvzivot.cz/privkey.pem This certificate expires on 2026-02-09. These files will be updated when the certificate renews. NEXT STEPS: - This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Z výpisu výše je patrné, že certifikát se nebude automaticky obnovovat, protože byla použita Možnost B s DNS-01 challenge a parametrem –manual.
Pokud to dosud nebylo provedeno, je nyní potřeba u registrátora domény upravit DNS záznamy a nasměrovat doménu martinuvzivot.cz a www.martinuvzivot.cz na novou veřejnou IP adresu pomocí A záznamu (A record).
8. Simulace automatického obnovení certifikátu:
Aby se ověřilo, zda automatické obnovení funguje, je možné spustit simulaci použitím příkazu níže:
sudo certbot renew --dry-run
Pozn. Pokud lze vidět chybová hláška je možné, že doménové jméno stále nebylo přesunuté na novou veřejnou IP adresu.
Výstup příkazu sudo certbot renew –dry-run ukazuje, že simulace automatické obnovy proběhla úspěšně:
Processing /etc/letsencrypt/renewal/martinuvzivot.cz.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Simulating renewal of an existing certificate for martinuvzivot.cz and www.martinuvzivot.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/www.martinuvzivot.cz.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Simulating renewal of an existing certificate for www.martinuvzivot.cz - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The following simulated renewals succeeded: /etc/letsencrypt/live/martinuvzivot.cz/fullchain.pem (success) /etc/letsencrypt/live/www.martinuvzivot.cz/fullchain.pem (success)
Hotovo. Věřím, že Vám tento článek 10 kroků jak zmigrovat WordPress na nový hosting pomohl.















