Uruchamianie serwera WWW z wirtualnymi hostami i SSL
1. Przygotowanie środowiska
Teraz czas wszystko złożyć w całość. Dziś uruchamiamy serwer z kilkoma wirtualnymi hostami i podłączamy do nich HTTPS. Będziemy testować, debugować i ostatecznie konfigurować.
Nasze zadanie
W tym projekcie uruchomimy dwie strony na jednym serwerze WWW:
- example.com
- test.com
Dla każdej strony skonfigurujemy wirtualny host, podłączymy HTTPS, a także pokażemy kroki debugowania i sprawdzania działania. Gotowi? Zaczynamy!
Przygotowanie
Zanim zaczniemy, upewnijmy się, że wszystko jest poprawnie ustawione:
Masz już zainstalowany serwer WWW (Nginx lub Apache).
Jeśli używasz Nginx:
sudo apt-get update sudo apt-get install nginx
Lub Apache:
sudo apt-get update sudo apt-get install apache2
Zainstalowany jest pakiet Certbot do pracy z SSL.
Dla Nginx:
sudo apt-get install certbot python3-certbot-nginx
Dla Apache:
sudo apt-get install certbot python3-certbot-apache
Masz dostęp do serwera, gdzie skonfigurowane są DNS dla domen example.com i test.com, lub możesz użyć
/etc/hosts
do testów.
2. Konfiguracja katalogu dla każdej strony
Zaczynamy od tworzenia katalogów i plików dla naszych stron.
Krok 1: Tworzymy foldery dla stron
sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com
Krok 2: Tworzymy testowe pliki HTML
Tworzymy prosty plik HTML dla każdej strony:
example.com
sudo nano /var/www/example.com/index.html
Zawartość:
<!DOCTYPE html>
<html>
<head>
<title>Witamy na example.com</title>
</head>
<body>
<h1>To jest example.com</h1>
<p>Witamy na example.com! Strona działa i jest zabezpieczona przy użyciu SSL!</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
Zawartość:
<!DOCTYPE html>
<html>
<head>
<title>Witamy na test.com</title>
</head>
<body>
<h1>To jest test.com</h1>
<p>Witamy na test.com! Strona działa i jest zabezpieczona przy użyciu SSL!</p>
</body>
</html>
3. Konfiguracja wirtualnych hostów
Stworzymy osobny plik konfiguracyjny dla każdej strony.
Krok 1: Konfiguracja dla Nginx
example.com
sudo nano /etc/nginx/sites-available/example.com
Zawartość:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
test.com
sudo nano /etc/nginx/sites-available/test.com
Zawartość:
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Aktywujemy konfigurację:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Restartujemy serwer:
sudo nginx -t
sudo systemctl reload nginx
Krok 2: Konfiguracja dla Apache
example.com
sudo nano /etc/apache2/sites-available/example.com.conf
Zawartość:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
test.com
sudo nano /etc/apache2/sites-available/test.com.conf
Zawartość:
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com
<Directory /var/www/test.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Aktywujemy konfiguracje:
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2
4. Konfiguracja HTTPS dla stron
Teraz podłączymy SSL dla obu stron za pomocą Let’s Encrypt.
sudo certbot --nginx
# albo dla Apache:
sudo certbot --apache
Proces zaproponuje wybór stron, dla których będą wydane certyfikaty. Wybierz example.com
i test.com
. Certbot automatycznie zaktualizuje konfigurację serwerów.
5. Sprawdzanie działania stron
Po zakończeniu konfiguracji odwiedź swoje strony:
Powinieneś zobaczyć utworzone strony HTML. Upewnij się, że przeglądarka wyświetla "Bezpieczne" (Secure) w pasku adresu.
6. Debugowanie i testowanie
Jeśli coś poszło nie tak, sprawdź logi:
Dla Nginx:
sudo tail -f /var/log/nginx/error.log
Dla Apache:
sudo tail -f /var/log/apache2/error.log
Lub sprawdź dostępność za pomocą curl
:
curl -I http://example.com
curl -I https://example.com
7. Odnawianie certyfikatów
Certbot automatycznie odnawia certyfikaty przy użyciu systemowego cron
. Aby to sprawdzić, możesz ręcznie uruchomić:
sudo certbot renew --dry-run
Krok po kroku skonfigurowaliśmy serwer webowy z obsługą wielu witryn i HTTPS. Właśnie przeszedłeś całą drogę od pustego serwera do działającego z wirtualnymi hostami i SSL. Teraz twój serwer jest gotowy, żeby pokazać światu swoje witryny. Czy to nie jest super?
GO TO FULL VERSION