GNU/Linux >> Znalost Linux >  >> Linux

Nastavte virtuální hostitele Apache v operačním systému Ubuntu

Nyní, když je Apache nainstalován a spuštěn, můžete jej nakonfigurovat tak, aby obsluhoval více domén pomocí virtuálních hostitelů .

Vytvořte rozvržení

Tento příklad používá dvě domény:domain1.com a domain2.com.

  1. Ve svém domovském adresáři vytvořte složku public_html:

    cd ~
    mkdir public_html
    
  2. Pro každou doménu, kterou chcete hostovat, vytvořte složku se standardní sadou podsložek. Následující příkazy vytvářejí složky public, private, log, cgi-bin a backup pro doménu1.com a doménu2.com:

    mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup}
    mkdir -p public_html/domain2.com/{public,private,log,cgi-bin,backup}
    

Vytvořit index.html

Obsah veřejné složky je na vás, ale tento příklad používá velmi jednoduchý soubor HTML, abyste mohli zkontrolovat práci virtuálního hostitele.

  1. Pro každou doménu vytvořte soubor index.html:

    nano public_html/domain1.com/public/index.html
    
  2. Přidejte následující kód do souboru index.html:

    <html>
      <head>
        <title>domain1.com</title>
      </head>
      <body>
    
        <h1>domain1.com</h1>
      </body>
    </html>
    
  3. Opakujte proces, abyste měli podobný soubor pro doménu2.com. Nahraďte všechny výskyty domain1.com s domain2.com .

Definujte virtuální hostitele

Nyní máte základní strukturu pro své dvě domény, můžete definovat dva virtuální hostitele.

Recenze NameVirtualHost

U virtuálních hostitelů způsobuje nastavení NameVirtualHost často zmatek.

Každé rozhraní a port, na kterém je Apache nastaven k naslouchání, potřebuje direktivuNameVirtualHost. Direktivu můžete definovat pouze jednou za port.

V rozložení Apache pro operační systém Ubuntu je v ports.conf výchozí názevVirtualHostdirective soubor.

Spusťte následující příkaz a podívejte se na obsah ports.conf :

cat /etc/apache2/ports.conf

Měli byste získat následující výstup (pokud jste soubor předtím neupravili):

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

Výchozí nastavení NameVirtualHost splňuje současné požadavky – Apache použije logiku a nastavení virtuálního hostitele založenou na pojmenování pro požadavky HTTP provedené na libovolném dostupném rozhraní (*) na portu 80.

Poznámka :Umístění výchozí direktivy NameVirtualHost v ‘ports.conf’ je nové v rozložení Apache operačního systému Ubuntu; předchozí verze umístily podobné nastavení do výchozího vhost.

Definování vlastních virtuálních hostitelů

Nyní jste připraveni přidat své vlastní virtuální hostitele, abyste mohli začít obsluhovat své domény.

Vytvořte soubor vhost pro doménu1:

sudo nano /etc/apache2/sites-available/domain1.com.conf

Obsah vypadá následovně:

# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come

# domain: domain1.com
# public: /home/demo/public_html/domain1.com/

<VirtualHost *:80>

  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin [email protected]
  ServerName  domain1.com
  ServerAlias www.domain1.com


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Custom log file locations
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>

Povolte web

Povolte web následovně:

sudo a2ensite domain1.com

Výstup příkazu je následující:

Site domain1.com installed; run /etc/init.d/apache2 reload to enable.

Spusťte doporučený příkaz:

sudo /etc/init.d/apache2 reload

Chcete-li otestovat doménu bez vytvoření zóny DNS a záznamů na některých internetových jmenných serverech, můžete upravit soubor '/etc/hosts' na svém místním počítači tak, aby obsahoval některé položky mapující 'domain1.com', 'domain2.com' a ostatní na veřejnou IP adresu ukázkového cloudového serveru:

127.0.0.1    localhost
...

# entries related to the demo Cloud Server
123.45.67.890   domain1.com
123.45.67.890   www.domain1.com
123.45.67.890   domain2.com
...

Umístění souboru „hosts“ se liší v závislosti na tom, jaký operační systém je nahrán na vašem místním počítači.

Poznámka :Záznamy v souboru 'hosts' musí být odstraněny před testováním a použitím živých DNS zón a záznamů vytvořených na internetových jmenných serverech. Pokud je neodstraníte, může to z vaší strany vést k nejasnostem a nepřesným testům nových nebo upravených veřejných DNS záznamů.

S takovými změnami provedenými pro testovací účely můžete přejít na svůj web ve webovém prohlížeči v místním počítači a zobrazí se obsah souboru public/index.html.

Použít ServerAlias

Všimněte si, že v souboru vhost nastavíte ServerAlias. Pokud máte správně nastaven DNS, můžete také použít tuto adresu.

O vynucení jedné nebo druhé adresy si promluvíme v pozdějším článku o pravidlech přepisování.

Opakujte proces pro druhou doménu

Chcete-li vytvořit a povolit doménu2.com, opakujte postup následovně:

  1. Vytvořte soubor vhost:

    sudo nano /etc/apache2/sites-available/domain2.com
    ...
    # Enter the details for domain2.com as per the example shown above
    
  2. Povolte web a restartujte Apache:

    sudo a2ensite domain2.com
    ...
    sudo /etc/init.d/apache2 reload
    
  3. Přejděte do druhé domény:

    https://domain2.com
    or
    https://www.domain2.com
    

Měli byste vidět indexový soubor „domain2.com“.

Zobrazit soubory protokolu

Jak je definováno v souboru vhosts, každá doména má své vlastní soubory protokolu.

Seznam protokolů pro vaše domény:

ls /var/log/apache2/error-mydomainname.com.log

Výstup je přesně podle očekávání:

access.log  error.log

Výchozí soubor vhost

Ačkoli jste změnili výchozího virtuálního hostitele, nechali jste jej na svém místě.

Pokud někdo zadá IP adresu cloudového serveru, je mu doručen obsah tohoto výchozího souboru vhosts (pokud jste pro IP adresu nenastavili samostatný vhost).

Proč jsou obsluhovány z tohoto souboru vhost?

Apache prohledává povolené soubory vhost v abecedním pořadí, a pokud nemůže najít žádný pro požadovanou IP adresu nebo název domény, obslouží první (abecedně).

Pokud jste zakázali nebo odstranili výchozí soubor vhost, zobrazí se obsah domény1.com (v abecedním pořadí před doménou2.com).

To je něco, co je třeba vzít v úvahu při plánování vašich webových stránek. Chcete, aby konkrétní doména byla výchozí? Chcete, aby IP adresa měla úplně jiný obsah?

Nastavit e-mailovou adresu správce

Nastavte e-mailovou adresu správce serveru. Tato adresa se používá, pokud nastavíte server, aby vás kontaktoval, když dojde k chybě. Je také zobrazen v ServerSignature, pokud je jeho hodnota nastavena na Email. (Viz část Definování zápatí Apache .

ServerAdmin [email protected]

Nastavte název domény

Nastavte název domény (ServerName) pro virtuálního hostitele. Podle potřeby můžete mít tolik aliasů (ServerAlias). Například můžete mít domény.com a domain.net odkazovat na stejný obsah.

ServerName domain.com
ServerAlias www.domain.com

Poznámka :Toto není pravidlo přepisu, ale zde definované domény budou sloužit stejnému obsahu (za předpokladu, že jste nastavili DNS tak, aby ukazoval na vaši IP adresu cloudového serveru).

Definujte soubor indexu

Definujte soubor indexu (domovská stránka, která se zobrazí po zadání adresy domény). To je užitečné, pokud chcete, aby byl uživatel přesměrován na alternativní stránku nebo na nestandardní domovskou stránku.

DirectoryIndex index.html

Poznámka :Toto není dobrá metoda pro přesměrování uživatelů, protože mohou přejít přímo na blíže nespecifikovanou stránku, jako je doména.com/index.php, zatímco hodnota DirectoryIndex funguje pouze pro uživatele, kteří zadávají doménu.com.

Definujte cestu k dokumentům

Definujte umístění veřejných souborů domény. Použijte absolutní cestu.

DocumentRoot /home/demo/public_html/domain.com/public

Nastavte soubory protokolu

Nastavte úrovně protokolu a umístění souborů protokolu virtuálních hostitelů.

LogLevel warn
ErrorLog  /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined

Definujte chybové dokumenty

Nastavte ErrorDocument, který se používá pro všechny standardní chybové zprávy.

ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html

V tomto příkladu je ve veřejném adresáři složka „chyby“. Každý chybový dokument byl vytvořen a umístěn do složky chyb. Zobrazené cesty se vztahují k dříve definované složce DocumentRoot.

Pokud nejsou chybová hlášení definována, Apache generuje své vlastní chybové stránky. Vlastní chybové stránky jsou uživatelsky přívětivější a lze je přizpůsobit tak, jak chcete.

Definujte zápatí Apache

Definujte ServerSignature, chcete-li určit, zda se budou podrobnosti o serveru zobrazovat na chybových stránkách nebo seznamech indexů generovaných serverem. Možnosti jsou Zapnuto, Vypnuto a E-mail.

ServerSignature On

Úroveň podrobností v podpisu se konfiguruje pomocí ServerTokens, které nelze nastavit v souboru Virtual Hosts. Pro Apachelayout operačního systému Ubuntu je to správně nastaveno v „/etc/apache2/conf.d/security“. Další podrobnosti naleznete v článku Konfigurace Apache č. 2 NEED LINK.

Pokud je ServerSignature nastaven na E-mail , zobrazí se e-mail ServerAdmin.

Povolit cgi-bin

Povolte umístění cgi-bin, jak je definováno vlastním virtuálním hostslayout. Pokud chcete, můžete ponechat cgi-bin v umístění DocumentRoot.

ScriptAlias /cgi-bin/ /home/demo/public_html/domain.com/cgi-bin/
<Location /cgi-bin>
  Options +ExecCGI
</Location>

Nastavit možnosti adresáře

Nastavte možnosti pro zadaný adresář. Následující příklad povoluje možnost FollowSymLinks pro veřejný adresář ofdomain.com.

  Options FollowSymLinks

Níže jsou uvedeny další možnosti, které můžete nastavit:

Možnost procházení adresáře

Chcete-li vypnout procházení adresářů, použijte -Indexy. Chcete-li zapnout procházení adresářů, použijte +Indexy.

Options -Indexes

Možnost SSI

Povolit nebo zakázat Zahrnutí na straně serveru. Následující příklad zakáže.

Options -Includes

Povolte nebo zakažte možnost sledování symbolických odkazů. Buďte opatrní s touto možností, protože může vést k bezpečnostním rizikům (neúmyslné propojení s konfiguračními složkami).

Options -FollowSymLinks

Místo direktivyFollowSymLinks můžete zvážit použití direktivy SymLinksIfOwnerMatch. Direktiva SymLinksIfOwnerMatch umožňuje následovat symbolické odkazy pouze v případě, že vlastník odkazu je totožný s vlastníkem cílového souboru nebo adresáře (ve smyslu vlastnictví/oprávnění systému souborů Linux). To zabraňuje mnoha bezpečnostním rizikům, která může vytvořit jednoduchá směrnice FollowSymlinks.

Možnost .htaccess

Chcete-li zakázat podporu .htaccess, nastavte AllowOverride na None. Chcete-li povolit podporu, nastavte jej na Vše.

AllowOverride None

Můžete také určit, které funkce .htaccess povolit, například:

AllowOverride AuthConfig Indexes

Dokumenty ApachehtaccessandAllowOverride obsahují více informací o různých funkcích.

Nezapomeňte konkrétně chránit svůj soubor .htaccess. Můžete to udělat tak, že jej přejmenujete na něco nejasného a odepřete přístup k souboru z externích zdrojů:

AccessFileName .myobscurefilename
<Files ~ "^\.my">
    <SatisfyAll>
    Require all denied
    </SatisfyAll>
</Files>

Poznámka :Předchozí příklad je naformátován pro Apache 2.4. Pokud používáte 2.2, nahraďte ** Vyžadovat vše odepřeno ** za Povolit objednávky,Odmítnout | Odepřít ze všech | Spokojenosta .

Žádné možnosti

Zadáním možnosti Žádné vypnete všechny dostupné možnosti.

Options None

Hierarchie možností

Direktivy options lze nastavit pro každý adresář, jak ukazuje následující příklad:

  AllowOverride None
  Options None

AllowOverride All

První nastavení adresáře vypne všechny možnosti a vypne podporu.htaccess pro všechny adresáře.

Druhé nastavení adresáře by však přepsalo první a podporu allow.htaccess pro adresář domain.com/public.

Přehled

Soubor virtuálních hostitelů je jednoduchý, ale velmi výkonný nástroj. Doporučujeme zadat jedno nastavení a otestovat jej. Poté zadejte další nastavení a test a tak dále.

Jakmile se s ním seznámíte, uvidíte, že máte nad všemi svými webovými složkami a soubory jemnou kontrolu.


Linux
  1. Nakonfigurujte Apache v operačním systému Ubuntu

  2. Nakonfigurujte server MySQL na operačním systému Ubuntu

  3. Naplánujte restartování v operačním systému Ubuntu

  1. Změňte port SSH v operačním systému Linux Ubuntu

  2. Vytvořte virtuální hostitele CentOS NGINX

  3. Zakažte virtuálního hostitele v operačním systému Ubuntu a CentOS pro Apache a Nginx

  1. Nainstalujte IMAP pro PHP 7.1 na operační systém Ubuntu

  2. Nainstalujte MySQL Server na operační systém Ubuntu

  3. Nastavte Apache vhost na Ubuntu 20.04 a Debian 10