Konfiguracja Serwera WWW Apache2 (HTTP i HTTPS)

LINUX
Priorytet: Normalny Szkic

Zadanie 1300: Konfiguracja Serwera WWW Apache2 (HTTP i HTTPS)

Wprowadzenie

Apache HTTP Server (Apache2) to jedno z najpopularniejszych i najstarszych środowisk serwerowych WWW na świecie. Jego elastyczność, wydajność i bogaty ekosystem modułów sprawiają, że jest standardem w wielu środowiskach produkcyjnych. U umiejętność jego konfiguracji, w tym obsługi wirtualnych hostów (Virtual Hosts) oraz szyfrowania SSL/TLS (HTTPS), jest absolutnie kluczowa dla każdego administratora systemu Linux.

W tym zadaniu wcielisz się w rolę administratora, który musi uruchomić nową stronę internetową dla firmy, dostępną zarówno w sieci wewnętrznej, jak i publicznej, zapewniając bezpieczne połączenie.

Cel zadania

Twoim celem jest zainstalowanie serwera Apache2, skonfigurowanie wirtualnego hosta dla dedykowanej domeny (np. mojastrona.local), wygenerowanie certyfikatu SSL (Self-Signed) i wymuszenie bezpiecznego połączenia HTTPS. Na końcu utworzysz prostą stronę powitalną.

Instrukcja Krok po Kroku

Krok 1: Instalacja Apache2

Najpierw zaktualizuj listę pakietów i zainstaluj serwer Apache2.

sudo apt update
sudo apt install apache2 -y

Po instalacji sprawdź status usługi:

sudo systemctl status apache2

Krok 2: Tworzenie Struktury Katalogów i Prostej Strony WWW

Standardowo Apache trzyma strony w /var/www/html. Dla porządku i obsługi wielu stron (Virtual Hosts), stworzymy dedykowany katalog.

  1. Utwórz katalog dla nowej strony:

    sudo mkdir -p /var/www/mojastrona.local/public_html
    
  2. Nadaj odpowiednie uprawnienia (zazwyczaj użytkownik to $USER lub www-data):

    sudo chown -R $USER:$USER /var/www/mojastrona.local/public_html
    sudo chmod -R 755 /var/www/mojastrona.local
    
  3. Utwórz prosty plik index.html:

    nano /var/www/mojastrona.local/public_html/index.html
    

    Wpisz do środka przykładową treść:

    <html>
      <head>
        <title>Witaj na mojastrona.local!</title>
      </head>
      <body>
        <h1>Sukces! Wirtualny Host Apache dziala poprawnie!</h1>
      </body>
    </html>
    

Krok 3: Konfiguracja Wirtualnego Hosta (HTTP)

Aby serwer wiedział, że zapytanie o mojastrona.local ma kierować do naszego katalogu, musimy stworzyć plik konfiguracyjny.

  1. Utwórz nowy plik konfiguracyjny:

    sudo nano /etc/apache2/sites-available/mojastrona.local.conf
    

    Wklej poniższą zawartość:

    <VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName mojastrona.local
        ServerAlias www.mojastrona.local
        DocumentRoot /var/www/mojastrona.local/public_html
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
  2. Aktywuj nową stronę i przeładuj Apache:

    sudo a2ensite mojastrona.local.conf
    sudo systemctl reload apache2
    
  3. Dodaj wpis do /etc/hosts (lokalne DNS), aby móc przetestować domenę:

    sudo nano /etc/hosts
    # Dodaj linię:
    127.0.0.1 mojastrona.local
    

Krok 4: Konfiguracja HTTPS (Self-Signed Certificate)

Teraz zabezpieczymy naszą stronę. W środowisku produkcyjnym używa się certyfikatów od urzędów (CA) np. Let's Encrypt, ale do testów wystarczy certyfikat podpisany przez nas samych (Self-Signed).

  1. Włącz moduł SSL:

    sudo a2enmod ssl
    sudo systemctl restart apache2
    
  2. Wygeneruj certyfikat i klucz prywatny:

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/ssl/private/apache-selfsigned.key \
    -out /etc/ssl/certs/apache-selfsigned.crt
    

    (Wypełnij pytania dowolnymi danymi, najważniejsze to Common Name: mojastrona.local).

  3. Skonfiguruj Wirtualnego Hosta dla SSL. Edytuj ponownie plik konfiguracyjny:

    sudo nano /etc/apache2/sites-available/mojastrona.local.conf
    

    Dodaj sekcję <VirtualHost *:443> pod istniejącą sekcją *:80:

    <VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName mojastrona.local
        ServerAlias www.mojastrona.local
        DocumentRoot /var/www/mojastrona.local/public_html
    
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
        SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    

    opcjonalnie: Możesz dodać przekierowanie z portu 80 na 443 w sekcji VirtualHost 80.

  4. Sprawdź konfigurację i przeładuj Apache:

    sudo apache2ctl configtest
    sudo systemctl reload apache2
    

Weryfikacja

  1. Otwórz przeglądarkę (lub użyj curl).
  2. Wejdź na http://mojastrona.local -> powinieneś zobaczyć swoją stronę.
  3. Wejdź na https://mojastrona.local -> powinieneś zobaczyć ostrzeżenie o bezpieczeństwie (to normalne przy self-signed) i po zaakceptowaniu swoją stronę.