🢂Przeniesienie WordPress na inny serwer (za pomocąCLI)

Przeniesienie WordPress na inny serwer (CLI)

Przeniesienie WordPress na inny serwer (CLI)

Aby przenieść stronę WordPress z jednego serwera na inny, używając tylko narzędzi CLI (Command Line Interface), możesz wykonać poniższe kroki.

Krok 1

Zaczynamy od zrobienie kopii zapasowej bazy danych na serwerze źródłowym. Wynikiem tego zadania jest plik backup_YYYY_MM-DD_HMS.sql (np. backup_2025_01-30_123456.sql).

wp db export "backup_$(date +%Y_%m-%d_%H%M%S).sql"

Krok 2

Zaktualizuj adresy URL w bazie danych. Celowo pomijamy kolumnę guid, ponieważ jest to unikalny identyfikator wpisu, który nie powinien być zmieniany. --all-tables pozwala na zaktualizowanie adresów URL w wszystkich tabelach. Oczywiście old-domain.com i new-domain.com należy zastąpić odpowiednimi adresami URL :). Pamiętaj aby nie dodwawać http:// lub https:// przed adresem URL.

wp search-replace 'old-domain.com' 'new-domain.com' --skip-columns=guid --all-tables

następne polecenie pozwoli nam zaktualizować adresy URL w bazie danych z http:// na https:// gdyby pojawiły się błędy w wersji dev.

wp search-replace 'http://new-domain.com' 'https://new-domain.com' --skip-columns=guid --all-tables

wyniki powinien być podobny do tego:

+------------------------------+-----------------------+--------------+------+
| Table                        | Column                | Replacements | Type |
+------------------------------+-----------------------+--------------+------+
| wp_actionscheduler_actions   | hook                  | 0            | SQL  |
| wp_actionscheduler_actions   | status                | 0            | SQL  |
| wp_actionscheduler_actions   | args                  | 0            | SQL  |
| wp_actionscheduler_actions   | schedule              | 0            | PHP  |
| wp_actionscheduler_actions   | extended_args         | 0            | SQL  |
| wp_actionscheduler_groups    | slug                  | 0            | SQL  |
                                    ...
| wp_actionscheduler_logs      | message               | 0            | SQL  |
| wp_postmeta                  | meta_key              | 0            | SQL  |
| wp_postmeta                  | meta_value            | 13           | PHP  |
| wp_posts                     | post_content          | 20           | SQL  |
| wp_posts                     | post_title            | 0            | SQL  |
| wp_posts                     | post_excerpt          | 0            | SQL  |
                                    ...
+----------------------------+-----------------------+--------------+------+
Success: Replaced 33 of 1000 items.

gdzie 33 to liczba zastąpionych wpisów.

kopia konfiga

# Skopiuj przykładowy plik konfiguracji
cp wp-config.php wp-config-kopia-$(date +%Y_%m-%d_%H%M%S).php

zmiana hasła np. developera

wp user update developer --skip-email  --allow-root --user_pass="TwojeNoweHaslo#2025#" 

dodanie nowego usera

wp user create webmaster test@example.com  --allow-root --role=administrator   --user_pass="#Silne#238123#Haso2025"

Zrzut bazy danych

Robimy zrzut bazy danych na serwerze źródłowym (teraz ze zaktualizowanymi adresami URL).

wp db export "bazadanych_$(date +%Y_%m-%d_%H%M%S).sql"

Archiwum plików

Przygotowujemy archiwum plików WordPress na serwerze źródłowym. Używamy tar z kompresją gzip dla oszczędności miejsca i czasu transferu.

tar -czf wordpress_backup_$(date +%Y_%m-%d_%H%M%S).tar.gz --exclude='*.log' --exclude='wp-config.php' .

Opcja --exclude pomija pliki logów i konfiguracji, które będą wymagały osobnej uwagi na nowym serwerze.

Transfer plików

Transferujemy pliki na nowy serwer. Możemy użyć scp lub rsync. Rsync jest bardziej efektywny przy większych plikach:

Rozpakowanie plików

Na nowym serwerze rozpakowujemy archiwum WordPress:

# Rozpakuj archiwum
tar -xzf wordpress_backup_*.tar.gz

# Ustaw odpowiednie uprawnienia
chown -R www-data:www-data public_html
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Kopiowanie konfiguracji

#zmiana nazwy pliku wp-config.php
cp wp-config-kopia-*.php wp-config.php

Import bazy danych

Importujemy bazę danych na nowym serwerze. Najpierw tworzymy nową bazę danych (jeśli jeszcze nie istnieje):


# Importuj dane
wp db import bazadanych_*.sql

Jeśli baza danych już istnieje i chcesz ją zastąpić:

# Wyczyść istniejącą bazę i importuj
wp db reset --yes
wp db import bazadanych_*.sql

Testy i finalne sprawdzenia

Przeprowadzamy testy i finalne sprawdzenia:

# Sprawdź status bazy danych
wp db check  --allow-root

# Sprawdź czy wszystkie tabele są w porządku
wp db repair --allow-root

# Sprawdź konfigurację WordPress
wp config list --allow-root

# Sprawdź czy strona działa
wp option get home --allow-root
wp option get siteurl --allow-root

Jeśli wszystko działa poprawnie, możesz usunąć pliki tymczasowe:

rm wordpress_backup_*.tar.gz
rm bazadanych_*.sql

Przekierowanie 404 na stronę główną

/**
 * Redirect 404 to home page
 */
function redirect_404_to_home() {
    if ( is_404() ) {
        wp_redirect( home_url() );
        exit;
    }
}
add_action( 'template_redirect', 'redirect_404_to_home' );

Można też utworzyć plik 404.php w katalogu wp-content/themes/Twoj_Temat/ z zawartością:

<?php
header("Location: " . "/");
exit;
?>

Podsumowanie

Migracja WordPress przez CLI to efektywny sposób przenoszenia strony między serwerami. Kluczowe kroki to:

  1. Backup bazy danych - zabezpieczenie danych przed migracją
  2. Aktualizacja URL - przygotowanie bazy pod nową domenę
  3. Export bazy - utworzenie finalnej kopii do transferu
  4. Archiwizacja plików - spakowanie WordPress z wykluczeniem niepotrzebnych plików
  5. Transfer danych - przeniesienie plików i bazy na nowy serwer
  6. Rozpakowanie - przywrócenie struktury plików z odpowiednimi uprawnieniami
  7. Import bazy - przywrócenie danych na nowym serwerze
  8. Konfiguracja - dostosowanie ustawień do nowego środowiska
  9. Testy - weryfikacja poprawności migracji

Dzięki użyciu WP-CLI cały proces jest szybki, niezawodny i można go łatwo zautomatyzować poprzez skrypty bash. Planned for 10s

View Plan