Przeniesienie strony WordPress na VPS — kompletny przewodnik
Opublikowano: 9 kwietnia 2026 · Kategoria: WordPress, VPS
Shared hosting wystarczył na początku, ale teraz strona zwalnia, panel mówi "przekroczono limit procesów", a sklep WooCommerce zaczyna gubić zamówienia przy większym ruchu. Czas na VPS. Migracja WordPress na własny serwer to kilkugodzinna praca — i jest do zrobienia bez przerwy w działaniu strony, jeśli zrobisz to w odpowiedniej kolejności.
Kiedy warto przenieść WordPress na VPS?
- Strona ma ponad 10 000–20 000 unikalnych wizyt miesięcznie i zwalnia pod obciążeniem
- Hosting współdzielony blokuje procesy PHP lub ogranicza liczbę jednoczesnych połączeń do bazy
- Potrzebujesz niestandardowej konfiguracji: Redis, własny PHP-FPM pool, Node.js obok WP
- Sklep WooCommerce obsługuje dziesiątki zamówień dziennie i wymaga gwarancji uptime
- Chcesz pełnej kontroli nad wersjami oprogramowania i nie chcesz zależeć od cyklu aktualizacji dostawcy
Krok 1: Przygotowanie VPS — instalacja LEMP
LEMP to Linux + Nginx + MySQL/MariaDB + PHP-FPM. Na świeżym VPS Ubuntu 22.04:
# Aktualizacja systemu apt update && apt upgrade -y # Nginx apt install -y nginx # MariaDB (zalecana zamiast MySQL dla WordPress) apt install -y mariadb-server mysql_secure_installation # PHP 8.2 + PHP-FPM + rozszerzenia wymagane przez WordPress apt install -y php8.2-fpm php8.2-mysql php8.2-xml php8.2-mbstring \ php8.2-curl php8.2-zip php8.2-gd php8.2-intl php8.2-bcmath php8.2-imagick # Certbot dla SSL apt install -y certbot python3-certbot-nginx
Krok 2: Konfiguracja Nginx dla WordPress
Utwórz konfigurację wirtualnego hosta w /etc/nginx/sites-available/twoja-domena.pl:
server {
listen 80;
server_name twoja-domena.pl www.twoja-domena.pl;
root /var/www/twoja-domena.pl;
index index.php index.html;
# WordPress permalinki
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Blokuj dostęp do plików konfiguracyjnych
location ~ /\.(ht|git) {
deny all;
}
# Cache pliki statyczne
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
} # Aktywuj konfigurację ln -s /etc/nginx/sites-available/twoja-domena.pl /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx
Krok 3: Eksport WordPress ze starego hostingu
Metoda A — All-in-One WP Migration (wtyczka, najprostsza):
- Zainstaluj wtyczkę All-in-One WP Migration na starym hostingu
- Export → pobierz plik .wpress (zawiera pliki + bazę + konfigurację)
- Na VPS: zainstaluj świeży WordPress, zainstaluj wtyczkę, Import → prześlij plik
- Limit: darmowa wersja obsługuje do 512 MB; większe strony wymagają wersji płatnej lub ręcznej migracji
Metoda B — Ręczna migracja (mysqldump + rsync):
# Na starym hostingu — eksport bazy danych mysqldump -u db_user -p nazwa_bazy > wordpress_backup.sql # Na starym hostingu — spakuj pliki WordPress tar -czf wordpress_files.tar.gz /public_html/ # Skopiuj na VPS przez SCP scp wordpress_backup.sql root@IP_VPS:/var/www/ scp wordpress_files.tar.gz root@IP_VPS:/var/www/ # Na VPS — utwórz bazę i użytkownika mysql -u root -p <<EOF CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'MocneHaslo123!'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; EOF # Importuj bazę mysql -u root -p wordpress_db < /var/www/wordpress_backup.sql # Rozpakuj pliki cd /var/www/twoja-domena.pl tar -xzf /var/www/wordpress_files.tar.gz --strip-components=1
Krok 4: Aktualizacja wp-config.php
Zaktualizuj dane bazy w pliku wp-config.php na VPS:
define('DB_NAME', 'wordpress_db');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'MocneHaslo123!');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', 'utf8mb4_unicode_ci');
// Jeśli strona była na innym URL — zaktualizuj
define('WP_HOME', 'https://twoja-domena.pl');
define('WP_SITEURL', 'https://twoja-domena.pl');
Jeśli stara strona miała inny URL (np. stary-hosting.pl/~klient/), musisz
zaktualizować URLs w bazie przez WP-CLI lub Search & Replace w phpMyAdmin:
# WP-CLI — zamiana URL w całej bazie (np. gdy testowałeś na IP) wp search-replace 'http://123.45.67.89' 'https://twoja-domena.pl' --all-tables
Krok 5: Certbot SSL
# Ustawienie certyfikatu Let's Encrypt + auto-konfiguracja Nginx certbot --nginx -d twoja-domena.pl -d www.twoja-domena.pl # Certbot automatycznie: # - wystawi certyfikat # - zaktualizuje konfigurację Nginx (doda blok SSL) # - skonfiguruje cron do automatycznego odnawiania # Sprawdź automatyczne odnawianie certbot renew --dry-run
Krok 6: Zmiana DNS i rollback plan
Przed zmianą DNS — przetestuj stronę na VPS przez edycję lokalnego pliku
hosts: dodaj linię IP_VPS twoja-domena.pl i sprawdź czy wszystko działa
(strona, admin, SSL, formularze).
Zmiana DNS: W panelu rejestratora domeny zmień rekord A z IP starego hostingu na IP nowego VPS. TTL ustaw na 300 sekund (5 minut) przed migracją — to przyspiesza propagację.
Rollback plan: Stary hosting trzymaj aktywny przez minimum 48h po zmianie DNS. Jeśli coś pójdzie nie tak — zmień rekord A z powrotem na stare IP. Propagacja DNS w obie strony zajmuje tyle samo czasu, więc rollback jest zawsze możliwy.