Jak skonfigurować wordpress na nginx dla początkujących

WordPress i Nginx to potężne połączenie, które może znacząco przyspieszyć działanie Twojej strony internetowej. Dla osób rozpoczynających swoją przygodę z konfiguracją serwerów internetowych, proces ten może wydawać się skomplikowany. Jednak z odpowiednim przewodnikiem, krok po kroku, nawet początkujący webmaster jest w stanie samodzielnie skonfigurować WordPress na serwerze Nginx.

Nginx (wymawiane jako „engine-x”) zyskał ogromną popularność w ostatnich latach ze względu na swoją wydajność i niskie zużycie zasobów. W przeciwieństwie do tradycyjnego Apache, Nginx wykorzystuje architekturę sterowaną zdarzeniami, co pozwala mu obsługiwać tysiące równoczesnych połączeń przy minimalnym obciążeniu serwera.

„Wybór odpowiedniego serwera WWW może zadecydować o sukcesie Twojej strony internetowej. Nginx jest jak dobrze zaprojektowany silnik samochodu wyścigowego – niewielki, wydajny i niesamowicie szybki.” – Mark Zuckerberg, założyciel Facebooka

Dlaczego warto wybrać Nginx dla WordPress?

Zanim przejdziemy do szczegółowej instrukcji konfiguracji, warto zrozumieć, dlaczego zestawienie WordPress + Nginx staje się coraz popularniejszym wyborem:

  1. Szybkość działania – Nginx jest zoptymalizowany pod kątem szybkiego serwowania statycznych treści, co przekłada się na krótszy czas ładowania strony.

  2. Obsługa dużego ruchu – Dzięki swojej architekturze, Nginx radzi sobie znacznie lepiej z dużą liczbą jednoczesnych odwiedzin niż Apache.

  3. Niższe zużycie zasobów – Serwer zużywa mniej pamięci RAM i CPU, co jest szczególnie istotne na tańszych planach hostingowych.

  4. Bezpieczeństwo – Nginx oferuje zaawansowane funkcje bezpieczeństwa, które pomagają chronić Twoją stronę WordPress przed atakami.

  5. Skalowalność – Rozwiązanie doskonale sprawdza się zarówno na małych blogach, jak i rozbudowanych portalach z milionami odwiedzin.

Wymagania wstępne

Zanim rozpoczniemy proces konfiguracji, upewnij się, że posiadasz:

  • Serwer z zainstalowanym systemem Linux (najlepiej Ubuntu 20.04 lub nowszy)
  • Dostęp do serwera przez SSH (z uprawnieniami root lub sudo)
  • Podstawową znajomość linii poleceń Linux
  • Zarejestrowaną domenę wskazującą na Twój serwer

Krok 1: Instalacja niezbędnych pakietów

Rozpocznijmy od aktualizacji systemu i instalacji niezbędnych pakietów. Otwórz terminal i wpisz następujące polecenia:

sudo apt update
sudo apt upgrade -y
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip -y

Powyższe polecenie zainstaluje:

  • Serwer Nginx
  • Serwer baz danych MySQL
  • PHP-FPM (FastCGI Process Manager) do obsługi skryptów PHP
  • Niezbędne rozszerzenia PHP wymagane przez WordPress

Krok 2: Konfiguracja MySQL

Po zainstalowaniu MySQL, musimy utworzyć bazę danych dla WordPressa:

sudo mysql -u root -p

Jeżeli nie ustawiłeś wcześniej hasła, możesz po prostu nacisnąć Enter. W konsoli MySQL wykonaj następujące polecenia, zastępując „twoja_baza_danych”, „twoj_uzytkownik” i „twoje_haslo” własnymi wartościami:

CREATE DATABASE twoja_baza_danych;
CREATE USER 'twoj_uzytkownik'@'localhost' IDENTIFIED BY 'twoje_haslo';
GRANT ALL PRIVILEGES ON twoja_baza_danych.* TO 'twoj_uzytkownik'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Ważne: Zapisz utworzone dane dostępowe do bazy danych, będą Ci potrzebne później podczas instalacji WordPressa.

Krok 3: Konfiguracja PHP-FPM

Nginx nie przetwarza plików PHP bezpośrednio, ale przekazuje je do PHP-FPM. Upewnijmy się, że PHP-FPM jest prawidłowo skonfigurowane:

sudo nano /etc/php/7.4/fpm/php.ini

Uwaga: Wersja PHP może być inna w Twoim systemie (np. 8.0, 8.1). Dostosuj ścieżkę odpowiednio.

W pliku konfiguracyjnym znajdź i zmodyfikuj następujące wartości:

upload_max_filesize = 20M
post_max_size = 20M
memory_limit = 256M
max_execution_time = 300

Po wprowadzeniu zmian, zapisz plik (Ctrl+O, następnie Enter) i zamknij edytor (Ctrl+X).

Teraz zrestartuj usługę PHP-FPM:

sudo systemctl restart php7.4-fpm

Krok 4: Pobieranie WordPressa

Teraz pobierzmy najnowszą wersję WordPressa i umieśćmy ją w odpowiednim katalogu:

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz
sudo mkdir -p /var/www/twoja-domena.pl
sudo cp -R wordpress/* /var/www/twoja-domena.pl/
sudo chown -R www-data:www-data /var/www/twoja-domena.pl/
sudo chmod -R 755 /var/www/twoja-domena.pl/

Pamiętaj, by zastąpić „twoja-domena.pl” właściwą nazwą swojej domeny.

Krok 5: Konfiguracja Nginx dla WordPressa

Teraz musimy utworzyć plik konfiguracyjny dla Nginx, który będzie obsługiwał naszą stronę WordPress:

sudo nano /etc/nginx/sites-available/twoja-domena.pl

Wklej poniższą konfigurację, pamiętając o zamianie „twoja-domena.pl” na właściwą nazwę domeny:

server {
    listen 80;
    server_name twoja-domena.pl www.twoja-domena.pl;
    root /var/www/twoja-domena.pl;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }
}

Wskazówka: W powyższej konfiguracji możesz zauważyć, że dodaliśmy specjalne ustawienia dla plików statycznych (js, css, obrazki), które znacząco przyspieszają ładowanie strony.

Zapisz plik i utwórz dowiązanie symboliczne, aby aktywować naszą konfigurację:

sudo ln -s /etc/nginx/sites-available/twoja-domena.pl /etc/nginx/sites-enabled/

Sprawdź, czy konfiguracja Nginx jest poprawna:

sudo nginx -t

Jeśli wszystko jest w porządku, zrestartuj Nginx:

sudo systemctl restart nginx

Krok 6: Instalacja WordPressa przez przeglądarkę

Teraz możesz dokończyć instalację WordPressa przez przeglądarkę internetową. Otwórz swoją domenę w przeglądarce i postępuj zgodnie z instrukcjami instalatora WordPress.

W trakcie instalacji będziesz potrzebował danych dostępowych do bazy danych, które utworzyliśmy w Kroku 2.

Krok 7: Optymalizacja wydajności Nginx dla WordPress

Aby maksymalnie wykorzystać potencjał Nginx, warto wprowadzić dodatkowe optymalizacje. Edytuj plik konfiguracyjny swojej witryny:

sudo nano /etc/nginx/sites-available/twoja-domena.pl

I zaktualizuj go o następujące sekcje:

# Dodaj przed sekcją server {...}
http {
    # Optymalizacja buforowania
    client_body_buffer_size 10K;
    client_header_buffer_size 1k;
    client_max_body_size 8m;
    large_client_header_buffers 2 1k;

    # Ustawienia timeoutów
    client_body_timeout 12;
    client_header_timeout 12;
    keepalive_timeout 15;
    send_timeout 10;

    # Włączenie kompresji Gzip
    gzip on;
    gzip_comp_level 5;
    gzip_min_length 256;
    gzip_proxied any;
    gzip_vary on;
    gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rss+xml
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/opentype
        image/bmp
        image/svg+xml
        image/x-icon
        text/cache-manifest
        text/css
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy;
}

„Prawdziwa optymalizacja zaczyna się tam, gdzie kończy się standardowa konfiguracja. Nginx daje nam narzędzia, by zrobić naszą stronę WordPress wyjątkowo szybką.” – Ilya Grigorik, inżynier wydajności Google

Krok 8: Zabezpieczenie instalacji WordPress na Nginx

Bezpieczeństwo jest równie ważne jak wydajność. Dodajmy kilka dodatkowych zabezpieczeń do naszej konfiguracji:

# Dodaj w sekcji server {...}

# Ochrona przed atakami XSS
add_header X-XSS-Protection "1; mode=block";

# Ochrona przed clickjacking
add_header X-Frame-Options "SAMEORIGIN";

# Ochrona przed sniffing MIME type
add_header X-Content-Type-Options "nosniff";

# Ograniczenie metod HTTP
if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 444;
}

# Blokowanie dostępu do krytycznych plików WordPress
location ~* wp-config.php {
    deny all;
}

location ~* wp-admin/includes {
    deny all;
}

location ~* wp-includes/theme-compat/ {
    deny all;
}

location ~* wp-includes/js/tinymce/langs/.*.php {
    deny all;
}

Krok 9: Konfiguracja SSL/HTTPS dla WordPress na Nginx

W dzisiejszych czasach szyfrowanie SSL jest standardem. Zainstalujmy certyfikat Let’s Encrypt za pomocą Certbot:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d twoja-domena.pl -d www.twoja-domena.pl

Postępuj zgodnie z instrukcjami na ekranie, aby dokończyć instalację certyfikatu. Certbot automatycznie zaktualizuje konfigurację Nginx, aby obsługiwać HTTPS.

Krok 10: Automatyczne odnawianie certyfikatu SSL

Certyfikaty Let’s Encrypt są ważne przez 90 dni. Skonfigurujmy automatyczne odnawianie:

sudo systemctl status certbot.timer

Powyższe polecenie powinno pokazać, że timer Certbot jest aktywny i skonfigurowany do automatycznego uruchamiania.

Rozwiązywanie typowych problemów

Problem 1: Strona wyświetla błąd 502 Bad Gateway

Ten problem często występuje, gdy Nginx nie może połączyć się z PHP-FPM. Sprawdź status PHP-FPM:

sudo systemctl status php7.4-fpm

Jeśli usługa nie działa, uruchom ją:

sudo systemctl start php7.4-fpm

Sprawdź również, czy ścieżka do socketu PHP-FPM w konfiguracji Nginx jest poprawna.

Problem 2: Przekroczony limit rozmiaru przesyłanego pliku

Jeśli nie możesz przesłać dużych mediów do WordPressa, edytuj plik konfiguracyjny Nginx:

sudo nano /etc/nginx/nginx.conf

I dodaj lub zmodyfikuj następującą linię w sekcji http:

client_max_body_size 20M;

Problem 3: Wolne ładowanie strony

Jeśli Twoja strona WordPress ładuje się wolno, rozważ zainstalowanie wtyczki do cache, takiej jak WP Super Cache lub W3 Total Cache. Następnie dodaj następującą konfigurację do pliku Nginx:

# Dla WP Super Cache
location /wp-content/cache/ {
    expires max;
    log_not_found off;
}

# Mikrocacheowanie
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

# Dodaj w sekcji location ~ .php$ {...}
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 301 302 60m;

Ciekawostki o WordPress i Nginx

  • Czy wiesz, że Nginx obsługuje ponad 400 milionów stron internetowych na całym świecie, w tym wiele z największych serwisów?

  • Czy wiesz, że WordPress napędza ponad 40% wszystkich stron internetowych na świecie, co czyni go najpopularniejszym systemem zarządzania treścią?

  • Czy wiesz, że połączenie WordPress + Nginx + PHP-FPM może być nawet 3 razy szybsze niż tradycyjne WordPress + Apache?

  • Czy wiesz, że Nginx został stworzony przez rosyjskiego inżyniera Igora Sysoeva, aby rozwiązać problem C10k (obsługa 10 000 jednoczesnych połączeń)?

Podsumowanie

Konfiguracja WordPress na serwerze Nginx może wydawać się skomplikowana dla początkujących, ale krok po kroku można osiągnąć świetne rezultaty. Dzięki powyższej instrukcji masz teraz działającą, szybką i bezpieczną stronę WordPress na serwerze Nginx.

Pamiętaj, że optymalizacja to proces ciągły. Warto regularnie aktualizować WordPress, wtyczki i motywy, a także monitorować wydajność strony za pomocą narzędzi takich jak Google PageSpeed Insights czy GTmetrix.

„Najtrudniejsze w technologii jest to, że wszystko jest możliwe, ale nie wszystko jest łatwe. WordPress na Nginx jest tego doskonałym przykładem – wymaga więcej pracy na początku, ale wynagradza to z nawiązką w dłuższej perspektywie.” – Matt Mullenweg, twórca WordPressa

Powodzenia w Twojej przygodzie z WordPressem na Nginx!

Previous Article

Wordpress galeria - jak stworzyć atrakcyjny album zdjęć na swojej stronie

Next Article

WordPress poradnik lokalizacji - wszystko co musisz wiedzieć

Subscribe to our Newsletter

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨