VirtualHosts

Když tvořím webové projekty, vždy si vytvořím na cloudu složku, kam nahraju svůj systém. Poté si „vytvořím“ doménu prvního řádku a tu nasměruji do oné složky. Takto mám projekty rozdělené a přistupuji k nim přes různé adresy. Na localhost mám pak stromovou strukturu testovacích souborů a adresářů, které jsou ve zvláštní složce, pouze pro testování nových fcí PHP atp.

Instalace XAMPP – můj článek zde

Tento program vám pomůže přidat záznam do hosts (pro nasměrování domény) a do apache VirtualHosts configu pro přesměrování domény na určitý adresář. To můžete samozřejmě udělat i s nějakou doménou druhého řádu. Pokud chcete mít na svém PC testovací server, pak si koupíte doménu, nasměrujete ji na svoji IP a pak pomocí tohoto programu vytvoříte subdomény pro různé projekty a můžete na nich pracovat týmově :) Doporučuji napojit na cloudové úložiště nebo nějaký verzovací systém. Poté kdokoliv bude něco psát tak mu to IDE automaticky uloží a nemusí řešit nějaké uploadování někam :)

Pozor: Program edituje systémový soubor „hosts“ a je tak vysoká pravděpodobnost, pokud máte antivirový program, že bude vyhodnocen jako virus nebo že při snaze k tomuto souboru přistoupit napíše chybu. Je třeba jej označit za důvěryhodný a povolit mu tuto operaci. Nebo soubor hosts upravovat manuálně.

Nastavení musí obsahovat:

  1. Cestu k vhosts: C:\xampp\apache\con­f\extra\httpd-vhosts.conf
  2. Cestu k hosts: C:\Windows\Sys­tem32\drivers\et­c\hosts

Uvedené cesty jsou ilustrativní, ve vašem počítači se mohou lišit.

Doporučení bezpečnosti:

Doporučuji nastavit v php.ini open_basedir open_basedir = "C:\Users\David\Dropbox\Programming\PHP;C:\xampp\tmp" tmp adresář je důležitý kvůli uploadu souborů.

Protože jinak je možné libovolně editovat soubory kdekoliv ve vašem počítači :) Pro více možností se podívejte sem: http://stackoverflow.com/…ot-directory

Nastavení httpd.conf

Nasměrování na výchozí složku

DocumentRoot "C:\Users\David\Dropbox\Programming\PHP"
<Directory "C:\Users\David\Dropbox\Programming\PHP">

Pro nastavení nějaké domény 2 řádu, aby fungovala i se subdoménami:

# aliases

# POZOR! pokud máte povolený port 80 ve vašem routeru, pak toto umožní vzdálený přístup! - viz níže
<VirtualHost *:80>
ServerName http://example.com
ServerAlias *.example.com
DocumentRoot "..." # cesta pro výchozí doménu example.com a její neplatné subdomény
</VirtualHost>

# omezit pouze na lokální pc
# pozn. je třeba povolit: LoadModule authz_host_module modules/mod_authz_host.so v souboru httpd.conf
<VirtualHost *:80>
<Location />
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>
ServerName http://example2.com
ServerAlias *.example2.com
DocumentRoot "..."
</VirtualHost>


# pro zbytek neplatných subdomén libovolných domén nasměrovaných na server

<VirtualHost *:80>
ServerName http://something.tld
ServerAlias *
DocumentRoot "..." # sem budou odkazovat všechny domény a subdomény které nejsou nastavené v apache
</VirtualHost>

Vypnutí informací o serveru a zamezení výpisu souborů

ServerSignature Off
ServerTokens Prod

Options -Indexes

Pokud narazíte na nějakou chybu nebo si uděláte nějaké vylepšení, prosím napište mi to do komentářů. Program jsem dělal pro své využití a popisuji tady, jakým způsobem tuto problematiku řeším, abych to mohl v budoucnu použít nebo na to někoho odkázat. Děkuji :)

Zdrojové kódy jsem nepřidával, jelikož nejsou okomentované a psal jsem to narychlo, neboť jsem byl líný při vytváření jednoho projektu dělat to manuálně, tak jsem narychlo zbalastil prográmek, co to pošéfí za mě :) Ale pokud zdvořile požádáte a nebudou následovat žádné dotazy a ponuky, že to je hrozný, tak rád zašlu :)

Ad. Bezpečnostní poznámka: Pokud budete mít povolený port 80 ve vašem routeru, pak stačí, aby si kdokoliv napsal do souboru hosts žádek „vaše_ip localhost“ a dostane se k vám. Pozor na to!!! Buďto použijte uvedenou ochranu nebo neforwardujte porty :)

Galerie

Ke stažení

Soubor VirtualHosts.exe 659x (458.5 kB)

3 reakcí k "VirtualHosts"
Přidat příspěvek

  • avatar
    5. 12. 2016
    Odpovědět Odkaz
    mario

    cau, diky za super clanek. vse mam nastavene, virtual hosti funguji. jen mam malicky problem – DocumentRoot nastavim na /var/www/ ale v php skriptu se pres ./../../ dostanu az do rootu serveru. Je mozne to konfiguraci apache nejak omezit? nebo je nutne to resit opravnenim uzivatele? dik :-)

    • avatar
      15. 12. 2016
      Odpovědět OdkazOdpovídá na
      sczdavos

      Ahoj,

      ano, je to v článku uvedeno část „Doporučení bezpečnosti“. V PHP pomocí open_basedir direktivy. V Apache (.htaccess) php_admin_value open_basedir. Více info + ukázky viz. výše v článku.

      Směj se.

      David

      Čím více času dostaneš, tím méně ho máš.

      • avatar
        16. 12. 2016
        Odpovědět OdkazOdpovídá na
        mario

        ahoj, díky moc za odpověď, ale – to neřeší problém virtuál hostů, ne?