Debian Apache Virtual Hosts op VPS

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
Hey all,

Ik heb sinds kort een VPS, en ben hier drie dagen geleden zonder eerdere Linux kennis mee aan de slag gegaan. Ik probeer hier een webserver in op te zetten, maar loop vast bij het aanmaken van virtual hosts. Wat in ieder geval wel is gelukt is het installeren van Debian 7, Apache, PHP, MySQL en het opzetten van ProFTPd inclusief gebruikers.

De situatie op dit moment:
Ik heb een VPS met een enkel IP adres, neem als voorbeeld 123.45.678.90. Het is gelukt om een virtual host aan te maken in /etc/apache2/sites-available. Als vervolgens ik het IP van mijn VPS in /etc/hosts hieraan koppel gaat hij naar de juiste directory bij het bezoeken van http://123.45.678.90 .

Voor deze opzet heb ik deze tutorial gebruikt.

Dit zijn de velden die ik op dit moment heb aangepast in /etc/sites-available/test

code:
1
2
3
4
5
<VirtualHost *:80>
        ServerAdmin test@localhost
        ServerName 123.45.678.90

        DocumentRoot /var/www/test/public_html


En dit staat in mijn /etc/hosts file
code:
1
123.45.678.90   test

spoiler-tags vervangen door code-tags, het mysterie is al groot genoeg - CAPSLOCK2000

Gewenste situatie
Ik zou graag Virtual Hosts willen met subdomeinen op deze server. Het liefste iets als 123.45.678.90/websitenaam of websitenaam.123.45.678.90. Is dit mogelijk of moet ik om dit te bereiken een domeinnaam aanschaffen en deze aan de VPS koppelen?

Als er dingen onduidelijk zijn, hoor ik het graag. Alvast bedankt!

[ Voor 3% gewijzigd door CAPSLOCK2000 op 16-01-2014 00:41 ]


Acties:
  • 0 Henk 'm!

  • Thc_Nbl
  • Registratie: Juli 2001
  • Laatst online: 21-05 22:24
Nou, ik zal je wat tips geven.
je kan er zoveel site op zetten als je server kan hebben dus..

je hebt 2 manieren om je site te benaderen.
1 via ip
2 via de hostname.domein.tld

als je zo'n default pakt van debian.
heb je *:80 als namevirtual host staat, dat wil zeggen, alle websites.

en verder zeg ik ga deze maar eens lezen, is wel in het engels maar een redelijke basis om mee te beginnen denk ik.

http://www.debian-administration.org/articles/412

ehhh.. noppes


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 13:16

CAPSLOCK2000

zie teletekst pagina 888

In jouw geval wil je "name based virtual hosts" gebruiken.
Je moet een DNS-naam invullen bij ServerName, zeker geen IP-adres.
Voor iedere vhost moet je een aparte DNS-naam aanmaken (dat kan ook via je hosts-file maar dan kunnen anderen er niet bij, als test voor je zelf voldoet dat echter wel).

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 01-10 08:15

deadinspace

The what goes where now?

eXtreaL schreef op woensdag 15 januari 2014 @ 22:39:
Ik zou graag Virtual Hosts willen met subdomeinen op deze server. Het liefste iets als 123.45.678.90/websitenaam ...
Daarvoor heb je geen virtualhosts nodig; je kunt gewoon een subdirectory "websitenaam" onder de document root aanmaken, en die is dan zo benaderbaar.

Als alternatief zou je de virtualhosts op verschillende poorten kunnen draaien, dan krijg je http://123.45.678.90:81/ bijvoorbeeld.
... of websitenaam.123.45.678.90.
Dat is alleen mogelijk met domeinnaam.

Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
Ok, ik heb nu een domeinnaam aangeschaft. Nu wil ik deze koppelen aan mijn VPS, maar hier moet ik mijn nameservers voor invullen. Ik heb gevonden dat je je nameservers kunt vinden door het commando "cat /etc/resolv.conf" uit te voeren, maar als ik deze invul geeft Versio aan dat de nameservers ongeldig zijn.

Acties:
  • 0 Henk 'm!

  • Thc_Nbl
  • Registratie: Juli 2001
  • Laatst online: 21-05 22:24
Je kan elke dns server invullen zo ook die van google b.v.
set het volgende in je resolv.conf

search jedomeinnaam.nl
domain jedomeinnaam.nl
nameserver IP_Nummer1
nameserver IP_Nummer2

max 3 .

en kijk op die link die ik je eerder gegeven heb hoe je evt je apache vhost kan instellen.

vergeet niet in je host je naam goed te zetten, dan kan je server altijd zijn eigen naam resolven.
zet het er zo in
127.0.0.1 localhost localhost.localdomain
123.45.678.90 test.domein.nl test ( en evt ook domein.nl )
hangt er vanaf wat je in je apache zet en waar je apache naar wilt laten luisteren.

even als voorbeeld voor je.
ik kom aan met www.jedomein.nl apache reageert, kijkt in de servername en serverliasname en de betreffende vhost reageert.
als ik hetzelfde doe, maar dan kom ik op je server via je ipnummer kan dit dus een ander vhost zijn.

ik zorg altijd dat alles bekend is in apache.
vhost localhost en aliasname 127.0.0.1 ::1
vhost ip
vhost www.website.nl met alias website.nl ( en evt ip kies )

voordeel, zet vhost ip naar een folder met alleen een index.html erin en een robot.txt
alle scriptkiddies die op ip scannen lopen daar in stuk ..

als je phpmyadmin geinstalleerde heb en je hebt apache gekozen, doe dan even dpkg-reconfigure -plow phpmyadmin en kies dan niets. zo zal phpmyadmin niet altijd actief zijn voor alle websites.

include deze in de vhost als het nodig is. met Include /etc/phpmyadmin/apache.conf (of apache2.conf)

ow en als tip. je kan een gratis officieel website certificaat krijgen via : http://www.startssl.com/

let wel, het certificaat bij common name zet je neer : www.jesite.nl en deze werkt alleen op deze naam.
dus geen aliasname erbij.

suc6, je komt er wel, alle begin is moelijk, maar er is meer dan genoeg te vinden op internet in deze.
je kan daar wel wat meer tijd in investeren, komt je kennes ook weer te goede.

ehhh.. noppes


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 13:16

CAPSLOCK2000

zie teletekst pagina 888

Ho ho, hier lopen twee dingen door elkaar.
Je hebt twee soorten nameservers. Servers die domeineninformatie hosten en servers die deze informatie opvragen. In /etc/resolv.conf heb je server van het laatste type staan. Ik denk dat we het hier over het eerste type hebben. Ik snap eigenlijk niet waarvoor je iets moet invullen.

Je moet naar het controlepaneel gaan van de partij die je het domein heeft verkocht. Daar kun je DNS-informatie instellen. Daar geef je op dat de naam "www" (of wat jij wil) gekoppeld moet worden aan een IP. Daar geeft je het IP van je VPS op.

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • Demo
  • Registratie: Juni 2000
  • Laatst online: 30-09 11:31

Demo

Probleemschietende Tovenaar

Ik heb per (sub)domein een .conf staan in /etc/apache2/sites-available met de volgende basis-inhoud:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<VirtualHost *:80>
        ServerName www.domein.nl
        ServerAlias www.anderdomein.nl
        ServerAdmin webmaster@domein.nl
        DocumentRoot /pad/naar/apache2/htdocs/domein

        <Directory /pad/naar/apache2/htdocs/domein/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/domein/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/domein/access.log combined
</VirtualHost>

Poep je meteen per domein een aparte logfile uit. (NB: de subdir in ${APACHE_LOG_DIR} moet je zelf aanmaken!)

EDIT: ik zie dat ik een beetje te gauw gereageerd heb.. bovenstaande is alleen nodig als je meerdere domeinnamen wil gaan hosten, of als je zoiets als phpmyadmin.domein.nl als subdomein aan wil maken.
Je zal inderdaad bij de registrar van je domeinnaam een verwijzing moeten maken naar het externe IP-adres van je VPS. Als je maar één website wil aanbieden, hoef je bovenstaande niet te doen.

[ Voor 19% gewijzigd door Demo op 17-01-2014 10:05 ]

Unix doesn't prevent a user from doing stupid things, because that would necessarily prevent them from doing brilliant things.
while true ; do echo -n "bla" ; sleep 1 ; done


Acties:
  • 0 Henk 'm!

  • Zwerver
  • Registratie: Februari 2001
  • Niet online
Voor DNS setup, kijk eens hier bijvoorbeeld. Voor meerdere sites op 1 apache instance kan je bijvoorbeeld hier kijken. Die site is sowieso wel handig als je hiermee gaat beginnen.

Woonachtig Down Under. Ik negeer je insults niet, maar tegen de tijd dat ik ze lees zijn ze meestal niet relevant meer


Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
Jaa, het is gelukt! Ik heb nu test.domein.nl en domein.nl werkend. Bedankt voor alle hulp!

Nog een vraagje, de server moet namelijk dienen als development server. Ik wil er daarom voor zorgen dat andere niet op mijn sites kunnen. Wat is de handigste en/of beste manier om dit af te schermen?

Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

IPTables of: http://httpd.apache.org/docs/2.2/howto/access.html

[ Voor 75% gewijzigd door webfreakz.nl op 17-01-2014 15:43 ]

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Acties:
  • 0 Henk 'm!

  • Demo
  • Registratie: Juni 2000
  • Laatst online: 30-09 11:31

Demo

Probleemschietende Tovenaar

eXtreaL schreef op vrijdag 17 januari 2014 @ 15:01:
Jaa, het is gelukt! Ik heb nu test.domein.nl en domein.nl werkend. Bedankt voor alle hulp!

Nog een vraagje, de server moet namelijk dienen als development server. Ik wil er daarom voor zorgen dat andere niet op mijn sites kunnen. Wat is de handigste en/of beste manier om dit af te schermen?
Dat ligt er net aan wat je wil. Je kan de toegankelijkheid beperken tot specifieke IP-adressen, via Apache of iptables (firewall), je kan HTTP-authenticatie instellen in Apache, of een authenticatiesysteem in de code van de webpagina bouwen. Met mod_auth_pam zou je de systeemgebruikers van je server kunnen gebruiken en er een OTP vanuit Google Authenticator aan hangen. (of een Yubikey, of LDAP, mooi spul dat PAM)

Unix doesn't prevent a user from doing stupid things, because that would necessarily prevent them from doing brilliant things.
while true ; do echo -n "bla" ; sleep 1 ; done


Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
IPTables lijkt mij voor nu de beste oplossing.

Ik wil dat al mijn Virtual Hosts alleen bereikbaar zijn met de aangegeven IP adressen. Ik heb op dit moment echter meerdere hosts in mijn /etc/apache2/sites-available. Moet ik dan voor elk bestand:
code:
1
2
3
Order deny, allow
Deny From all
Allow From <ip>

gaan aanvullen, of kan dit in een keer voor de gehele server? Lijkt mij nogal omslachtig aangezien ik dan voor elke nieuwe gebruiker alle sites moet gaan updaten.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

eXtreaL schreef op vrijdag 17 januari 2014 @ 20:06:
IPTables lijkt mij voor nu de beste oplossing.

Ik wil dat al mijn Virtual Hosts alleen bereikbaar zijn met de aangegeven IP adressen. Ik heb op dit moment echter meerdere hosts in mijn /etc/apache2/sites-available. Moet ik dan voor elk bestand:
code:
1
2
3
Order deny, allow
Deny From all
Allow From <ip>

gaan aanvullen, of kan dit in een keer voor de gehele server? Lijkt mij nogal omslachtig aangezien ik dan voor elke nieuwe gebruiker alle sites moet gaan updaten.
Je haalt iptables en de allow regel van Apache door elkaar. Wat iptables doet, is op basis van het bron IP beslissen wat er mee moet gebeuren. Als je geen console toegang hebt, kan je jezelf ermee uitsluiten en kom je er niet meer in totdat je het systeem herstart (uitgaande dat je iptables niet bij boot laat toepassen totdat je 't perfect hebt draaien). Iptables werkt dus al ver voor Apache.

Waar je ook nog naar kan kijken, in geval je met een mobiel apparaat werkt (telefoon/tablet, laptop) en dus mogelijk van extern IP op je internet verbinding verandert, is via VPN toegankelijk maken. Je draait je domein dan niet op het externe IP van je server, maar op z'n interne. Het interne adres is dan de server kant van de VPN. Als iemand anders toegang moet hebben, kan je 'm toegang verlenen tot de VPN, ipv z'n IP te whitelisten.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
Maar de allow regel zou ook werken? Dit is namelijk wat ik voornamelijk op internet langs zie komen. Ik kom er alleen niet helemaal uit in welk bestand ik deze regels zou moeten plaatsen als ik deze voor al mijn virtual hosts wil laten gelden. Het zou werken als ik deze regels in de .htaccess zou plaatsen, maar volgens Apache is dit bad practice (?).

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Je stelt 't in in de vhost die je wilt bereiken. Als je 20 vhosts hebt, stel je 't dus 20x in.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
Hero of Time schreef op vrijdag 17 januari 2014 @ 23:48:
Je stelt 't in in de vhost die je wilt bereiken. Als je 20 vhosts hebt, stel je 't dus 20x in.
En er is geen manier om dit voor alle vhosts tegelijk te doen? Ik las iets over de httpd.conf, maar die kon ik nergens op mijn server vinden.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Dat vind je dan toch via Google?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
Sorry, ik was te beknopt met mijn vraag. Ik heb gelezen over de httpd.conf maar die kon ik niet vinden. Uiteindelijk heb ik ergens gelezen dat ik hiervoor mijn apache2.conf moet gebruiken. Hier heb ik toen de allow regel in geplaatst, maar zonder succes. Apache kon wel gewoon opnieuw starten, maar andere IP's konden er nog gewoon bij.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Tja, dan wordt het troubleshooten of de makkelijke weg nemen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • eXtreaL
  • Registratie: Juli 2009
  • Laatst online: 01-10 22:48
Ik heb het onderhand gevonden. In mijn virtual hosts stond AllowOverride op none, deze moest op all staan. Ik kan nu in mijn .htaccess iedereen denyen behalve mijn eigen IP's.

Thanks!

Acties:
  • 0 Henk 'm!

  • Thc_Nbl
  • Registratie: Juli 2001
  • Laatst online: 21-05 22:24
als je je webserver voor ontwikkeling wilt gaan gebruiker dan raad ik je zeker aan om gelijk een ssl certificaat aan te vragen en eens naar deze site gaan kijken wat je moet ssl kan.

http://www.vanemery.com/Linux/Apache/apache-SSL.html
is niet debian gebaseerd maar kijk wat er in de default-ssl staat in /etc/apache/site-available dan kom je er wel uit.
in dat linkje staat wat mooie voorbeelden hoe je een site of directory kan beveiligen m.b.t. ssl en client certificaten b.v.

ow en xreal, je kan beter niet in je apache2.conf dingen aanpassen.
als je httpd.conf er niet is, kan je deze in of elke andere file in /etc/apache/conf.d plaatsen.
let wel alles wat je daar in zet werkt voor alle vhosts.
heb je een instelling die je niet over alle vhosts wilt dan moet je deze in de config van de vhost zelf zetten.

ehhh.. noppes


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Demoniac schreef op vrijdag 17 januari 2014 @ 09:59:
Ik heb per (sub)domein een .conf staan in /etc/apache2/sites-available met de volgende basis-inhoud:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<VirtualHost *:80>
        ServerName www.domein.nl
        ServerAlias www.anderdomein.nl
        ServerAdmin webmaster@domein.nl
        DocumentRoot /pad/naar/apache2/htdocs/domein

        <Directory /pad/naar/apache2/htdocs/domein/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/domein/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/domein/access.log combined
</VirtualHost>

Poep je meteen per domein een aparte logfile uit. (NB: de subdir in ${APACHE_LOG_DIR} moet je zelf aanmaken!)

EDIT: ik zie dat ik een beetje te gauw gereageerd heb.. bovenstaande is alleen nodig als je meerdere domeinnamen wil gaan hosten, of als je zoiets als phpmyadmin.domein.nl als subdomein aan wil maken.
Je zal inderdaad bij de registrar van je domeinnaam een verwijzing moeten maken naar het externe IP-adres van je VPS. Als je maar één website wil aanbieden, hoef je bovenstaande niet te doen.
Op deze manier moet je wel rekening houden met duplicate content, omdat je wijst naar dezelfde map voor twee verschillende domeinen.

Acties:
  • 0 Henk 'm!

  • Thapous
  • Registratie: Mei 2006
  • Laatst online: 10:01

Thapous

Nee toch niet.

Thc_Nbl schreef op zondag 19 januari 2014 @ 21:42:
als je je webserver voor ontwikkeling wilt gaan gebruiker dan raad ik je zeker aan om gelijk een ssl certificaat aan te vragen en eens naar deze site gaan kijken wat je moet ssl kan.
.
Waarom zou je dit doen? In mijn ogen is dit voor een devserver echt niet nodig.

//Thapous


Acties:
  • 0 Henk 'm!

  • Thc_Nbl
  • Registratie: Juli 2001
  • Laatst online: 21-05 22:24
waarom.. als je toch developt en je vind wat leuks uit, dan beter achter een ssl.
daarnaast is het goed voor de ontwikkeling als je je site op 80 en 443 laat draaien.
krijg je meer te maken met relatieve paden enzo.. kwaad kan het niet en dan nog 1 certificaat is gratis...

en als je ook je mail mx naar www. zet kan je ook je mail server beveiligen.. ;-)
z-push erop en je hebt active sync ( exchange) support voor je mobiel.

ik zie alleen maar voordelen.. :+ en een leuke development omgeving. :+

certificaatje altijd handig dus..

[ Voor 22% gewijzigd door Thc_Nbl op 28-01-2014 22:54 ]

ehhh.. noppes

Pagina: 1