Trochę już temu pisałem jak zamienić komputer z systemem Linux (na przykładzie Raspberry Pi i Raspbian/Debian) w serwer WWW (VPS). Później pojawiła się informacja jak dodać certyfikat SSL.
Dziś wrócimy do tego tematu – będziemy dodawać dodatkowe domeny…
Spis treści w artykule
Apache2 – dodatkowe domeny
Domen (i stron, choć nie jest to tożsame) do naszego serwera możemy dodać właściwie dowolna ilość:
- Domena – to nazwa pod którą widoczna będzie np. nasza strona w sieci
- Strona WWW – to to, co się wyświetla gdy wpiszecie w przeglądarce jakiś adres
W przypadku Apache jest to oczywiście rozróżniane:
ServerAlias – czyli wiele domen, jedna strona
W przypadku, gdy chcemy by nasza strona była dostępna pod różnymi adresami (domenami/subdomenami) korzystamy z „ServerAlias”.
Dobrym przykładem może być przedrostek „www” przed nazwą domeny:
www.webinsider.pl
- www – subodmena
- webinsider.pl – domena
I niezależnie czy wpiszecie „www.webinsider.pl” czy „webinsider.pl” – traficie tutaj (tak akurat jest ustawiony serwer, choć by być bardziej precyzyjnym, to należałoby napisać, że z subdomeny „www” za pomocą przekierowania traficie na domenę webinsider.pl).
Czasem niektórzy zapominają o tym, że „www” to tak naprawdę subdomena, którą trzeba przypisać do domeny – nawet administratorzy różnych/większych serwerów/stron. I np. działa adres z www na początku, ale już sama domena (bez „www”) nie działa… ;-)
Oczywiście nie musicie ograniczać się tylko do „www” – macie całkiem sporą dowolność…
Wildcard, czyli *.webisnider.pl
Wildcard – to kolejny ciekawy element, pozawala na „przechwycenie” wszystkich „nieznanych” domen czy subdomen.
Możecie sprawdzić działanie wchodząc np. wasze-imie.webinsider.pl – jak nic się w międzyczasie nie zmieni, to traficie na główną stronę.
Dodajemy alias
OK, teoria za nami – działamy…
Edytujemy plik konfiguracyjny, w naszym wypadku będzie to domyślny plik konfiguracyjny serwera/hosta, w tym celu edytujemy plik:
/etc/apache2/sites-enabled/000-default
Alternatywnie – chyba w APache2.4 tak jest) może być z „.conf” na końcu:
/etc/apache2/sites-enabled/000-default.conf
Interesuje nas ten fragment:
<VirtualHost *:80>
ServerAdmin adres@email
DocumentRoot /var/www/public_html
ServerName rembiejewski.pl
ServerAlias www.rembiejewski.pl
ServerAlias [dodatkowa_domena]
ServerAlias *.rembiejewski.pl
Znajdziemy tu m.in.:
- DocumentRoot – ścieżkę do plików dla danej domeny
- ServerName – domena główna
- SerwerAlias – subdomena (w tym wypadku „www.”) oraz wildcard (*.webinsider.pl)
Po zmianach pamiętajcie by przeładować konfigurację Apache:
sudo service apache2 reload
Oraz dodać odpowiednie wpisy w DNS’ach (rekordy A lub CNAME), np.:
- www.rembiejewski.pl CNAME rembiejewski.pl
- [subdomena].rembiejewski.pl A [Adres IP serwera]
- *.rembiejewski.pl A [Adres IP serwera]
VirtualHost – czyli nowa domena i niezależna strona
Trochę inaczej sytuacja wygląda gdy chcemy dodać nie tylko dodatkową domenę, ale i niezależną stronę. Choć oznacza to trochę więcej pracy niż dodanie odpowiedniego wpisu „SerwerAlias”, to nie jest to coś z czym nie poradzi sobie – z odpowiednimi wskazówkami – nawet początkujący… :-)
Zaczynamy nie od edycji plików z konfiguracją, a od kilku operacji w konsoli.
Tworzymy katalog dla nowej domeny:
sudo mkdir -p /var/www/[nazwa_domeny]/public_html
Nadajemy odpowiednie uprawnienia (krok ten można wykonać później, np. po skopiowaniu plików strony):
sudo chown -R www-data:www-data /var/www/[nazwa_domeny]/public_html
sudo chmod -R 755 /var/www/[nazwa_domeny]/public_html
Tworzymy plik konfiguracyjny dla nowej domeny – posiłkujemy się istniejącym plikiem:
sudo cp /etc/apache2/sites-available/000-default /etc/apache2/sites-available/[nazwa_domeny]
Teraz możemy przejść do edycji pliku konfiguracyjnego:
/etc/apache2/sites-available/[nazwa_domeny]
I modyfikujemy:
<VirtualHost *:80>
ServerAdmin adres@email
DocumentRoot /var/www/[nazwa_domeny]/public_html
ServerName [nazwa_domeny]
ServerAlias www.[nazwa_domeny]
ServerAlias *.[nazwa_domeny]
Musimy jeszcze aktywować nową domenę na serwerze:
sudo a2ensite [nazwa_domeny]
Na koniec przeładowanie konfiguracji serwera:
sudo service apache2 reload
I to wszystko – teraz wystarczy skopiować pliki do katalogu nowej domeny:
/var/www/[nazwa_domeny]/public_html
Oraz ustawić odpowiednie wpisy w DNS:
- [nazwa_domeny] A [Adres IP serwera]
- www.[nazwa_domeny] CNAME [nazwa_domeny]
- *.[nazwa_domeny] A [Adres IP serwera]
Oczywiście jest to podstawowa konfiguracja, i jest sporo dodatkowych opcji które można ustawić – ale to już temat może na jakiś kolejny wpis… ;-)
Połączenie szyfrowane (SSL)
Jeśli chcemy dodać obsługę SSL (połączenie szyfrowane) to np. za wpisem:
<VirtualHost *:80>
...
</VirtualHost>
dodajemy jeszcze:
<VirtualHost *:443>
ServerName [DOMENA]
ServerAlias *.[DOMENA]
DocumentRoot /var/www/[DOMENA]/public_html
ErrorLog ${APACHE_LOG_DIR}/[DOMENA]_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/[DOMENA]_ssl_access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
Oczywiście należy podać ścieżki do certyfikatu modyfikując ścieżki:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
Cześć Patryk.
Powiedz mi czy jest różnica czy korzystam z apache , ngixa itp?
Chce zainstalować strone/apke uzywajac dockera. Czy moge zainstalowć domene np z ovh uzywając tego poradnika? Jeśli nie to w jaki sposób się za to zabrać?
Dzięki i pozdrawiam , aha system to debian jessie
Zależy o co konkretnie pytasz, ale różnice w korzystaniu z Apache2 i Nginx oczywiście są – czasem na korzyść Apache2, czasem na korzyść Nginx. A do tego są jeszcze rozwiązania, gdzie Apache2 i Nginx współpracują ze sobą na jednej maszynie – Nginx serwuje statyczne pliki, Apache2 w duecie z PHP-FPM przetwarza te dynamiczne…
Ogólnie domenę chyba od każdego rejestratora możesz skonfigurować do pracy na dowolnym hostingu/serwerze – kwestia wpisów w DNSach. Ale jeśli chcesz użyć Dockera, to jest spora szansa, że kontener z daną aplikacją będzie już kompletnym „webserwerem”, i wystarczą tylko odpowiednie ustawienia związane z samym kontenerem. Sam wprawdzie nawet lubię Dockera, to zazwyczaj jednak wolę zainstalować usługi/skrypty bezpośrednio w systemie. Może to kwestia przyzwyczajenia, a może wygody (choć Docker też bywa wygodny, zwłaszcza przy migracjach projektów między maszynami).
Zobacz m.in.:
Gdzieś tam w szkicach mam poradnik Nginx + HTTP/2 + PHP7, ale kiedy zostanie opublikowany, to jeszcze nie wiem. Ale mam nadzieję, że niebawem…
Dzięki wielkie za odpwiedź. No właśnie wiem że docker tworzy takie gotowe srodowisko. Jestem jednak laikiem a nie wiem jak mam taka domene krok po kroku przypisać.
Np na direct admin to po prostu się wpisuje w odpowiednim polu , i zmienia dnsy i recordy mx również w opdowiednich zakladkach.
Jak to zrobić na debianie bez Direct Admin ? Aha i jeszcze inna kwestia. Czy na to samo wychodzi gdzie to zrobię ? Tzn czy mogę przypisać domene na Direct Admin natomiasst korzystać z niej z obok zainstalowaną stroną na dockerze ? Wiem że tutaj trzeba ogarnąć chyba problem z portami. No albo i nie wiem , taki laik ze mnie
Jak jesteś – jak to sam piszesz – jednak laikiem, to zastanów się, czy na pewno chcesz/potrzebujesz Dockera, a nie lepiej zrobić to „normalnie” (Apache2/Nginx + MySQL + phpMyAdmin + PHP-FPM). Nie dość, że będziesz miał okazję się pouczyć, to może się okazać, że będzie to łatwiejsze, zwłaszcza w dłuższym okresie czasu (np. dostęp do plików w kontenerze Dockera bywa problematyczny dla osób mniej doświadczonych z tym rozwiązaniem).
Ale koncentrując się tylko na domenie – do domeny masz przypisane jakieś DNSy (jak nie, top przypisz, albo rejestratora, dostawcy hostingu/serwera, czy Cloudflare), i na tych DNSach ustawiasz rekord A (ew ew AAA dla IPv6, ale to bym na razie pominął) wskazujący na adres IP serwera, na którym będzie strona. Kolejnym krokiem jest dodanie i skonfigurowanie domeny na serwerze/hostingu, z którego strona będzie wyświetlana. Dla modyfikacji rekordy w DNSach zazwyczaj masz jakiś panel, w przypadku domeny być może będziesz musiał zrobić to ręcznie – zależy jak masz skonfigurowane środowisko pracy. W każdym razie – w linkach które podałem powinny być wszystkie niezbędne informacje (poza konfiguracją samego Dockera, bo o tym jeszcze (?) nie pisałem).
Zawsze też możesz skorzystać z naszego wsparcia w formie komercyjnej usługi… :-)
Ok, załóżmy, że utworzyłem na vhoście domenę z subdomeną wildcard, dodałem certyfikat wildcard. Do tego zrobiłem alias tej domeny z własną subdomeną wildcard. W jaki sposób dodać do konfiguracji certyfikat wildcard z tą nową domeną-aliasem? Czy mogę powielić wpisy SSL dla certyfikatów, czy też powinienem zrobić całkiem odrębny wpis konfigu vhosta dla aliasu, czyli oddzielnej domeny, wskazując na ten sam folder, co główna domena?
Zaznaczam, że ten sam skrypt strony będzie inaczej działać, zależnie od domeny, więc nie może to być przekierowanie.
I drugie pytanie – jakie znaczenie ma dodanie subdomeny www, skoro jest *?
Jeśli domeny/subdomeny mają oddzielne certyfikaty, to niezależnie od tego, czy kierują do tego samego katalogu, czy nie, ja bym zrobił to na oddzielnych plikach vHostów. Bo tak wg mnie przejrzyściej nawet jakby chcieć coś modyfikować w przyszłości.
Co do drugiego pytania, to gdy mamy *.domena to http://www.domena jest zbyteczne, choć też nie zaszkodzi. Ja często zostawiam. Nie tylko na wszelki wypadek… ;-)
Dzięki serdeczne. Sądziłem, że robiąc odrębne vhosty na ten sam folder działam „amatorsko” :). Czeka mnie kolejna przeróbka ipConfig – tym razem z powodu certyfikatów – i chciałem zrobić to bardziej profesjonalnie, ale będzie to oznaczać w takim razie możliwość wyboru z listy istniejących folderów użytkownika. Wcześniej zrobić musiałem możliwość dekretowania folderu „public” jako podfolder (z powodu frameworków), a potem jeszcze muszę dodać coś, żeby umożliwić dodawanie do jaila brakujących rzeczy, np., żeby git tam chodził na lokalnym userze, bo w oryginale nie działa.
Co do www, w DNS dodaję jako „a”, ale nie znam powodu dodania w vhoście, jeśli jest wildcard. Ciekawe…
Nie wiem, czy to pro, czy nie, ogólnie zrób tak jak Ci wygodniej. Zarówno teraz, jak i ew. w przyszłości. Zwłaszcza że z tego, co widzę, to coś rozbudowanego tworzysz :-)
Co do www i DNS, to kwestia własnych procedur. Ja pracuje na stronach bez www, więc www kieruje na domenę (bez www). Najczęściej robię to już po stronie DNSów (np. Cloudflare), czyli ustawiam rekord CNAME o wartości „www” kierujący na domenę. Tak, by to już na warstwie DNSów przekierowanie było. Ale często odpowiednie przekierowanie dodaję też w vHoście, tak na wszelki wypadek, jakbym kiedyś w DNSach wyłączył.
Co do www i wildcard, to jak masz * to oczywiście nie musisz dawać www. Ale jak dasz, też nic się nie stanie, a gdy z jakiegoś powodu usuniesz *, to wtedy zadziała www, które będzie już czekać ;-)
A w samy artykule… no cóż, traktuj to jako przykład, że można dać www, można dać *, można dać…
Dziękuję, działa!!
JEDNA UWAGA: moja obecna wersja apache2 (2021 kwiecień) nie działała dopóki nie zmieniłem katalogu:
var/www/ na var/www/html
tak jakby nie pozwala na ten pierwszy
Dzięki. Może uda mi się to sprawdzić (czemu) i ew dodam bezpośrednio do artykułu. Bo sam od kilku lat nie używam już Apache. Przerzuciłem się nad Nginx. Jest trochę minusów, jest trochę plusów… :-)
Ps. Chyba, że możesz sprawdzić, czy to nie kwestia / na końcu ścieżki?
Dobry poradnik, dzięki :)
W apache ver. 2.4.38 Debian 10 musiałem dodać „.conf”na końcu nazwy pliku z konfigiem domeny, bo inaczej a2ensite pokazywał komunikat:
ERROR: Site nazwa_domeny does not exist!
Od bardzo dawna nie używam Apache, ale podejrzewam, że zmiana wynika z tego, że w nowszych wersjach główny plik konfiguracyjny wczytuje (include) tylko pliki z rozszerzeniem .conf, co jest w innych systemach/webserwerach. Dzięki temu nie trzeba kasować pliku vHosata, a wystarczy zmienić jego rozszerzenie.