Portál AbcLinuxu, 5. května 2025 21:20

Dotaz: Dynamický virtualhost

Mr.Yoda avatar 10.11.2007 11:04 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Dynamický virtualhost
Přečteno: 3590×
Odpovědět | Admin
Zdravim, potřeboval bych nakopnout ve směru virtualhostů..

Weby mám umístěné ve složce /var v tom doménu 2. řádu a v ní co složka to doména 3. řádu.

Příklad /var/www/domena.tld/www
             /var/www/domena.tld/upload

Chtěl bych se dopracovat k tomu, když vytvořim ve složce domena.tld složku, bude se chovat jako doména 3. řádu

Nějaké rady popřípadě link?
Už několik dní hledam, bohužel buď asi nehladam to co bych měl, nebo už opravdu nevím jak na to.
:-* Debian
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.11.2007 11:16 ycuzo | skóre: 3
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Odpovědět | | Sbalit | Link | Blokovat | Admin
virtual host vytvoris jednoducho,uz som tu raz uviedol jeden priklad,jednoduche a efektivne :) Cize,kazdy folder ktory vytvoris v podadresary _/sub/ bude automaticky subdomena.
<VirtualHost xxx.xxx.x.xx>
    UseCanonicalName Off
    ServerName www.xx.ws
    ServerAlias *.xx.ws
    DocumentRoot "/web/html/xx.ws/public_html"
#VirtualDocumentRoot "/web/html/%-2.0.%-1.0/public_html"

RewriteEngine On

RewriteCond %{HTTP_HOST}   !^www\.xx\.ws$ [NC]
RewriteCond %{HTTP_HOST}   ^(.*\.)?([^\.]+)\.xx\.ws$ [NC]

RewriteRule  ^(.*)$  /_sub/%2$1  [L]
#
<Directory "/web/html/xx.ws/public_html">
   Options None FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

  ErrorLog /web/html/xx.ws/logs/error_log
  CustomLog /web/html/xx.ws/logs/access_log common
</VirtualHost>
Mr.Yoda avatar 10.11.2007 11:30 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

Tak jsem zase skončil.. web jede, ale nemá to žádnej vliv.
Pokud povolim mod_rewrite.so, tak nenajede apache..
:-* Debian
Mr.Yoda avatar 10.11.2007 12:06 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
I když přidam do apache2.conf řádek

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Web se sice rozjede, ale jakmile přidam ten wirtualhost s rewriterule, nenaskočí apache2 :(
:-* Debian
Mr.Yoda avatar 10.11.2007 12:18 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
V phpinfo
Loaded modules mám mod_rewrite
:-* Debian
Mr.Yoda avatar 10.11.2007 21:24 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Nobody knows?
:-* Debian
Josef Kufner avatar 11.11.2007 03:38 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Na mod_rewrite se vybodni, VirtualDocumentRoot funguje krásně a jednoduše.
Hello world ! Segmentation fault (core dumped)
Mr.Yoda avatar 11.11.2007 12:43 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
No jasně, ale jak pak zapnu/vypnu pro určitou doménu safe mod ?
:-* Debian
Josef Kufner avatar 14.11.2007 18:33 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Pak máš ještě možnost si ty konfiguráky nechat vygenerovat z nějaké databáze...
Hello world ! Segmentation fault (core dumped)
10.11.2007 21:42 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Odpovědět | | Sbalit | Link | Blokovat | Admin
Link: Dynamically configured mass virtual hosting.
Mr.Yoda avatar 10.11.2007 23:11 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Stále nic, asi to mam zakletý..
:-* Debian
11.11.2007 16:36 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Co to znamená „stále nic“? Očekávla bych s=íš odpověď typu „můj konfigurák momentálně vypadá takhle, mám adresář tena ten a v něm soubor index.html, když zadám do přohlížeče adresu bflmpszv, vyprší spojení, zborazí se chyba 404 nebo 500 a v logu je toto…“ Hvězdičku v DNS předpokládám nastavenou máte…
11.11.2007 16:43 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Omlouvám se za tu spoustu překlepů, asi bych si měl ten spellchecker v Opeře rozchodit…
Mr.Yoda avatar 11.11.2007 21:02 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
<VirtualHost 82.100.17.17>
    UseCanonicalName Off
    ServerName www.warez-best.cz
    ServerAlias *.warez-best.cz
    DocumentRoot "/var/www/warez-best.cz/www/"
#VirtualDocumentRoot "/web/html/%-2.0.%-1.0/public_html"

RewriteEngine On

RewriteCond %{HTTP_HOST}   !^www\.warez-best\.cw$ [NC]
RewriteCond %{HTTP_HOST}   ^(.*\.)?([^\.]+)\.warez-best\.cz$ [NC]

RewriteRule  ^(.*)$  /%2$1  [L]
#
<Directory "/var/www/warez-best.cz/">
   Options None FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

  ErrorLog /var/log/apache2/error_warez-best.cz.log
  CustomLog /var/www/apache2/access_warez-best.cz.log common
</VirtualHost>
Do prohlížeče můžu zadat cokoliv, apache napíše failed! a v logu nic neni, nenaběhne. :(
:-* Debian
12.11.2007 09:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Vždyť tam to VirtualDocumentRoot máte zakomentované…
14.11.2007 16:12 ycuzo | skóre: 3
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Vždyť tam to VirtualDocumentRoot máte zakomentované…
No jasne ze to ma byt zakomentovane,ked sa pouziva mod_rewrite, VirtualDocumentRoot je pre mod_vhost_alias :)

Je tu este jedna moznost,kedysi davno som to nastavil takto:

<VirtualHost 82.100.17.17>
  UseCanonicalName Off
  ServerName www.warez-best.cz
  ServerAlias *.warez-best.cz
  DocumentRoot "/var/www/warez-best.cz/www/"

<Directory "/var/www/warez-best.cz/">
   Options None FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

  ErrorLog /var/log/apache2/error_warez-best.cz.log
  CustomLog /var/www/apache2/access_warez-best.cz.log common
</VirtualHost>

#
#  subdomain config =>
#============================================

<VirtualHost 82.100.17.17>
   UseCanonicalName Off
   VirtualDocumentRoot "/var/www/warez-best.cz/_sub/%-3"
   ServerName www.warez-best.cz
   ServerAlias *.warez-best.cz
  <Directory "/var/www/warez-best.cz/_sub/*">
    AllowOverride All
    Options None
    Order allow,deny
   Allow from all
 </Directory>

</VirtualHost>

Skus takuto variantu Inac cez to rewrite to funguje naprosto bezvadne,len ci mas vsetko nastavene ako treba.... Dodatocne prikladam vycuc s httpd.conf
#############################################################
### Dynamic Shared Object (DSO) Support
### 
###
#LoadModule mmap_static_module modules/mod_mmap_static.so
LoadModule env_module         modules/mod_env.so
LoadModule config_log_module  modules/mod_log_config.so
LoadModule agent_log_module   modules/mod_log_agent.so
#LoadModule referer_log_module modules/mod_log_referer.so
#LoadModule mime_magic_module  modules/mod_mime_magic.so
LoadModule mime_module        modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule status_module      modules/mod_status.so
#LoadModule info_module        modules/mod_info.so
LoadModule includes_module    modules/mod_include.so
LoadModule autoindex_module   modules/mod_autoindex.so
LoadModule dir_module         modules/mod_dir.so
#LoadModule cgi_module         modules/mod_cgi.so
LoadModule asis_module        modules/mod_asis.so
#LoadModule imap_module        modules/mod_imap.so
LoadModule action_module      modules/mod_actions.so
#LoadModule speling_module     modules/mod_speling.so
LoadModule userdir_module     modules/mod_userdir.so
#LoadModule proxy_module       modules/libproxy.so
LoadModule alias_module       modules/mod_alias.so
LoadModule rewrite_module     modules/mod_rewrite.so
LoadModule access_module      modules/mod_access.so
LoadModule auth_module        modules/mod_auth.so
#LoadModule anon_auth_module   modules/mod_auth_anon.so
#LoadModule dbm_auth_module    modules/mod_auth_dbm.so
#LoadModule db_auth_module     modules/mod_auth_db.so
#LoadModule digest_module      modules/mod_digest.so
#LoadModule cern_meta_module   modules/mod_cern_meta.so
#LoadModule expires_module     modules/mod_expires.so
#LoadModule headers_module     modules/mod_headers.so
#LoadModule usertrack_module   modules/mod_usertrack.so
#LoadModule example_module     modules/mod_example.so
#LoadModule unique_id_module   modules/mod_unique_id.so
LoadModule setenvif_module    modules/mod_setenvif.so
#
LoadModule vhost_alias_module	modules/mod_vhost_alias.so
#

#  Reconstruction of the complete module list from all available modules
#  (static and shared ones) to achieve correct module execution order.
#  [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
ClearModuleList
#AddModule mod_mmap_static.c
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_log_agent.c
#AddModule mod_log_referer.c
#AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
#AddModule mod_status.c
#AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
#AddModule mod_cgi.c
AddModule mod_asis.c
#AddModule mod_imap.c
AddModule mod_actions.c
#AddModule mod_speling.c
AddModule mod_userdir.c
#AddModule mod_proxy.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
#AddModule mod_auth_anon.c
#AddModule mod_auth_dbm.c
#AddModule mod_auth_db.c
#AddModule mod_digest.c
#AddModule mod_cern_meta.c
#AddModule mod_expires.c
#AddModule mod_headers.c
#AddModule mod_usertrack.c
#AddModule mod_example.c
#AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_setenvif.c
#
<IfDefine HAVE_PHP4&qt;
 AddModule mod_php4.c
</IfDefine&qt;
#
AddModule mod_vhost_alias.c

15.11.2007 08:27 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Osobně mi řešení přes mod_rewrite nepřipadá příliš vhodné, protože pak jméno serveru a cesty jsou jinak na serveru a jinak v prohlížeči – a až se server pokusí vygenerovat jméno souboru nebo cestu do chybové hlášky, odkáže někam úplně jinam.
16.11.2007 22:04 ycuzo | skóre: 3
Rozbalit Rozbalit vše Re: Dynamický virtualhost
No cez ten rewrite je to take celkovo vesele,neviem preco meno serveru by malo byt inac ? Ved sa jedna iba o akysi prefix
RewriteRule ^(.*)$ /_sub/%2$1 [L] ,co znamena
DocumentRoot "/web/html/xx.ws/public_html/_sub/nejakemeno" Ale spatnym nastavenim mozu vzikat problemy,este veselsie je ak sa to roby priamo cez .htaccess v documentroot :) vtedy zacina ozajstna sranda...
Ano cez vhost_alias to asi menej zatazuje server a je to asi sviznejsie. Kazdopadne na nete su tony configurakov.... Este jedna vec malinko rozdiely budu na apache2 ja pouzivam apache1.3.x
Mr.Yoda avatar 15.11.2007 17:16 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Díky moc, chlape! Podle tvého návodu mi to funguje.
:-* Debian
7.1.2008 18:33 Kodl
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Řeším obdobný problém akorát trochu rozšířený. Do součastné doby jsem subdomény řešil ručním přidávání VirtualHostů ale už jich mám nad 10, takže bych to chtěl trochu zautomatizovat.

Mám adresář /var/htdocs/domena.tld/ kde jsou jednotlivé subdomény pro doménu domena.tld. Nastaveno je to pomocí mod_vhost_alias jako VirtualHost pro *domena.tld. Jenže když zadám do prohlížeče jen domena.tld nezobrazí se nic (chybová hláška 404 Objekt nenalezen), stejně tak, jako když zadám neexistující subdoménu. Jak zajistím aby se v těchto případech zobrazila třeba subdoména www (tzn. složka www). Chtěl bych aby to fungovalo podobně jako to mají třeba na Pípni (pokud neexistuje subdoména, zobrazí se stránka v adresáři www). A taky kdyby někdo zadal www.subdomena.domena.tld by to mělo zobrazit obsah adresáře subdomena a ne obsah adresáře www :)

Zkoušel jsem vytvořit samostatný VirtualHost jen pro ServerName domena.tld, jenže to mi pak nebralo ten druhý VirtualHost v VirtualDocumentRoot.

Výcuc z aktuální konfigurace:
<VirtualHost *:80>
    ServerName *domena.tld
    DocumentRoot /var/htdocs/domena.tld/www/

    UseCanonicalName Off
    VirtualDocumentRoot /var/htdocs/domena.tld/%1
</VirtualHost>
Taky mě napadlo řešit to pomocí ErrorDocument, jenže to je popravdě trochu nevyhovující řešení.
Mr.Yoda avatar 7.1.2008 22:45 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
<VirtualHost *:80>
    ServerName *domena.tld
    ServerAlias www.domena.tld
    DocumentRoot /var/htdocs/domena.tld/www/

    UseCanonicalName Off
    VirtualDocumentRoot /var/htdocs/domena.tld/%1
</VirtualHost>
:-* Debian
7.1.2008 23:41 Sinuhet | skóre: 31
Rozbalit Rozbalit vše Re: Jaderné noviny - 12. 12. 2007
Nema to byt obracene?
<VirtualHost *:80>
    ServerName www.domena.tld
    ServerAlias *.domena.tld
    DocumentRoot /var/htdocs/domena.tld/www/

    UseCanonicalName Off
    VirtualDocumentRoot /var/htdocs/domena.tld/%1
</VirtualHost>
Mr.Yoda avatar 8.1.2008 06:29 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Jaderné noviny - 12. 12. 2007
Pak ale jsetli dobře chápu, tak ServerName by mělo vypadat bez *. -> ServerName domena.tld. Pokud ne, asi se umeju a jdu do školy.
:-* Debian
8.1.2008 11:00 Kodl
Rozbalit Rozbalit vše Re: 12. 12. 2007
Což o to, takhle mi funguje, ale já chci aby se zobrazila stránka www.domena.tld i když zadám jenom domena.tld bez www. Stejně tak chci, že když zadám neexistující subdoménu neexistuje.domena.tld že to zobrazí www.domena.tld.
Zdeněk Zámečník avatar 2.6.2008 23:48 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: 12. 12. 2007
Nevím, jak moc vám tohle pomůže, ale mne napadlo to řešit například následovně. Neumí to však přesměrování při každé neexistující subdoméně. To by to chtělo ještě dotáhnout do konce. Momentálně to umí přesměrovat neexistujicisubdomena.subdomena.domena.tld na subdomena.domena.ltd a rovněž domena.tld na www.domena.tld. To celé plně automatizované.
NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost


        VirtualDocumentRoot /var/www/%-2.0.%-1/%-3     #smeruje do /var/www/domena.tld/subdomena

        RewriteEngine   On
        RewriteCond     %{HTTP_HOST}    ^([^.]*)\.([^.]*)$   #kdyz je adresa ve formatu domena.tld
        RewriteRule     (.*)            http://www.%{HTTP_HOST}  #presmeruj na www.domena.tld


        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ServerSignature On
</VirtualHost>
Pokud máte někdo další nápady, jak konfiguraci ještě více zlepšit, pište :)
Mr.Yoda avatar 3.6.2008 00:02 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: 12. 12. 2007
www.domena.cz a domena.cz je vyřešena, ne?
:-* Debian
Zdeněk Zámečník avatar 3.6.2008 09:19 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: 12. 12. 2007
No já nevím, mě to předchozí bez www nefungovalo, ale možná jsem někde dělal chybu. A hlavně tady byla řeč o nějaké automatizaci a v tom je toto o kousek dál.
Mr.Yoda avatar 3.6.2008 09:45 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: 12. 12. 2007
J, to je pravda, ale snad někde jsem četl, že přes mod_rewrite je něco špatně, bohužel nevím co.. Zkusím pohledat..
:-* Debian
Zdeněk Zámečník avatar 3.6.2008 13:03 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: 12. 12. 2007
Ano, je špatné přes mod_rewrite podstrkovat, resp. mod_rewritem nahrazovat vhost, protože např. chybové hlášky pak ukazují uplně jinou cestu, dále to může vytvářet další komplikace s uživatelským .htaccess. Tady ale však mod_rewrite využívám pouze k čistému přesměrování (ne podstrkávání) domena.tld na www.domena.tld. Tudíž v tom použití tyto problémy nevznikají :)
cooler avatar 3.6.2008 14:45 cooler | skóre: 19 | Medzilaborce
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chlapi niejak to komplikujete a je to uplne jednoduche. Zhrniem:

1) Nastavim wildcard pre domenu
2) LoadModule vhost_alias_module /usr/lib/apache2/modules/mod_vhost_alias.so
3) Nastavim v apache.conf VirtualDocumentRoot /%-2.0.%-1.0/%1
4) Aby fungovalo bez www, pouzijeme rewrite na presmerovane vsetkych domien druheho radu na www.domena.tld:
RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+)$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}$1 [L,R=301,QSA]
5) web uploadneme do HTTP_DOC/domena.tld/www/
Zdeněk Zámečník avatar 3.6.2008 21:51 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Pěkné, ale nějak (až na pár maličkostí) v tom nevidím zásadní rozdíl od toho, co jsem tady o kousek výš zveřejnil ;)
Mr.Yoda avatar 3.6.2008 22:48 Mr.Yoda | skóre: 17 | blog: jakub | Louny
Rozbalit Rozbalit vše Re: Dynamický virtualhost
:-D
:-* Debian
cooler avatar 5.6.2008 10:59 cooler | skóre: 19 | Medzilaborce
Rozbalit Rozbalit vše Re: Dynamický virtualhost
Sa priznam, ze som tu diskusiu nedocital do konca, lebo sa velmi tiahla takze mi prislo rychlejsie napisat svoj navod.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.