Toon posts:

[Apache] Virtual Hosts uit MySQL-dbase trekken. mogelijk?

Pagina: 1
Acties:
  • 132 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig een controlpanel voor mijn klanten te schrijven, en ik kan 2 kanten op: Of de authenticatie via een MySQL-dbase te doen met hierin alle wachtwoorden, óf op de 1 of andere manier alles via /etc/passwd te laten lopen. Dat laatste is eigenlijk vrijwel onmogelijk om veilig te kunnen doen, dus dan doen we proftpd zn settings ook via mysql laten laden enz enz...

Máár het lijkt me dus ideaal om dan ook de vhosts uit een dbase te kunnen halen..de tabellen zijn dan niet extreem moeilijk en het control panel is uiterst makkelijk eigenlijk. Het gaat overigens om name-based vhosts.

Ik heb gezocht met de search en google, maar omdat het allemaal redelijk algemene termen zijn schiet dat niet op....

Verwijderd

http://www.synthemesc.com/
mod_vdbh - Virtual Database Hosting Module
mod_vdbh is an Apache Web Server module allowing mass virtual hosting without the need for file based configuration. The virtual host paths are translated from a MySQL database at request time, thus the configuration can be changed without having to restart Apache Web Server.

Verwijderd

Topicstarter
thx man! Tjah sorry zoals ik al zei met die algemene zoektermen schoot het dus niet echt op :/ :)
mod_vdbh assumes that its connection to the MySQL server is persistent. If there are excessive disconnections try setting the wait_timeout variable for MySQL to a larger value. Apache Web Server 2.0 is required, and at least MySQL 3.23 is required.
hmm...Apache 2.0, daar moet ik nog even hard over nadenken, daar heb k hoop troubles destijds mee gehad met PHP. 1.3.37 voldoet tot nu toe nl. meer dan prima....

[ Voor 70% gewijzigd door Verwijderd op 08-02-2003 19:53 ]


Verwijderd

You're welcome. Heb 'm gevonden op http://modules.apache.org/ trouwens, mocht je nog meer voor apache nodig hebben ;)

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 01-05 14:55

Kees

Serveradmin / BOFH / DoC
The virtual host paths are translated from a MySQL database at request time
Scary, op GoT / Tweakers.net zou dat dus 40M queries per dag meer beteken, dat is best veel, en ook een redelijke performancehit.. als ik jou was zou ik toch eens iets proberen met een eigengemaakt scriptje die de gg uit de db trekt en vervolgens apache graceful restart.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 17-03 09:38
hmmm... ik ben ook met zoiets bezig voor onze server.

zat eigenlijk te denken aan een scriptje wat een file maakt met wat virtualhosts-dingen er in, die dan geinclude wordt in de apache-config (dus niet rechtstreeks de configfile editten).
users kunnen dan zelf subdomeinen toevoegen enzo.

Maak je eigen poll


Verwijderd

Topicstarter
hmmm zou dat niet te cachen zijn??

Maar ik zit me dan af te vragen hoe ik dit ga doen.

in de httpd een includefile geven naar een file met daarin alleen vhosts, die vervolgens door php/apache overschreven mogen worden. Dan zet ik de gegevens wel in een dbase maar die update ik dan als ze vhosts aanpassen, en laat op basis van die update een vhost-file schrijven??
BOOTZ schreef op 08 February 2003 @ 20:46:
hmmm... ik ben ook met zoiets bezig voor onze server.

zat eigenlijk te denken aan een scriptje wat een file maakt met wat virtualhosts-dingen er in, die dan geinclude wordt in de apache-config (dus niet rechtstreeks de configfile editten).
users kunnen dan zelf subdomeinen toevoegen enzo.
lol monderju ik was net wat later, schijnbaar zijn we telepatisch :D

[ Voor 39% gewijzigd door Verwijderd op 08-02-2003 20:47 ]


  • jep
  • Registratie: November 2000
  • Laatst online: 15:27

jep

Ik heb voor mijn klanten een vrij slim control-panel, al zeg ik 't zelf. Het virtualhost-deel is iets wat niet veel performance nodig heeft.

Een klant logged in op een systeem in php/mysql, en kan ik virtualhosts toevoegen, verwijderen en wijzigen. Na elke wijziging komt er in de database in een 'check' table een 0 of een 1. Dit komt in de check-table van server1, server2, server3, etc. Elke minuut draaien er vervolgens op alle servers scriptjes (klein scriptje) die kijkt of er in de table van server2 (bijv) een 1 staat. Als dat zo is zuigt hij de data binnen en maakt hij er virtualhosts van. Die virtualhost staan in een file die included is in de apache httpd.conf :).

Na dit alles krijgt apache een snelle graceful restart en zijn de vhosts doorgevoerd. Zo doe ik het ook voor e-mail. Wijzigingen zijn in het script aan te passen en werken op alle virtualhosts, het is snel en effectief, en het verwijderen van vhosts kan eigenlijk nooit mis gaan! :)

offtopic:
Ik wou ff op rentserver.nl kijken, maar is down ;(

[ Voor 5% gewijzigd door jep op 08-02-2003 20:55 ]


Verwijderd

Topicstarter
[offtopicghehe ik mag niet spammen, maar k ben voor mezelf doorgestart en sjoerd ook. rentserver.nl komt met een aantal dagen als het goed is weer up maar dan in een andere vorm.... Ik mail je zo wel ff :)[/offtopic]

Die checktable, die 1 geef je dan als er een wijziging is opgetreden, zoja dan krijgt apache een restart? Of begrijp ik je nu beetje verkeerd?

  • jep
  • Registratie: November 2000
  • Laatst online: 15:27

jep

Ja.

- Wijziging, 'check3' (server3) gaat krijgt een 1 in het id veldje.
- Mijn script ziet een 1 in het id veld, en weet dat er werk aan de winkel is
- Mijn script (perl) zuigt alles uit de db, en maakt er een goede virtualhost van, die komen in een file, die ik elke keer opnieuw aanmaak.
- Apache krijgt een graceful restart.

Als iemand nu een virtualhost delete, komt hij bij de volgende 'sqlsuck' niet meer voor in die file, en is hij ook echt weg. Kwa resources is dit een goede oplossing, bleek in onze situatie. Bij mij staan er nu zo'n 350 virtualhosts in de database die op die manier werken. Perfect!

offtopic:
Mail me gerust..

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 01-05 14:55

Kees

Serveradmin / BOFH / DoC
Is misbruik niet uitgesloten?
lijkt me dat het redelijk goed inelkaar moet zitten, anders kun je erg makkelijk een server laten crashen..

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Verwijderd

Topicstarter
je bedoelt snel achter elkaar wijzigingen doorvoeren zodat apache op ze bek gaat....?

hmm wat dacht je van een cronjob 1x in de 10 minuten of 15 minuten?? httpd restart...restarten van apache kost toch amper cpu dus das et probleem niet echt..Zou dat een oplossing zijn? Is gelijk voor mij een heel stuk simpeler, k kan geen perl nl :) beetje basic maar de reste niet :)

[ Voor 22% gewijzigd door Verwijderd op 08-02-2003 21:31 ]


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 01-05 14:55

Kees

Serveradmin / BOFH / DoC
neuh, ik doel meer op het feit dat je een vhost makkelijk zo kan verbouwen dat apache ervan op zijn bek gaat :)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • jep
  • Registratie: November 2000
  • Laatst online: 15:27

jep

Kees schreef op 08 februari 2003 @ 21:24:
Is misbruik niet uitgesloten?
lijkt me dat het redelijk goed inelkaar moet zitten, anders kun je erg makkelijk een server laten crashen..
Hoe dan? Kwestie van goed parsen. :) Directory's moeten bestaan, geen gekke tekens, niet te lang, geen spaties.

Dan gaat 't echt wel goed :).

[ Voor 17% gewijzigd door jep op 08-02-2003 23:30 ]


  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 17-03 09:38
dat is altijd het probleem...
het geheel moet user-proof zijn. een controle of er geen gekke dingen in staan is idd wel minimaal.
verder vindt apache het niet zo erg als een dir niet bestaat, of als je bij een bepaald ip geen vhosts hebt ingesteld, en dan start ie altijd nog wel

Maak je eigen poll


Verwijderd

http://sourceforge.net/projects/mod-sqlinclude/

zou het bij mijn weten ook moeten kunnen...

Verwijderd

Topicstarter
Hmm dat ziet er zeer goed uit :) Even mee gaan experimenten :P jullie horen nog van me

Verwijderd

Ik gebruik zelf ook SQLinclude, het compilen is wat irritant maar daarna werkt het perfect.

[ Voor 158% gewijzigd door Verwijderd op 10-02-2003 16:38 ]


Verwijderd

Topicstarter
Maar doet hij ook bij elke URL-req een sql-query uitvoeren?

Verwijderd

Nee natuurlijk niet(Uhmmm ooit van preformance gehoord), hij laad gewoon 1maal alle Virtualhosts en that's it(Standaard gaat Apache ook niet bij elke request zijn config doorlezen hoor!).

edit: Een beetje de manual's/HOWTO's doorlezen en zelf wat zoekwerk verichten zou ook helpen!, die module had je makkelijk kunnen vinden op google en voor de rest zijn daar howto's e.d. voor(nano README.txt).

[rml]-=[ Nieuw in NOS? Eerst dit lezen! GEEN HELPDESK! ]=-[/rml] :P

[ Voor 59% gewijzigd door Verwijderd op 10-02-2003 16:45 ]


Verwijderd

Topicstarter
Verwijderd schreef op 10 February 2003 @ 16:43:
Nee natuurlijk niet(Uhmmm ooit van preformance gehoord), hij laad gewoon 1maal alle Virtualhosts en that's it(Standaard gaat Apache ook niet bij elke request zijn config doorlezen hoor!).

edit: Een beetje de manual's/HOWTO's doorlezen en zelf wat zoekwerk verichten zou ook helpen!, die module had je makkelijk kunnen vinden op google en voor de rest zijn daar howto's e.d. voor(nano README.txt).

[rml]-=[ Nieuw in NOS? Eerst dit lezen! GEEN HELPDESK! ]=-[/rml] :P
Nou erm, als je misschien de discussie helemaal hebt doorgelezen, dan had je gezien dat we al 1 module hadden die dat dus wel deed, vandaar de vraag. Dus zo onlogisch is mijn vraag dus niet (zoals je het dus wel afschildert) Vóórdat ik een x-aantal uur werk in het installeren van iets steek, lijkt mij de vraag hoe het werkt niet heel onlogisch. Als die het namelijk dus wel doet, kan ik die uren beter steken in het proggen van een controlpanel dat ik hier ook nog in het topic zou kunnen zetten.

Dus een beetje liever mag wel :)

[ Voor 3% gewijzigd door Verwijderd op 10-02-2003 18:37 ]


Verwijderd

Verwijderd schreef op 10 February 2003 @ 18:36:
[...]
Dus een beetje liever mag wel :)
Sorry liev tweakertje :> ;)

toevoeging: Oh, jou controlpanel kun je daarop ook een max-dataverkeer opgegeven aan een virtualhost/domein-naam. Zo ja, hoe dan :P - ben daar zelf ook mee bezig en ik heb al een manier bedacht maar die is niet altijd even accuraat.

[ Voor 41% gewijzigd door Verwijderd op 10-02-2003 19:04 ]


Verwijderd

Topicstarter
nog niet, ik ben eerst bezig met verkennen maar voor mij wordt het perl gedeelte met name een probleem....Het php-gedeelte is een eitje maar perl ben ik niet zo thuis in...

Traffic meten ben ik voor aan het zoeken, er zijn wel wat scripts die de apache-logfiles interpreteren maar die moet je dan nog ff beetje ombouwen :)

Verwijderd

Verwijderd schreef op 10 februari 2003 @ 19:47:
nog niet, ik ben eerst bezig met verkennen maar voor mij wordt het perl gedeelte met name een probleem....Het php-gedeelte is een eitje maar perl ben ik niet zo thuis in...

Traffic meten ben ik voor aan het zoeken, er zijn wel wat scripts die de apache-logfiles interpreteren maar die moet je dan nog ff beetje ombouwen :)
Ja, zo doe ik het dus ook(gedeeltelijk) Perl lijkt heel veel op PHP dus dat zal wel niet zo moeilijk worden.

PS: Pas je prijzen eens aan, 300mb webspace is leuk maar als je dan maar 5gig bandverkeer hebt ik het compleet nutteloos :)

Verwijderd

Met php kun je overigens alles wat je met perl ook kunt...

Verwijderd

Perl kun je veel netter in een cron zetten :P

En met Perl kun je net wat meer..

[ Voor 31% gewijzigd door Verwijderd op 10-02-2003 20:32 ]


  • jep
  • Registratie: November 2000
  • Laatst online: 15:27

jep

Verwijderd schreef op 10 februari 2003 @ 20:13:
Met php kun je overigens alles wat je met perl ook kunt...
Perl is veel netter, en met php maak je geen systeem-scripts. Tenzij je een prutser bent ;).

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 01-05 14:55

Kees

Serveradmin / BOFH / DoC
Verwijderd schreef op 10 februari 2003 @ 20:31:
Perl kun je veel netter in een cron zetten :P
Dat is onzin, php kan je ook gewoon in een cron zetten, helemaal als je je file ff +x chmod en begint met #!/usr/local/bin/php -q
En met Perl kun je net wat meer..
klopt, perl is ook al wat ouder ;)

Maar dit gaat erg offtopic ;)

Dataverkeer kun je volgens mij redelijk makkelijk meten door ipv een logfile je zut naar een (bijvoorbeeld ;)) php scriptje te sturen die, zodra hij 100 waardes binnenheeft de boel in een db pleurt, dat is redelijk makkelijk te maken.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Verwijderd

jep schreef op 10 February 2003 @ 20:45:
[...]
Perl is veel netter, en met php maak je geen systeem-scripts. Tenzij je een prutser bent ;).
Second that motion.

Maar heeft de topic start nou niet al wat hij zocht.. :)

Verwijderd

Topicstarter
Verwijderd schreef op 10 February 2003 @ 19:58:
[...]

Ja, zo doe ik het dus ook(gedeeltelijk) Perl lijkt heel veel op PHP dus dat zal wel niet zo moeilijk worden.

PS: Pas je prijzen eens aan, 300mb webspace is leuk maar als je dan maar 5gig bandverkeer hebt ik het compleet nutteloos :)
hmm hd-ruimte wat verminderen ;)

Maar ik wilde perl als backend gaan gebruiken via cron dus....zoals jef t hierboven ook deed dus.. :)

Verwijderd

Deze topic gaat over Virtualhosting middels een DB en niet over Perl vs. PHP ;)

Dank u voor de aandacht :)

edit:
Sommige mensen schijnen wat moeite met lezen te hebben

[ Voor 27% gewijzigd door Verwijderd op 10-02-2003 21:01 ]


Verwijderd

offtopic:
[quote]Verwijderd schreef op 10 February 2003 @ 20:52:
Deze topic gaat over Virtualhosting middels een DB en niet over Perl vs. PHP ;)

Dank u voor de aandacht :)

[edit]Sommige mensen schijnen wat moeite met lezen te hebben[/edit][/quote]

Het is DIT topic :P


Maar goed, ik geloof dat SQLinclude verder naar behoren werkt nietwaar neographikal ?

[ Voor 21% gewijzigd door Verwijderd op 10-02-2003 21:02 ]


Verwijderd

Verwijderd schreef op 10 februari 2003 @ 21:01:
offtopic:
[quote]Verwijderd schreef op 10 February 2003 @ 20:52:
Deze topic gaat over Virtualhosting middels een DB en niet over Perl vs. PHP ;)

Dank u voor de aandacht :)

[edit]Sommige mensen schijnen wat moeite met lezen te hebben[/edit][/quote]
Het is DIT topic :P


Maar goed, ik geloof dat SQLinclude verder naar behoren werkt nietwaar neographikal ?

Zeg, is er wat me je ogen of niet :?

1 keer verwijder ik een reply van je; dan moet er voldoende duidelijk zijn!

Kijk verder maar eens in de Vandale dan zul je zien dat het deze/de topic is!

Verwijderd

Topicstarter
Verwijderd schreef op 10 February 2003 @ 21:03:

[...]

Zeg, is er wat me je ogen of niet :?

1 keer verwijder ik een reply van je; dan moet er voldoende duidelijk zijn!

Kijk verder maar eens in de Vandale dan zul je zien dat het deze/de topic is!
Ok ok, het topic verschoof ietwat richting het maken van een controlpanel waar dit wat mee gerelateerd is :)

Maar goed ik zal het in ieder geval eens gaan proberen :)

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 22:57

JaQ

Ik weet dat midgard (http://www.midgard-project.org) een meganisme heeft om uit een mysql database het vhosts bestand van apache aan te passen.

Dat meganisme werkt als volgt:
Als een nieuw klant wordt toegevoegd, dan wordt het vhosts bestand aangevuld.
Vervolgens wordt in /tmp een bestandje geplaatst. m.b.v. een cronjob wordt
gecontroleerd of dat bestand aanwezig is (heet iets van apache.restart,
verrassend genoeg ;) ) en, je raad het al, dan krijgt apache een schop.

Op zich werkt het redelijk moet ik eerlijk zeggen, maar aan de andere kant: een
cronjob die apache restart wanneer dat zo uitkomt (theoretisch zou dat dus max 1
x per minuut zijn) vind ik persoonlijk nogal lelijk.

Ik denk dat dynamisch virtual hosts toevoegen een beetje overbodige optie is voor
zo'n controlpanel (of wil je reseller worden?). pop3/imap mailboxen kan ik me nog
wat bij voorstellen, net zoals extra ruimte, maar voor een vhost lijkt me dat er toch
een domein zal moeten komen.

Nog even een kleine voetnoot: heb je er wel aan gedacht dat je sinds 1 januari als webhoster zelf verantwoordelijk bent voor de content op jouw machines
(ongeacht contracten die je hebt met je klanten). Ook moet je taps kunnen
plaatsen (veel succes met leren). De regelgeving is nogal veranderd...

Egoist: A person of low taste, more interested in themselves than in me


  • jep
  • Registratie: November 2000
  • Laatst online: 15:27

jep

DrFrankenstoner schreef op 11 February 2003 @ 00:17:
Nog even een kleine voetnoot: heb je er wel aan gedacht dat je sinds 1 januari als webhoster zelf verantwoordelijk bent voor de content op jouw machines
(ongeacht contracten die je hebt met je klanten). Ook moet je taps kunnen
plaatsen (veel succes met leren). De regelgeving is nogal veranderd...
Als ik taps voor mijn machine moet gaan hangen kan ik beter gelijk ophouden, en 95% van de internet providers met mij. Maar da's eigenlijk een ander topic ;).

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 22:57

JaQ

offtopic:
taps kan je tegenwoordig huren.. (wel prijzig), ik weet van in ieder geval 2 ISP's die ze via
een SLA "regelen", maar goed: daz offtopic

Egoist: A person of low taste, more interested in themselves than in me


  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
Hoe ziet zo'n httpd.conf eruit mbt mysql ?

Ik heb met moeite de module mod_sqlinclude-1.4 gecompileerd.
Ik heb een testdatabase aangemaakt en ik heb mijn parameters in de httpdconf gezet.

SQL_ServerName localhost
SQL_SQLUser naam
SQL_SQLPassword wachtwoord
SQL_SQLDB apache
SQL_UseNameColumn On
SQL_Include "SELECT DATA,name FROM include"

Als ik nu een virtuele host in de database zet dan werkt deze niet terwijl wanneer ik apache herstart ik geen error krijg.

Is hier trouwens een tool voor ?

Jaja de paprika


Verwijderd

Oplossing zonder MySQL:

code:
1
2
UseCanonicalName Off
VirtualDocumentRoot /hosting/sites/%-2.0.%-1/DOMAINS/%-3+/


Nu komen de websites in /host/sites/domein.nl/DOMAINS/virthostname

je chroot de FTP gebruiker in de DOMAINS directory zodat ie zelf met ftp virtual hosts kan aanmaken. Je hoeft dan nog alleen je DNS entries aan te passen om de virtual host ook werkelijk te activeren, en om klanten eventueel per vhost te laten betalen :+

Als DNS server zou je PowerDNS kunnen overwegen, die prima met een MySQL server werkt. Op die manier kun je ook daar makkelijk entries toevoegen zonder gekloot met scriptjes op de server wat niet echt mijn voorkeur heeft...

(en direct activeren roelt :))

[ Voor 3% gewijzigd door Verwijderd op 12-02-2003 10:14 ]


Verwijderd

Verwijderd schreef op 12 February 2003 @ 10:13:
Oplossing zonder MySQL:

code:
1
2
UseCanonicalName Off
VirtualDocumentRoot /hosting/sites/%-2.0.%-1/DOMAINS/%-3+/


Nu komen de websites in /host/sites/domein.nl/DOMAINS/virthostname

je chroot de FTP gebruiker in de DOMAINS directory zodat ie zelf met ftp virtual hosts kan aanmaken. Je hoeft dan nog alleen je DNS entries aan te passen om de virtual host ook werkelijk te activeren, en om klanten eventueel per vhost te laten betalen :+

Als DNS server zou je PowerDNS kunnen overwegen, die prima met een MySQL server werkt. Op die manier kun je ook daar makkelijk entries toevoegen zonder gekloot met scriptjes op de server wat niet echt mijn voorkeur heeft...

(en direct activeren roelt :))
Ook een hele goeie oplossing inderdaad, maar dan wordt het aanpassen(edit'en) van de virtualhosts weer zo'n klote werk.

Als je een beetje met PHP/Perl overweg kan is het plaatsen in een mySQL database op de lange termijn vele malen handiger.
Pagina: 1