Josef Růžička image

Tento text navazuje na tutoriál týkající se instalace a konfigurace webserveru a předpokládá, že máte ve svém počítači funkční lokální server.

Nastavení lokální domény se týká další konfigurace webového serveru, tedy Apache nebo Nginx. V praxi se jedná konkrétně o:

  • Konfiguraci lokálního DNS záznamu, a tedy namapování IP adresy na doménu.
  • Konfiguraci funkce Virtual Host, zkráceně vhost.

Lokální DNS

DNS, neboli “domain name system” je hierarchický jmenný systém, který se používá k mapování IP adres na domény. V praxi to znamená, že se do příslušného souboru napíše IP adresa a k ní se uvede doména, a tím vznikne mezi oběma vazba. Toť vše.

Hierarchie v rámci domén je vytvářena oddělovačem “.” a v praxi pak mluvíme o doménách 1., 2., 3. a dalšího řádu, a to podle vzoru: [doména 3.řádu].[doména 2.řádu].[doména 1. řádu]. Domény .com, .cz, apod. jsou tedy domény 1. řádu, domény google.com, drupal.cz jsou domény 2. řádu, atd.

Jak výše uvedený princip funguje v praxi? Pokud, do webového prohlížeče napíšete jméno domény, děje se na pozadí následující:

  • Váš počítač nejprve zkontroluje lokální DNS záznamy v souboru hosts (viz dále), a pokud najde požadovanou konfiguraci, vrátí vám webovou stránku existující lokálně. (To je v případě localhostu přesně to, co chceme).
  • Pokud DNS záznam není nalezen lokálně, bude ho počítač hledat na vzdáleném DNS serveru, což je zpravidla server vašeho poskytovatele internetu.

V debian-based distribucích linuxu je soubor hosts umístěn ve filesystému v <?php/etc/hosts?>.

.K nastavení DNS záznamu budete muset soubor editovat se zvýšenými oprávněními, tedy použít sudo.

Např. pro vytvoření lokálního DNS záznamu pro drupal.cz při použití editoru vim je vypadá konfigurace následovně:

  • <?phpsudo vim /etc/hosts?> + heslo
  • Do souboru pak napíšete <?php127.0.0.1 drupal.cz www.drupal.cz?>. Oddělovačem je zpravidla mezera nebo tab.

Uvedená lokální DNS konfigurace říká, že doména drupal.cz nebo www.drupal.cz se mají nasměrovat na IP adresu <?php127.0.0.1?>, což je zpravidla výchozí adresa lokálního serveru. (Princip je stejný, jako když v online administraci registrátora domén nastavujete k vámi zakoupené doméně IP adresu serveru. Jednoduše vytváříte DNS záznam). Je třeba upozornit, že při výše uvedené konfiguraci se nebudete schopni dostat na oficiální web drupal.cz. Váš počítač bude totiž tento web, resp. doménu, hledat lokálně, a pokud ho nenajde, vrátí vám prohlížeč informaci, že web neexistuje.

Pro úplnost ještě dodejme, že pomocí souboru <?phphosts?> můžete nastavit nejen nasměrování na lokální domény, ale i na domény na vzdálených serverech. Řekněme, že máte vlastní vzdálený webový server (např. VPS) na IP adrese <?php177.68.68.24?> a na něm máte instanci webu na doméně <?phpmujweb.io?>. Při vývoji obvykle nechcete, aby příslušná doména byla přístupná veřejně, stačí vám zajistit dostupnost a funkčnost z konkrétního počítače. Toho docílíte právě odpovídajícím záznamem v souboru hosts.

Víte, jak nastavit lokální DNS na počítačích Apple? Přispějte do komunity a pomozte dlouhodobě tak těm, kteří mají počítač Apple a neví jak na to.

Pokud potřebujete přístupy do adminstrace webu, obraťte se na někoho z Drupal týmu.

Víte, jak nastavit lokální DNS na počítačích s operačním systémem Windows? Přispějte do komunity a pomozte dlouhodobě tak těm, kteří mají počítač s OS Windows a neví jak na to.

Pokud potřebujete přístupy do adminstrace webu, obraťte se na někoho z Drupal týmu.

Virtual Host

V kostce řečeno umožňuje tato funkce v rámci jednoho webového serveru provozovat vícero webů. My se v tomto návodu budeme zabývat pouze tzv. jmennou (name-based) konfigurací. Jedná se o konfiguraci, při které webový server poslouchá na jedné IP adrese a podle jména webu, resp. zvolené domény, nasměruje požadavek na web na správnou složku ve filesystému. Podrobné informace jsou k dispozici v oficiální Apache Virtual Host documentation.

Víte, jak nakonfigurovat Virtual host pro webserver Nginx? Přispějte do komunity a pomozte dlouhodobě tak těm, kteří neví jak na to.

Pokud potřebujete přístupy do adminstrace webu, obraťte se na někoho z Drupal týmu.

Apache

Předpokládejme, že ve složce <?php/var/www?> máte existující instanci Drupalu. Přesněji ve složce <?php/var/www/mujwebio?>, přičemž docroot Drupalu je v sub-složce <?php/var/www/mujwebio/web?> (více informací k instalaci viz tutoriál Instalace Drupalu). Vaším cílem je na této instanci začít budovat web, ke kterému budete chtít přistupovat skrze doménu <?phpmujweb.io?>.

Konfigurace funkce Virtual Host probíhá ve složce <?php/etc/apache2/sites-available/?>, ve které je potřeba vytvořit konfigurační soubor. Soubor se v zásadě může jmenovat jakkoliv, nicméně je běžnou praxí pojmenovat ho dle názvu domény s koncovkou <?php.conf?>. V našem případě tedy <?phpmujweb.io.conf?>.

Konfigurace uvnitř souboru vypadá následovně:

  <VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName mujweb.io
    ServerAlias www.mujweb.io
    DocumentRoot /var/www/mujwebio/web
    ErrorLog ${APACHE_LOG_DIR}/mujweb.io-error.log
    CustomLog ${APACHE_LOG_DIR}/mujweb.io-access.log combined
    <directory>
        Options FollowSymLinks Indexes
        AllowOverride All
    </directory>
  </VirtualHost>

Z výše uvedeného je vidět, že se nejedná o nic složitého. Pro účely provozu webu na localhostu vám stačí nastavit:

  • <?phpServerName?>, tedy hlavní doménu,
  • <?phpServerAlias?>. Další funkční domény, zpravidla verze s <?phpwww?>, nicméně může se jednat např. o doménu <?phpmujweb.cz?>. Počet aliasů je neomezený.
  • <?phpDocumentRoot?> je tzv. docroot, viz výše, a říká, kde se fyzicky nachází instance webu v souborovém systému.
  • <?phpErrorLog?> a <?phpCustomLog?> říkají, do jakého logu (=souboru) bude Apache zapisovat informace o chybách a přístupech. Pokud toto nastavení v konfiguraci chybí, budou se informace zapisovat do defaultního společného logu, nicméně v praxi je vhodnější mít logy pro každou instanci webu oddělené. Logy obecně jsou v debian-based distribucích ve filesystému na <?php/var/log/?> a apache logy pak na <?php/var/log/apache2/?>.
  • <?phpDirectory?> definuje parentní složku instance webu. U Drupalu ve verzi 7 byla parentní složka webu zároveň docroot. Od verze 8 je docroot v Drupalu posunut v hierarchii o složku níže.

Nyní tedy máte konfiguraci funkce virtual host hotovou, nicméně aby vše začalo fungovat, je nutné ještě z pohledu Apache serveru web tzv. Povolit. To v praxi znamená vytvořit ve složce <?php/etc/apache2/sites-enabled?> symbolický link, tzv. symlink, na vámi právě vytvořenou konfiguraci. Příkaz pro vytvoření symlinku vypadá následovně:

sudo ln -s /etc/apache2/sites-available/mujweb.io.conf /etc/apache2/sites-enabled/mujweb.io.conf

Symbolický link je speciální typ souboru, do kterého se nic neukládá, ale který pouze odkazuje na klasický soubor. V našem případě jsou oba soubory stejně pojmenované, ale každý z nich se nachází v jiné složce. Pokud editujete symlink, editujete vlastně klasický soubor v původní lokaci (více infomací např. ve wikipedii).

Zřejmě nejčastější použití symlinků v praxi je situace, kdy se soubor, který často používáte, nachází v hluboko hierarchii souborového systému a vy si situaci zjednodušíte tím, že si v nějaké vámi dobře přístupné složce vytvoříte na daný soubor symlink.

Posledním krokem nutným k tomu, aby se konfigurace projevila, je restart lokálního serveru. Pro různé verze Apache k tomu slouží různé verze příkazů. Zde uvádím několik z nich:

sudo /etc/init.d/apache2 restart
sudo service apache2 restart
systemctl restart apache2

Pokud nyní v jakémkoliv prohlížeči napíšete mujweb.io nebo <?phpwww.mujweb.io?>, měl by vám prohlížeč vrátit titulní stránku vaší lokální Drupal instance.

Víte, jak nakonfigurovat Virtual host pro Apache webserver na počítačích Apple? Přispějte do komunity a pomozte dlouhodobě tak těm, kteří mají počítač Apple a neví jak na to.

Pokud potřebujete přístupy do adminstrace webu, obraťte se na někoho z Drupal týmu.

Víte, jak nakonfigurovat Virtual host pro Apache webserver na počítačích s operačním systémem Windows? Přispějte do komunity a pomozte dlouhodobě tak těm, kteří mají počítač s OS Windows a neví jak na to.

Pokud potřebujete přístupy do adminstrace webu, obraťte se na někoho z Drupal týmu.