W LinuxLab uruchamiamy i utrzymujemy takie stacki dla naszych klientów na co dzień. Ten wpis to skrótowy przegląd — pokazuje całą ścieżkę od czystego Debiana 13 do działającego WordPressa po HTTPS. Każdy z komponentów (Nginx, PHP-FPM, MariaDB, WordPress, Certbot) doczeka się osobnego, szczegółowego artykułu z hardeningiem i strojeniem wydajności.
W tym artykule w skrócie przechodzimy przez instalację kompletnego stacku LEMP pod WordPressa na Debianie 13 (Trixie): serwer WWW Nginx, procesor PHP-FPM, baza MariaDB, sam WordPress oraz darmowy certyfikat SSL z Certbot. To przegląd całej ścieżki — szczegóły każdego elementu omówimy w kolejnych wpisach.
Spis treści
Co budujemy
Składamy klasyczny stack LEMP (Linux, Nginx, MariaDB, PHP) i stawiamy na nim WordPressa, a na końcu zabezpieczamy całość darmowym certyfikatem Let's Encrypt. Przepływ żądania wygląda tak: przeglądarka → Nginx (HTTPS) → PHP-FPM → WordPress → MariaDB. Nginx serwuje pliki statyczne i przekazuje PHP do PHP-FPM, PHP wykonuje kod WordPressa, a dane lądują w MariaDB.
Założenia: czysty Debian 13 „Trixie", dostęp root (lub sudo) i skierowana na serwer domena example.com.
Przygotowanie serwera
Zaczynamy od aktualizacji systemu:
apt update && apt upgrade -y
Nginx — serwer WWW
Instalujemy i uruchamiamy Nginx:
apt install -y nginx
systemctl enable --now nginx
Po tym kroku pod adresem IP serwera widać już domyślną stronę Nginx. Konfigurację serwera wirtualnego (vhost) dla WordPressa dodamy w dalszej części.
PHP-FPM
Debian 13 dostarcza PHP 8.4. Instalujemy PHP-FPM wraz z rozszerzeniami, których wymaga WordPress:
apt install -y php8.4-fpm php8.4-mysql \
php8.4-curl php8.4-gd php8.4-mbstring \
php8.4-xml php8.4-zip php8.4-intl
PHP-FPM nasłuchuje na gnieździe /run/php/php8.4-fpm.sock — to do niego Nginx przekaże żądania PHP. Drobne, ale ważne strojenie produkcyjne (limity upload_max_filesize, memory_limit, pula procesów) zostawiamy na osobny wpis.
MariaDB — baza danych
Instalujemy serwer bazy i uruchamiamy podstawowe zabezpieczenie:
apt install -y mariadb-server
mysql_secure_installation # ustaw hasło root, usuń konta testowe
Tworzymy bazę i dedykowanego użytkownika dla WordPressa (nigdy nie używamy do tego konta root):
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'silne_haslo';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
WordPress
Pobieramy najnowszego WordPressa i umieszczamy go w katalogu strony:
cd /tmp && curl -O https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
mkdir -p /var/www/example.com
cp -a /tmp/wordpress/. /var/www/example.com/
chown -R www-data:www-data /var/www/example.com
Konfigurację (dane bazy z poprzedniego kroku) ustawiamy w wp-config.php, a resztę instalacji — tytuł strony, konto administratora — dokończymy w kreatorze przeglądarki po włączeniu HTTPS.
cd /var/www/example.com
cp wp-config-sample.php wp-config.php
# uzupełnij DB_NAME=wordpress, DB_USER=wp_user, DB_PASSWORD=...
# oraz klucze zabezpieczeń (Salts) z generatora WordPressa
Vhost Nginx dla WordPressa
Tworzymy plik /etc/nginx/sites-available/example.com spinający Nginx z PHP-FPM:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
}
Aktywujemy konfigurację i przeładowujemy Nginx (po teście składni):
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Certbot — HTTPS / SSL
Na koniec zakładamy darmowy certyfikat Let's Encrypt. Certbot sam zmodyfikuje vhosta Nginx i włączy przekierowanie z HTTP na HTTPS:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com
Certbot instaluje też zadanie automatycznego odnawiania (certyfikaty Let's Encrypt ważne są 90 dni). Działanie odnawiania sprawdzimy próbnie:
certbot renew --dry-run
Od tej chwili WordPress jest dostępny pod https://example.com — wystarczy dokończyć instalację w przeglądarce.
Jak robimy to w LinuxLab
W praktyce takiego stacku nie składamy ręcznie przy każdym wdrożeniu. Cały proces mamy opisany w rolach Ansible, a infrastrukturę, na której on działa, powołujemy Terraformem. Dzięki temu każde środowisko WordPress jest identyczne, powtarzalne i odtwarzalne w minuty — a spójna konfiguracja to mniej miejsc, w których może dojść do awarii. Do tego dochodzi to, czego ten skrótowy wpis nie obejmuje: hardening, kopie zapasowe, monitoring i strojenie wydajności.
Podsumowanie i co dalej
W kilku krokach przeszliśmy od czystego Debiana 13 do działającego WordPressa po HTTPS: Nginx jako serwer WWW, PHP-FPM do wykonywania PHP, MariaDB jako baza, WordPress jako aplikacja i Certbot dla szyfrowania. To celowo skrótowy przegląd — w kolejnych wpisach rozwiniemy każdy z tych elementów: konfigurację, bezpieczeństwo i wydajność produkcyjną.
Potrzebujesz szybkiego i bezpiecznego hostingu WordPress?
Wdrażamy i utrzymujemy stacki LEMP pod WordPressa — z hardeningiem, backupem i monitoringiem. Porozmawiajmy o Twoim projekcie, bezpłatnie i bez zobowiązań.