🚀 Kompletny przewodnik: Instalacja Nginx, MariaDB i PHP-FPM na Fedora 40

Szczegółowy, krok po kroku przewodnik instalacji i konfiguracji nowoczesnego stosu technologicznego LEMP (Linux, Nginx, MariaDB, PHP) na najnowszej dystrybucji Fedora 40. Ten kompletny tutorial przeprowadzi Cię przez cały proces - od czystej instalacji systemu po w pełni zoptymalizowane środowisko hostingowe gotowe do uruchomienia Twoich aplikacji webowych.

⚡ Ekspresowe Podsumowanie:

  1. Przygotowanie systemu Fedora 40: Aktualizacja i instalacja niezbędnych pakietów.
  2. Instalacja i konfiguracja Nginx: Wydajny serwer WWW z obsługą HTTP/2 i optymalnymi ustawieniami bezpieczeństwa.
  3. Wdrożenie MariaDB: Konfiguracja stabilnej, wydajnej bazy danych z odpowiednim zabezpieczeniem.
  4. Instalacja PHP-FPM: Optymalnie skonfigurowany PHP z obsługą najpopularniejszych rozszerzeń.

🗺️ Spis Treści - Twoja Mapa Drogowa


📋 Przygotowanie systemu Fedora 40

Zanim przystąpimy do instalacji stosu LEMP, należy odpowiednio przygotować system Fedora 40, aby zapewnić stabilną i bezpieczną bazę dla naszego środowiska serwerowego.

Aktualizacja systemu

Pierwszym krokiem jest zawsze aktualizacja systemu do najnowszej wersji. Fedora 40 wykorzystuje menedżer pakietów DNF, który jest następcą tradycyjnego YUM:

sudo dnf update -y
sudo dnf upgrade -y

Po zakończeniu aktualizacji zalecane jest ponowne uruchomienie systemu:

sudo systemctl reboot

Instalacja podstawowych narzędzi

Następnie zainstalujmy podstawowe narzędzia, które będą przydatne podczas konfiguracji i zarządzania naszym serwerem:

sudo dnf install -y wget curl nano vim-enhanced htop net-tools git dnf-utils

Konfiguracja zapory sieciowej

Fedora domyślnie korzysta z firewalld jako zapory sieciowej. Musimy otworzyć porty dla usług webowych:

# Włączenie zapory sieciowej i uruchomienie jej podczas startu systemu
sudo systemctl enable firewalld
sudo systemctl start firewalld

# Otwarcie portów dla HTTP i HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# Zastosowanie zmian
sudo firewall-cmd --reload

Konfiguracja SELinux

Fedora korzysta z SELinux (Security-Enhanced Linux) do dodatkowego zabezpieczenia systemu. Zamiast wyłączać SELinux (co jest często sugerowane, ale nie zalecane z punktu widzenia bezpieczeństwa), skonfigurujemy go poprawnie:

# Instalacja narzędzi SELinux
sudo dnf install -y policycoreutils-python-utils setroubleshoot

# Ustawienie odpowiednich kontekstów SELinux dla WWW
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_connect_db 1

✨ Pro Tip: Utrzymanie SELinux w trybie enforcing (wymuszającym) znacząco zwiększa bezpieczeństwo serwera, choć może wymagać dodatkowej konfiguracji. Warto poświęcić czas na zrozumienie podstaw działania SELinux zamiast go wyłączać.

💨 Instalacja i konfiguracja Nginx

Nginx to wydajny serwer WWW, często wybierany jako alternatywa dla Apache ze względu na lepszą wydajność, szczególnie przy dużym obciążeniu.

Instalacja Nginx

Fedora zawiera Nginx w swoich domyślnych repozytoriach, więc instalacja jest prosta:

sudo dnf install -y nginx

Konfiguracja podstawowa Nginx

Po instalacji Nginx, uruchommy usługę i skonfigurujmy ją do automatycznego startu przy uruchamianiu systemu:

sudo systemctl enable nginx
sudo systemctl start nginx

Sprawdźmy, czy Nginx działa poprawnie:

sudo systemctl status nginx

Powinieneś zobaczyć komunikat, że usługa jest aktywna (running).

Dostosowanie głównego pliku konfiguracyjnego

Otwórz główny plik konfiguracyjny Nginx:

sudo nano /etc/nginx/nginx.conf

Zalecam wprowadzenie następujących zmian dla optymalizacji wydajności:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

# Otwarcie odpowiedniej liczby plików
worker_rlimit_nofile 65535;

events {
    worker_connections 1024;
    multi_accept on;
    use epoll;
}

http {
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log          /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    server_tokens       off;

    # Gzip Settings
    gzip                on;
    gzip_vary           on;
    gzip_proxied        any;
    gzip_comp_level     6;
    gzip_buffers        16 8k;
    gzip_http_version   1.1;
    gzip_min_length     256;
    gzip_types          text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;

    # SSL Settings
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers         "EECDH+AESGCM:EDH+AESGCM";
    ssl_ecdh_curve      secp384r1;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets off;

    # Includes for virtual hosts, etc.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

Po wprowadzeniu zmian, zapisz plik i utwórz katalog dla konfiguracji wirtualnych hostów:

sudo mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled

Zmodyfikuj główny plik konfiguracyjny, aby uwzględnić te katalogi (jeśli nie dodałeś już tej linii):

sudo nano /etc/nginx/nginx.conf

Upewnij się, że na końcu sekcji http znajduje się:

include /etc/nginx/sites-enabled/*.conf;

Konfiguracja domyślnej strony

Utwórz konfigurację domyślnej strony w katalogu sites-available:

sudo nano /etc/nginx/sites-available/default.conf

Wklej następującą konfigurację:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    # Konfiguracja dla PHP (dodamy później)

    # Ukrycie plików .htaccess i innych ukrytych plików
    location ~ /\.ht {
        deny all;
    }
}

Utwórz link symboliczny, aby aktywować konfigurację:

sudo ln -s /etc/nginx/sites-available/default.conf /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

Utworzenie katalogu dla strony

Utwórz katalog dla plików WWW i ustaw odpowiednie uprawnienia:

sudo mkdir -p /var/www/html
sudo chown -R nginx:nginx /var/www/html

Utwórz prostą stronę testową:

echo '<html><body><h1>Witaj na serwerze Nginx na Fedora 40!</h1></body></html>' | sudo tee /var/www/html/index.html

Teraz, gdy otworzysz przeglądarkę i przejdziesz do adresu IP serwera, powinieneś zobaczyć komunikat powitalny.

🗃️ Instalacja i konfiguracja MariaDB

MariaDB to fork MySQL, który oferuje lepszą wydajność i dodatkowe funkcje. Jest to doskonały wybór dla aplikacji webowych wymagających relacyjnej bazy danych.

Instalacja MariaDB

Zainstaluj MariaDB z repozytoriów Fedora:

sudo dnf install -y mariadb-server

Uruchomienie i wstępna konfiguracja

Uruchom usługę MariaDB i włącz jej automatyczne uruchamianie podczas startu systemu:

sudo systemctl enable mariadb
sudo systemctl start mariadb

Uruchom skrypt zabezpieczający instalację MariaDB:

sudo mysql_secure_installation

Podczas wykonywania skryptu, odpowiedz na pytania:

  • Wprowadź aktualne hasło root (domyślnie brak): naciśnij Enter
  • Ustaw hasło dla użytkownika root: Y, a następnie wprowadź silne hasło
  • Usuń anonimowych użytkowników: Y
  • Wyłącz logowanie roota z zewnątrz: Y
  • Usuń testową bazę danych: Y
  • Przeładuj tabele uprawnień: Y

Optymalizacja wydajności MariaDB

Dla lepszej wydajności MariaDB, możemy dostosować jej konfigurację. Utwórz nowy plik konfiguracyjny:

sudo nano /etc/my.cnf.d/server-tuning.cnf

Wklej następującą konfigurację, dostosowując parametry do specyfikacji Twojego serwera:

[mysqld]
# Podstawowe ustawienia
innodb_buffer_pool_size = 256M  # Około 70% całkowitej pamięci RAM dla serwerów dedykowanych MariaDB
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

# Optymalizacja zapytań
query_cache_size = 64M
query_cache_limit = 2M
query_cache_type = 1

# Ustawienia połączeń
max_connections = 150
thread_cache_size = 8
table_open_cache = 4000

# Ustawienia bezpieczeństwa
local-infile = 0

Uwaga: Powyższe ustawienia są przykładowe i zakładają serwer z około 1GB RAM. Dla serwerów z większą ilością pamięci, wartości powinny być odpowiednio zwiększone.

Po zapisaniu pliku, zrestartuj MariaDB:

sudo systemctl restart mariadb

Tworzenie bazy danych i użytkownika

Teraz utwórzmy bazę danych i użytkownika dla naszej aplikacji:

sudo mysql -u root -p

Po zalogowaniu do MariaDB, wykonaj następujące polecenia SQL:

CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON myapp.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

🔒 Ważne: Zastąp 'secure_password' własnym, silnym hasłem. Używaj kombinacji wielkich i małych liter, cyfr oraz znaków specjalnych.

🔧 Instalacja i konfiguracja PHP-FPM

PHP-FPM (FastCGI Process Manager) jest alternatywą dla standardowego PHP, oferującą lepszą wydajność, szczególnie w połączeniu z Nginx.

Instalacja PHP-FPM i modułów

Fedora 40 domyślnie zawiera PHP 8.2. Zainstalujmy PHP-FPM i najpopularniejsze moduły:

sudo dnf install -y php-fpm php-cli php-common php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-intl

Podstawowa konfiguracja PHP-FPM

Otwórz główny plik konfiguracyjny PHP:

sudo nano /etc/php.ini

Wprowadź następujące optymalizacje:

; Ogólne ustawienia
memory_limit = 128M
max_execution_time = 60
max_input_time = 60
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = Europe/Warsaw
expose_php = Off

; Ustawienia błędów
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/log/php-fpm/error.log

; Ustawienia sesji
session.gc_maxlifetime = 1440
session.save_path = "/var/lib/php/session"

Uwaga: Ustaw date.timezone zgodnie z Twoją lokalizacją.

Następnie skonfigurujmy PHP-FPM. Otwórz plik konfiguracyjny:

sudo nano /etc/php-fpm.d/www.conf

Dokonaj następujących zmian:

; Zmień użytkownika i grupę na nginx
user = nginx
group = nginx

; Ustawienia procesów
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500

; Zmień socket na Unix socket zamiast TCP
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Utwórz katalog na logi PHP-FPM:

sudo mkdir -p /var/log/php-fpm
sudo chown -R nginx:nginx /var/log/php-fpm

Uruchom PHP-FPM i włącz automatyczne uruchamianie:

sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Integracja PHP-FPM z Nginx

Teraz zaktualizujmy konfigurację Nginx, aby obsługiwał pliki PHP poprzez PHP-FPM. Otwórz plik konfiguracyjny domyślnej strony:

sudo nano /etc/nginx/sites-available/default.conf

Zaktualizuj konfigurację, dodając obsługę PHP:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    # Konfiguracja PHP-FPM
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    # Ukrycie plików .htaccess i innych ukrytych plików
    location ~ /\.ht {
        deny all;
    }
}

Sprawdź konfigurację Nginx i zrestartuj usługę:

sudo nginx -t
sudo systemctl restart nginx

Testowanie PHP

Utwórz plik testowy PHP:

echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php

Zmień właściciela pliku:

sudo chown nginx:nginx /var/www/html/info.php

Teraz otwórz przeglądarkę i przejdź do adresu:

http://twój_serwer_lub_localhost/info.php

Powinieneś zobaczyć stronę z informacjami o konfiguracji PHP. Jeśli strona się wyświetla, Nginx poprawnie przekazuje żądania PHP do PHP-FPM.

🔒 Ważne: Po przetestowaniu instalacji, usuń plik info.php ze względów bezpieczeństwa:

sudo rm /var/www/html/info.php

🔐 Zabezpieczanie stosu LEMP na Fedora 40

Teraz, gdy mamy działający stos LEMP, warto poświęcić czas na dodatkowe zabezpieczenia naszego serwera.

Dodatkowe zabezpieczenia Nginx

Utwórz plik z dodatkowymi zabezpieczeniami dla Nginx:

sudo nano /etc/nginx/conf.d/security.conf

Wklej następującą konfigurację:

# Zabezpieczenia nagłówków HTTP
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), interest-cohort=()" always;

# Ogranicz metody HTTP
if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE)$) {
    return 444;
}

# Blokuj dostęp do plików ukrytych
location ~ /\.(?!well-known) {
    deny all;
}

Sprawdź konfigurację i zrestartuj Nginx:

sudo nginx -t
sudo systemctl restart nginx

Konfiguracja SELinux dla stosu LEMP

SELinux może czasami blokować standardowe operacje stosu LEMP. Ustaw odpowiednie konteksty:

# Dla Nginx
sudo chcon -R -t httpd_sys_content_t /var/www/html
sudo setsebool -P httpd_can_network_connect 1

# Dla PHP-FPM
sudo setsebool -P httpd_can_network_connect_db 1

# Dla MariaDB
sudo restorecon -v /var/lib/mysql/mysql.sock

Jeśli napotkasz problemy z SELinux, możesz sprawdzić logi:

sudo grep "SELinux is preventing" /var/log/audit/audit.log | audit2why

Automatyczne aktualizacje bezpieczeństwa

Skonfiguruj automatyczne aktualizacje bezpieczeństwa, aby system był zawsze aktualny:

sudo dnf install -y dnf-automatic

Edytuj plik konfiguracyjny:

sudo nano /etc/dnf/automatic.conf

Zmień następujące parametry:

[commands]
upgrade_type = security
random_sleep = 0

[emitters]
system_name = Fedora40_LEMP_Server

[email]
email_from = root@localhost
email_to = twój_email@domena.pl
email_host = localhost

[base]
debuglevel = 1

Włącz i uruchom usługę:

sudo systemctl enable --now dnf-automatic.timer

Monitoring serwera

Warto zainstalować podstawowe narzędzia monitorujące:

sudo dnf install -y fail2ban logwatch

Skonfiguruj Fail2ban dla ochrony przed atakami bruteforce:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Dostosuj sekcję [DEFAULT]:

[DEFAULT]
bantime  = 86400
findtime = 600
maxretry = 5

Włącz ochronę SSH:

[sshd]
enabled = true

Uruchom Fail2ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

📊 Optymalizacja wydajności stosu LEMP

Ostatnim krokiem jest optymalizacja wydajności naszego stosu LEMP, aby zapewnić płynne działanie aplikacji webowych.

Włączenie buforowania opcode PHP

Buforowanie opcode znacząco przyspiesza działanie aplikacji PHP:

sudo nano /etc/php.d/10-opcache.ini

Ustaw następujące parametry:

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.save_comments=1
opcache.fast_shutdown=1

Optymalizacja pamięci podręcznej Nginx

Dodaj konfigurację cache w Nginx:

sudo mkdir -p /var/cache/nginx/{fastcgi_cache,proxy_cache}
sudo chown -R nginx:nginx /var/cache/nginx/

Edytuj główny plik konfiguracyjny Nginx:

sudo nano /etc/nginx/nginx.conf

Dodaj w sekcji http:

# Fastcgi Cache
fastcgi_cache_path /var/cache/nginx/fastcgi_cache levels=1:2 keys_zone=PHPFPM: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;

# Proxy Cache
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=PROXY:100m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";

Następnie w konfiguracji domyślnej strony dodaj:

sudo nano /etc/nginx/sites-available/default.conf

W sekcji lokalizacji PHP:

# Cache dla PHP
set $skip_cache 0;

# Pomiń cache dla pewnych stron
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_cache 1;
}

# Pomiń cache dla logowania i komentarzy
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}

fastcgi_cache PHPFPM;
fastcgi_cache_valid 200 301 302 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

Konfiguracja limitów systemowych

Dla lepszej wydajności, dostosuj limity systemowe:

sudo nano /etc/security/limits.conf

Dodaj następujące linie:

nginx soft nofile 65535
nginx hard nofile 65535
mysql soft nofile 65535
mysql hard nofile 65535

Zaktualizuj też systemd:

sudo mkdir -p /etc/systemd/system/nginx.service.d/
sudo nano /etc/systemd/system/nginx.service.d/limits.conf

Dodaj:

[Service]
LimitNOFILE=65535

To samo dla MariaDB:

sudo mkdir -p /etc/systemd/system/mariadb.service.d/
sudo nano /etc/systemd/system/mariadb.service.d/limits.conf

Z tą samą zawartością.

Przeładuj konfigurację systemd i zrestartuj usługi:

sudo systemctl daemon-reload
sudo systemctl restart nginx mariadb php-fpm

🧪 Testowanie i walidacja instalacji

Po zakończeniu instalacji i konfiguracji, warto przetestować nasz stos LEMP, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.

Sprawdzenie statusu usług

sudo systemctl status nginx
sudo systemctl status mariadb
sudo systemctl status php-fpm

Wszystkie usługi powinny być w stanie "active (running)".

Test funkcjonalności PHP i MariaDB

Utwórz prosty plik PHP do testowania połączenia z bazą danych:

sudo nano /var/www/html/db-test.php

Zawartość pliku (pamiętaj, aby zastąpić dane logowania własnymi):

<?php
$host = 'localhost';
$user = 'myapp_user';
$pass = 'secure_password';
$db = 'myapp';

$conn = new mysqli($host, $user, $pass, $db);

if ($conn->connect_error) {
    die('Błąd połączenia: ' . $conn->connect_error);
}

echo 'Połączenie z bazą danych MariaDB działa poprawnie!';

$conn->close();
?>

Zmień właściciela pliku:

sudo chown nginx:nginx /var/www/html/db-test.php

Otwórz przeglądarkę i przejdź do:

http://twój_serwer_lub_localhost/db-test.php

Powinieneś zobaczyć komunikat o poprawnym połączeniu z bazą danych.

🔒 Ważne: Po testach, usuń plik testowy:

sudo rm /var/www/html/db-test.php

Sprawdzenie konfiguracji Nginx

Możesz sprawdzić, czy konfiguracja Nginx jest optymalna, korzystając z narzędzia analizy:

curl -s https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/nginx-analyzer.sh > nginx-analyzer.sh
chmod +x nginx-analyzer.sh
sudo ./nginx-analyzer.sh

✅ Checklista po instalacji

Przejdź przez tę listę, aby upewnić się, że wszystko zostało poprawnie skonfigurowane:

  • 🔍 Sprawdź, czy wszystkie usługi działają: Nginx, MariaDB, PHP-FPM
  • 🔄 Zweryfikuj, czy PHP może połączyć się z MariaDB
  • 🔒 Upewnij się, że zostały zastosowane wszystkie zabezpieczenia
  • 📊 Sprawdź, czy buforowanie opcode PHP jest aktywne
  • 📝 Upewnij się, że logi są poprawnie skonfigurowane
  • 🎓 Zweryfikuj, czy SELinux nie blokuje żadnych funkcji
  • 📱 Przetestuj swoją aplikację webową, jeśli już ją masz

❓ FAQ - Odpowiedzi na Twoje Pytania

Czy mogę używać PHP 8.3 zamiast domyślnej wersji w Fedora 40?
Tak, możesz zainstalować PHP 8.3 z repozytoriów REMI. Dodaj repozytorium: sudo dnf install -y https://rpms.remirepo.net/fedora/remi-release-40.rpm, a następnie włącz PHP 8.3: sudo dnf module reset php && sudo dnf module enable php:remi-8.3.

Jak zaktualizować wszystkie komponenty stosu LEMP jednocześnie?
Komenda sudo dnf update -y nginx mariadb-server php-* zaktualizuje wszystkie komponenty stosu LEMP.

Czy mogę uruchomić WordPress na tym stosie?
Tak, WordPress doskonale działa na stosie LEMP. Po instalacji WordPress, dodatkowe zabezpieczenia i optymalizacje są zalecane, szczególnie dla plików wp-config.php i .htaccess.

Jak ustawić wirtualne hosty dla wielu stron?
Utwórz nowy plik konfiguracyjny dla każdej domeny w /etc/nginx/sites-available/ a następnie utwórz do niego link symboliczny w /etc/nginx/sites-enabled/. Pamiętaj o zrestartowaniu Nginx po każdej zmianie.

Jak mogę monitorować wydajność i użycie zasobów przez serwer?
Oprócz podstawowych narzędzi jak htop, możesz zainstalować bardziej zaawansowane rozwiązania jak Prometheus z Grafana lub prostsze rozwiązanie jak Netdata: sudo dnf install -y netdata a następnie: sudo systemctl enable --now netdata.

Czy ten stos wspiera strony HTTPS?
Tak, aby skonfigurować HTTPS, możesz użyć Let's Encrypt i certbot: sudo dnf install -y certbot python3-certbot-nginx a następnie sudo certbot --nginx -d twojadomena.pl.

🏁 Podsumowanie - Gotowy do działania!

Gratulacje! Pomyślnie zainstalowałeś i skonfigurowałeś kompletny stos LEMP (Linux, Nginx, MariaDB, PHP-FPM) na Fedora 40. Twoje środowisko serwerowe jest teraz:

  • Wydajne - dzięki optymalizacjom Nginx, MariaDB i PHP-FPM
  • Bezpieczne - z zastosowaniem najlepszych praktyk bezpieczeństwa
  • Stabilne - dzięki solidnej bazie Fedora 40 i SELinux
  • Gotowe do użycia - dla Twoich aplikacji webowych i stron internetowych

Ten stack zapewnia solidną podstawę dla prawie każdej nowoczesnej aplikacji webowej - od prostych stron HTML, przez CMS-y jak WordPress, Drupal czy Joomla, po zaawansowane frameworki jak Laravel, Symfony czy Yii.

Pamiętaj o regularnych aktualizacjach i monitorowaniu systemu, aby utrzymać wysoką wydajność i bezpieczeństwo Twojego środowiska.

🚀 Potrzebujesz profesjonalnego hostingu opartego na technologii LEMP?

Sprawdź ofertę hostingu VPS w IQHost

Wybierz rozwiązanie, które pozwoli Ci skupić się na rozwoju swojej aplikacji, a nie na zarządzaniu serwerem!

Czy ten artykuł był pomocny?

Wróć do listy wpisów

Twoja strona WordPress działa wolno?

Sprawdź nasz hosting WordPress z ultraszybkimi dyskami NVMe i konfiguracją serwera zoptymalizowaną pod kątem wydajności. Doświadcz różnicy już dziś!

Sprawdź ofertę hostingu
30-dniowa gwarancja zwrotu pieniędzy