- 1 1. Wstęp
 - 2 2. Instalacja i początkowa konfiguracja Ubuntu
 - 3 3. Instalacja i konfiguracja Apache
 - 4 4. Konfigurowanie wirtualnych hostów (zarządzanie wieloma witrynami)
 - 5 5. Włączanie SSL/TLS (HTTPS)
 - 6 6. Zwiększanie bezpieczeństwa serwera WWW
 - 7 7. Optymalizacja wydajności
 - 8 8. Rozwiązywanie problemów
 - 9 9. Podsumowanie
 
1. Wstęp
Czym jest serwer WWW na Ubuntu?
Serwer WWW to system, który dostarcza strony internetowe przez internet. Popularne oprogramowanie serwerów WWW obejmuje Apache, Nginx i LiteSpeed, ale najbardziej powszechnie używanym na Ubuntu jest Apache.
 Ubuntu jest lekki, wysoce stabilny i open-source, co czyni go popularnym wyborem zarówno dla osób prywatnych, jak i firm. Jest szczególnie odpowiedni do budowania stosu LAMP (Linux, Apache, MySQL/MariaDB, PHP), który jest powszechnie używany do uruchamiania stron internetowych i aplikacji webowych.
Dla kogo jest ten przewodnik?
Ten artykuł jest przeznaczony dla początkujących, którzy po raz pierwszy konfigurują serwer WWW. Zapewnia przewodnik krok po kroku, jak zainstalować Apache na Ubuntu, skonfigurować wirtualne hosty, ustawić certyfikaty SSL, zoptymalizować wydajność i zwiększyć bezpieczeństwo.
Czego się nauczysz
- Jak skonfigurować serwer WWW na Ubuntu (Instalacja i konfiguracja Apache)
 - Konfiguracja wirtualnych hostów do zarządzania wieloma stronami internetowymi
 - Instalacja darmowych certyfikatów SSL z Let’s Encrypt
 - Wzmocnienie bezpieczeństwa i optymalizacja wydajności serwera
 - Rozwiązywanie powszechnych problemów z serwerem WWW
 
2. Instalacja i początkowa konfiguracja Ubuntu
Wymagania systemowe
Aby uruchomić Ubuntu jako serwer WWW, zaleca się następujące minimalne specyfikacje systemowe:
| Component | Minimum Requirements | Recommended Requirements | 
|---|---|---|
| OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS | 
| CPU | 1GHz or higher | 2GHz or higher | 
| Memory | 512MB | 2GB or higher | 
| Storage | 10GB or more | 20GB or more | 
| Network | Internet connection | High-speed connection recommended | 
Pobieranie i instalacja Ubuntu
Możesz pobrać Ubuntu ze strony oficjalnej: https://ubuntu.com/download/server. Po uzyskaniu pliku ISO możesz go zainstalować za pomocą VirtualBox lub VMware w środowisku wirtualnym lub na dedykowanym serwerze lub VPS.
Kroki instalacji:
- Utwórz nośnik instalacyjny
 
- Użyj dysku USB (z narzędziami takimi jak Rufus)
 - Zamontuj plik ISO w maszynie wirtualnej
 
- Postępuj zgodnie z kreatorem instalacji
 
- Ustaw język na angielski
 - Sprawdź łączność sieciową
 - Skonfiguruj nazwę użytkownika i hasło
 - Zainstaluj serwer SSH (opcjonalnie, można to zrobić później)
 
- Dokończ konfigurację systemu operacyjnego i zrestartuj
 - Zaloguj się i rozpocznij początkową konfigurację
 
Podstawowa początkowa konfiguracja
Po instalacji wykonaj następujące kroki początkowej konfiguracji:
- Aktualizuj pakiety systemowe
 
sudo apt update && sudo apt upgrade -y
→ To zapewnia zastosowanie patchy bezpieczeństwa i aktualizacji oprogramowania.
- Ustaw strefę czasową
 
sudo timedatectl set-timezone America/New_York
→ Ustaw strefę czasową odpowiadającą lokalizacji serwera.
- Włącz zaporę ogniową
 
sudo ufw enable
→ To chroni serwer przed nieautoryzowanym dostępem.
- Skonfiguruj SSH (do zdalnego zarządzania)
 
- Sprawdź, czy SSH jest włączony: 
sudo systemctl status ssh - Jeśli nie jest włączony, uruchom go: 
sudo systemctl enable --now ssh 
Po zastosowaniu tych początkowych ustawień serwer Ubuntu jest gotowy do skonfigurowania jako serwer WWW.
3. Instalacja i konfiguracja Apache
Czym jest Apache?
Apache (oficjalnie Apache HTTP Server) to oprogramowanie serwera WWW open-source znane z stabilności, skalowalności i bezpieczeństwa. Około 30% serwerów WWW na świecie używa Apache.
Kluczowe funkcje:
- Darmowy i open-source
 - Modularna architektura do łatwej personalizacji
 - Obsługa SSL/TLS dla bezpiecznych połączeń HTTPS
 - Obsługa wirtualnych hostów do zarządzania wieloma stronami internetowymi
 
Instalacja Apache
Na Ubuntu Apache można łatwo zainstalować za pomocą menedżera pakietów apt.
Zainstaluj Apache
Uruchom następujące polecenia, aby zainstalować Apache:
sudo apt update
sudo apt install apache2 -y
Sprawdź instalację
Po instalacji sprawdź wersję Apache:
apache2 -v
Przykładowe wyjście:
Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-07-01T12:34:56
Jeśli widzisz tę wiadomość, Apache został pomyślnie zainstalowany.
Uruchamianie, zatrzymywanie i restartowanie Apache
Apache jest zarządzany za pomocą polecenia systemctl.
Uruchom Apache
sudo systemctl start apache2
Włącz Apache do uruchamiania przy starcie
sudo systemctl enable apache2
Sprawdź status Apache
Aby potwierdzić, że Apache działa:
sudo systemctl status apache2
Jeśli Apache działa, zobaczysz status „active (running)”.
Uruchom ponownie lub zatrzymaj Apache
Jeśli musisz ponownie uruchomić Apache po wprowadzeniu zmian w konfiguracji:
sudo systemctl restart apache2
Aby tymczasowo zatrzymać Apache:
sudo systemctl stop apache2
4. Konfigurowanie wirtualnych hostów (zarządzanie wieloma witrynami)
Czym jest wirtualny host?
Wirtualny host to funkcja, która pozwala jednemu serwerowi Apache hostować wiele domen (lub subdomen). Na przykład jeden serwer może hostować zarówno example.com, jak i test.com.
Istnieją dwa typy wirtualnych hostów:
- Wirtualny host oparty na nazwie
 
- Hostuje wiele stron na tym samym adresie IP
 - Najczęstszy sposób zarządzania wieloma witrynami
 
- Wirtualny host oparty na adresie IP
 
- Każdej stronie przypisany jest inny adres IP
 - Wymaga wielu interfejsów sieciowych na serwerze
 
Zazwyczaj używa się wirtualnego hostingu opartego na nazwie.
Kroki konfigurowania wirtualnych hostów
1. Utwórz katalogi dla każdej witryny
Każdy wirtualny host wymaga dedykowanego katalogu do przechowywania plików witryny.
sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html
2. Zmień własność katalogów
Aby Apache mógł uzyskać dostęp do plików, ustaw właściciela na www-data.
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html
3. Utwórz testowy plik HTML
Do weryfikacji utwórz plik index.html dla każdej witryny.
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html
4. Utwórz pliki konfiguracyjne wirtualnych hostów
Konfiguracje wirtualnych hostów są przechowywane w /etc/apache2/sites-available/.
Konfiguracja dla example.com
Utwórz i edytuj plik konfiguracyjny:
sudo nano /etc/apache2/sites-available/example.com.conf
Dodaj następującą konfigurację:
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>
Konfiguracja dla test.com
sudo nano /etc/apache2/sites-available/test.com.conf
Dodaj następującą treść:
<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    <Directory /var/www/test.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
    CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>
5. Włącz wirtualne hosty
Po utworzeniu plików konfiguracyjnych włącz je za pomocą a2ensite.
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
Testuj konfigurację Apache
Sprawdź pod kątem błędów składni:
sudo apachectl configtest
Jeśli wynik jest:
Syntax OK
Uruchom ponownie Apache, aby zastosować zmiany:
sudo systemctl restart apache2
6. Testowanie lokalne (edycja pliku hosts)
Aby zweryfikować, że wirtualne hosty działają poprawnie, edytuj lokalny plik hosts.
sudo nano /etc/hosts
Dodaj następujące linie:
127.0.0.1 example.com
127.0.0.1 test.com
Po zapisaniu otwórz przeglądarkę i wpisz:
http://example.com/
Jeśli zobaczysz „Welcome to example.com”, konfiguracja zakończyła się sukcesem.
5. Włączanie SSL/TLS (HTTPS)
Czym jest SSL/TLS?
SSL (Secure Sockets Layer) i TLS (Transport Layer Security) to technologie szyfrowania, które zabezpieczają komunikację w Internecie.
Korzyści z SSL/TLS:
✅ Szyfruje komunikację (redukuje ryzyko kradzieży danych i manipulacji)
 ✅ Poprawia pozycję SEO (Google priorytetyzuje witryny HTTPS w wynikach wyszukiwania)
 ✅ Zapobiega ostrzeżeniom przeglądarki (witryny HTTP mogą wyświetlać „Niebezpieczne”)
 ✅ Zabezpiecza płatności online i dane logowania
Korzystanie z Let’s Encrypt do darmowego SSL
Let’s Encrypt jest urzędem certyfikacji, który dostarcza darmowe certyfikaty SSL. Używamy certbot, aby łatwo je skonfigurować.
Instalacja Certbota
sudo apt update
sudo apt install certbot python3-certbot-apache -y
Automatyczna konfiguracja SSL dla Apache
sudo certbot --apache -d example.com -d www.example.com
Sprawdź, czy HTTPS działa
Po instalacji sprawdź:
https://example.com/
Jeśli w przeglądarce zobaczysz ikonkę kłódki, SSL działa.
6. Zwiększanie bezpieczeństwa serwera WWW
Konfiguracja zapory (UFW)
Włącz zaporę i otwórz niezbędne porty
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp   # SSH
sudo ufw allow 80/tcp   # HTTP
sudo ufw allow 443/tcp  # HTTPS
sudo ufw enable
Ochrona SSH
Zmiana portu SSH
sudo nano /etc/ssh/sshd_config
Zmiana:
Port 2222  # Change 22 to a custom port
Restart SSH:
sudo systemctl restart ssh
7. Optymalizacja wydajności
Dostosowanie Apache
Domyślnie Apache nie zawsze jest zoptymalizowany do efektywnego obsługiwania dużego ruchu. Możesz dostosować poniższe ustawienia, aby zwiększyć wydajność.
Optymalizacja MPM (Moduł wieloprocesowy)
MPM (Multi-Processing Module) określa, jak Apache przetwarza żądania.
Sprawdź bieżącą konfigurację MPM:
apachectl -M | grep mpm
Przykładowy wynik:
mpm_prefork_module (shared)
Jeśli widzisz mpm_prefork_module, rozważ przejście na mpm_event w celu uzyskania lepszej wydajności.
Zmiana na MPM Event:
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
Włączanie KeepAlive
KeepAlive umożliwia utrzymywanie połączeń, co zmniejsza liczbę nowych żądań.
Edytuj plik konfiguracyjny Apache:
sudo nano /etc/apache2/apache2.conf
Dodaj lub zmodyfikuj następujące ustawienia:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Restart Apache:
sudo systemctl restart apache2
Wykorzystanie buforowania
Używanie buforowania po stronie przeglądarki i serwera zmniejsza liczbę zbędnych żądań, poprawiając czasy odpowiedzi.
Włącz mod_expires dla buforowania w przeglądarce
sudo a2enmod expires
sudo systemctl restart apache2
Edytuj plik konfiguracyjny wirtualnego hosta:
sudo nano /etc/apache2/sites-available/example.com.conf
Dodaj:
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>
Restart Apache:
sudo systemctl restart apache2
Włącz kompresję Gzip
Włącz kompresję, aby zmniejszyć rozmiary plików i przyspieszyć ładowanie.
Włącz mod_deflate
sudo a2enmod deflate
sudo systemctl restart apache2
Edytuj plik konfiguracyjny wirtualnego hosta:
sudo nano /etc/apache2/sites-available/example.com.conf
Dodaj:
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Restart Apache:
sudo systemctl restart apache2
Ograniczanie zasobów
Aby zapobiec nadmiernemu zużyciu zasobów, ogranicz liczbę połączeń na IP.
Włącz mod_ratelimit
sudo a2enmod ratelimit
sudo systemctl restart apache2
Edytuj plik konfiguracyjny wirtualnego hosta:
sudo nano /etc/apache2/sites-available/example.com.conf
Dodaj:
<Location />
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>
Zrestartuj Apache:
sudo systemctl restart apache2
8. Rozwiązywanie problemów
Apache nie uruchamia się lub zatrzymuje się nieoczekiwanie
Sprawdź status Apache
sudo systemctl status apache2
Jeśli wyjście zawiera:
Active: failed
Wtedy wystąpił błąd.
Sprawdź logi błędów
sudo journalctl -xe
sudo tail -f /var/log/apache2/error.log
Sprawdź konflikty portów
sudo netstat -tulnp | grep ':80'
Lub:
sudo lsof -i:80
Problemy z certyfikatem SSL
Certyfikat SSL wygasł
sudo certbot renew --force-renewal
Błąd konfiguracji SSL w Apache
Edytuj plik konfiguracyjny SSL Apache:
sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf
Zweryfikuj:
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Zrestartuj Apache:
sudo systemctl restart apache2
Strona nie ładuje się (błędy 403, 404, 500)
403 Zabronione
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html
404 Nie znaleziono
Sprawdź konfigurację wirtualnego hosta:
DocumentRoot /var/www/example.com/public_html
Włącz mod_rewrite w razie potrzeby:
sudo a2enmod rewrite
sudo systemctl restart apache2
500 Błąd wewnętrzny serwera
Sprawdź logi błędów:
sudo tail -f /var/log/apache2/error.log
Spróbuj zmienić nazwę .htaccess:
mv /var/www/example.com/public_html/.htaccess /var/www/example.com/public_html/.htaccess.bak
9. Podsumowanie
Czego się nauczyłeś
Przejrzyjmy kluczowe tematy omówione w tym przewodniku.
| Section | Key Points | 
|---|---|
| 1. Introduction | Overview of Ubuntu Web Server and the purpose of this guide | 
| 2. Installing and Initial Setup of Ubuntu | Setting up Ubuntu, updating packages, and configuring the firewall | 
| 3. Installing and Configuring Apache | Installing Apache, starting the service, and verifying functionality | 
| 4. Configuring Virtual Hosts | Hosting multiple websites on a single Apache server | 
| 5. Enabling SSL/TLS | Using Let’s Encrypt for HTTPS setup | 
| 6. Enhancing Web Server Security | Firewall setup, SSH security, and Apache hardening | 
| 7. Performance Optimization | Using caching, compression, and tuning Apache settings | 
| 8. Troubleshooting | Fixing Apache errors, SSL issues, and common website errors | 
Kolejne kroki
Teraz, gdy Twój serwer WWW Ubuntu działa, rozważ naukę bardziej zaawansowanych tematów, aby zwiększyć możliwości serwera:
✅ Wdrażanie aplikacji WordPress lub PHP
 ✅ Konfigurowanie serwera baz danych (MySQL / MariaDB)
 ✅ Konfigurowanie Nginx jako reverse proxy dla Apache
 ✅ Wdrażanie auto-skalowania na platformach chmurowych (AWS, GCP, Azure)
 ✅ Zaawansowane logowanie i monitorowanie (Fail2Ban, Logwatch, Prometheus)
Najczęściej zadawane pytania (FAQ)
P1: Czy powinienem wybrać Nginx czy Apache dla mojego serwera WWW?
Odp1: Jeśli Twoja strona serwuje głównie treści statyczne, zalecany jest Nginx. Jeśli potrzebujesz przetwarzania treści dynamicznych (np. PHP), lepszym wyborem jest Apache. Możesz także używać Nginx jako reverse proxy przed Apache.
P2: Czy certyfikaty SSL mogą być odnawiane automatycznie?
Odp2: Tak, Certbot obsługuje automatyczne odnawianie. Status odnowienia możesz sprawdzić za pomocą:
sudo certbot renew --dry-run
Dla w pełni automatycznego odnawiania zaleca się skonfigurowanie zadania cron.
P3: Jak mogę dodatkowo zwiększyć bezpieczeństwo mojego serwera?
Odp3: Zaimplementuj Fail2Ban, aby zapobiegać atakom brute‑force, ukryj szczegóły wersji Apache, wyłącz nieużywane moduły i egzekwuj silne praktyki bezpieczeństwa SSH.
P4: Jak mogę poprawić wydajność Apache?
Odp4: Przejdź na MPM Event, włącz cache (mod_cache), użyj kompresji gzip (mod_deflate) i zoptymalizuj ustawienia KeepAlive.
P5: Dlaczego otrzymuję błąd „403 Forbidden”?
Odp5: Upewnij się, że właścicielem katalogu jest www-data i dostosuj uprawnienia plików:
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html
Końcowe przemyślenia
Konfiguracja serwera WWW Ubuntu wymaga wielu kroków, od instalacji i konfiguracji po optymalizację i rozwiązywanie problemów. Jednak po zrozumieniu procesu możesz zbudować i zarządzać potężnym środowiskiem hostingowym.
🚀 Postępuj zgodnie z tym przewodnikiem, aby stworzyć bezpieczny, szybki i niezawodny serwer WWW oraz dalej rozwijać swoje umiejętności jako administrator serwera! 🚀

 
![Przyczyny i rozwiązania problemu z wprowadzaniem hasła lub logowaniem w Ubuntu [Kompletny przewodnik dla początkujących]](https://www.linux.digibeatrix.com/wp-content/uploads/2025/01/222e1410df4982d8e85d09bb3e3389af-375x214.webp)
