Polski

Migracja strony z hostingu współdzielonego na VPS z Linuksem

2 min
Hosting VPS/VDS

Przeniesienie strony PHP/MySQL na VPS Linux Infrawire daje dedykowane zasoby i pełną kontrolę nad środowiskiem. Klucz do bezbolesnej migracji: przygotuj wszystko na nowym serwerze, przetestuj przed zmianą DNS i dopiero potem przełącz ruch. Ten poradnik trzyma się tej kolejności.

📋 Wymagania wstępne

  • VPS z Linuksem (Ubuntu 24.04 lub Debian 12); IP i hasło roota znajdziesz w panelu klienta
  • Dostęp do hostingu współdzielonego (menedżer plików, FTP/SSH i narzędzie do baz danych, np. phpMyAdmin)
  • Dostęp do strefy DNS Twojej domeny
  • Domena example.com i adres IP VPS, poniżej zapisany jako VPS_IP

1. Zinwentaryzuj starą stronę

Zapisz, czego potrzebuje strona: wersja PHP, rozszerzenia, nazwa bazy danych, zadania cron, reguły .htaccess, certyfikat SSL, a przede wszystkim miejsce, w którym działa Twoja poczta. W starym panelu sprawdź wersję PHP; jeśli masz dostęp SSH:

Bash
php -v php -m | sort crontab -l

Już teraz obniż też TTL rekordów DNS do 300 sekund, co najmniej dobę przed migracją, aby końcowe przełączenie było szybkie.

2. Wyeksportuj pliki i bazę danych

Z VPS możesz pobrać pliki bezpośrednio, jeśli stary hosting oferuje SSH:

Bash
mkdir -p ~/migration && cd ~/migration rsync -avz OLDUSER@OLD_HOST:~/public_html/ ./site/

Bez SSH pobierz archiwum przez FTP lub menedżer plików i wyślij je poleceniem scp. Bazę wyeksportuj przez mysqldump (lub przycisk Eksportuj w phpMyAdmin):

Bash
mysqldump --single-transaction -u DBUSER -p DBNAME > db.sql

3. Przygotuj środowisko na VPS

Bash
sudo apt update sudo apt install -y nginx mariadb-server php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd sudo mysql_secure_installation php -v

Ubuntu 24.04 zawiera PHP 8.3, a Debian 12 PHP 8.2; gniazdo to /run/php/php8.3-fpm.sock lub /run/php/php8.2-fpm.sock. Utwórz witrynę Nginx w /etc/nginx/sites-available/example.com:

Nginx
1server { 2 listen 80; 3 listen [::]:80; 4 server_name example.com www.example.com; 5 root /var/www/example.com; 6 index index.php index.html; 7 8 location / { 9 try_files $uri $uri/ /index.php?$args; 10 } 11 12 location ~ \.php$ { 13 include snippets/fastcgi-php.conf; 14 fastcgi_pass unix:/run/php/php8.3-fpm.sock; 15 } 16}
Bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx

Nginx ignoruje .htaccess: przepisz jego reguły przekierowań na bloki location.

4. Zaimportuj pliki i bazę danych

Bash
sudo mkdir -p /var/www/example.com sudo cp -a ~/migration/site/. /var/www/example.com/ sudo chown -R www-data:www-data /var/www/example.com sudo mysql -e "CREATE DATABASE dbname CHARACTER SET utf8mb4;" sudo mysql -e "CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';" sudo mysql -e "GRANT ALL ON dbname.* TO 'dbuser'@'localhost'; FLUSH PRIVILEGES;" sudo mysql dbname < ~/migration/db.sql

Następnie zmień konfigurację aplikacji (np. wp-config.php), podając nową nazwę bazy, użytkownika i hasło. Host to teraz localhost.

5. Przetestuj przed przełączeniem

Na własnym komputerze skieruj domenę na VPS, edytując plik hosts (/etc/hosts w Linuksie i macOS, C:\Windows\System32\drivers\etc\hosts w Windows):

Bash
VPS_IP example.com www.example.com

Albo przetestuj bez zmieniania czegokolwiek:

Bash
curl -I --resolve example.com:80:VPS_IP http://example.com/

Przejrzyj stronę, zaloguj się, wyślij formularz i sprawdź logi w /var/log/nginx/error.log. Potem usuń linię z pliku hosts.

6. Przełącz DNS i zadbaj o pocztę

Zamroź zmiany treści na starej stronie, powtórz rsync oraz eksport i import bazy, aby przenieść ostatnie zmiany, a następnie zmień rekord A na VPS_IP i rekord AAAA na adres IPv6 VPS. Gdy DNS się rozpropaguje, wystaw certyfikat:

Bash
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com

Poczta: zmieniaj tylko rekordy A/AAAA. Rekordów MX, SPF i DKIM nie ruszaj, jeśli skrzynki zostają u dotychczasowego dostawcy. Starego hostingu nie wypowiadaj przed upływem kilku dni bez problemów.

🔧 Rozwiązywanie problemów

502 Bad Gateway
Gniazdo PHP w fastcgi_pass nie zgadza się z zainstalowaną wersją. Sprawdź ls /run/php/ i systemctl status php8.3-fpm.

„Error establishing a database connection”
Błędne dane logowania lub host w pliku konfiguracji. Przetestuj mysql -u dbuser -p dbname.

403 lub pusta strona
Sprawdź właściciela i uprawnienia (chown -R www-data:www-data) oraz sudo tail -n 50 /var/log/nginx/error.log i logi PHP.

Stara strona nadal się wyświetla po przełączeniu
Cache DNS są jeszcze aktywne. Sprawdź dig +short example.com i poczekaj, aż TTL wygaśnie.


✅ Twoja strona działa teraz na własnym VPS, przeniesiona bez przestoju i z bezpieczną drogą powrotu.

Bądź na bieżąco z najnowszymi ofertami, zniżkami i promocjami specjalnymi.

Zobacz promocje

Używamy plików cookie

Używamy plików cookie analitycznych, aby ulepszać nasz serwis. Nie sprzedajemy danych stronom trzecim. Więcej w polityce prywatności.