Ik ben begonnen met het (voor het eerst) volledig inrichten van een VPS. Ik wil hier een aantal sites op gaan draaien die ik in principe vanuit 1 account zal beheren. De meeste vragen heb ik inmiddels zelf wel opgelost, maar op 1 punt zie ik niet wat nu de goede manier is.
Het gaat erom dat ik nu ftp toegang heb voor een user account op de vps, alleen als ik daar nu mee inlog kom ik in zijn home directory terecht (/home/ftp_user/), maar kan dan niet in de webroot van apache komen (/var/www/html/). Nu heb ik drie mogelijke oplossingen, maar geen idee welke nu echt mogelijk is, of verstandig is.
1) home directory aanpassen naar de webroot
- alleen dat werkt dus niet, want dan krijg ik een access denied error.
2) webroot aanpassen naar de home directory
- zou kunnen, maar ik vraag me af of dat verstandig is. Daarnaast zou ik als ik een andere ftp user zou willen hebben hetzelfde probleem weer krijgen en dan kan ik niet nogmaals de webroot aanpassen.
3) de rootdirectories voor elk domein in de ftp_user home zetten en die mounten in de webroot
- hiervan vraag ik me af of dat kan en of het wel verstandig is. Daarnaast krijg je ook hier weer het probleem dat je dit voor 1 user wel kan doen, maar niet voor meerdere.
Iemand ervaring met het opzetten van zo'n omgeving en ook een goede optie om dit op te lossen?
Ik werk met FileZilla en daar kan je binnen de home map van een ftp user directory aliassen maken die dan verwijzen naar andere mappen. Je kan daar ook bepaalde rechten aan toe kennen.
Misschien wel even handig om te weten welke Linux distro, en welke ftp server je gebruikt.
Op mijn eigen vps heb ik proftp draaien en dat was gewoon installeren en klaar.
Ik heb het zo staan dat per user in hun eigen homedir geftpt kan worden.
Verder een kleine aanpassing gedaan in de config om alleen in hun eigen dir te uploaden dus ze kunnen verder niet op de server.
Op de server draait CentOS met proftp en inderdaad gebruik ik Filezilla.
@Ger
Die aliassen moet je dan neem ik aan op de server instellen, niet in filezilla, of begrijp ik je verkeerd?
@Bart
proftp draait wel, maar zoals ik zeg krijgt de user zijn home directory te zien. Daar kan ik inderdaad gewoon naar uploaden, maar die home directory valt dus buiten de webroot, dus wat ik upload wordt niet zichtbaar op mijn website.
Dan moet dat aangeven in je proftpd.conf.
Zoeken naar de volgende lijn:
DefaultRoot /var/www/html/
Even proftpd opnieuw opstarten. ;)
EDIT
Misschien een beter plan om in de homedir aan te passen naar iets van:
/home/$user/public_html/
En in je apache config daar de docroot aangeven dan ben je er toch ook?
Die eerste optie werkt in elk geval wel inderdaad.
De tweede, het aanpassen van de homedir in apache, dan krijg ik volgens mij problemen in geval ik twee users wil hebben die bestanden kunnen oploaden. Want dan verwijst de webroot naar de home van de eerste en dan kan de tweede daar weer niet bij. Of heb ik het dan verkeerd?
Erwin kan niet uploaden bij Bart en omgekeerd.
Ze loggen nl per user in.
Zo kan je meerdere websites laten draaien ala virtual hosting.
Wat jij nu hebt is dat alle users nu in die ene dir /var/www/html kunnen uploaden.
Wil je dit niet, dan moet je hem aanpassen naar
DefaultRoot ~
Dan zullen de users alleen in hun eigen homedir kunnen uploaden.
Het is maar net wat voor systeem je aan het maken bent.
Maar als het meerdere zijn dan zal je de apache config moeten aanpassen.
Zodat de users per homedir een eigen website krijgt om het heel simpel te zeggen.
Het uiteindelijke doel is dat ik meerdere domeinen vanuit deze vps kan draaien. Elk domein moet dus naar zijn eigen webroot gaan wijzen.
Op dit moment heb ik 1 user die alles zal uploaden, maar ik wil het wel zo inrichten dat dat er meerderen kunnen zijn. Dat zullen geen klanten zijn, ze hoeven ook niet allemaal volledig gescheiden te zijn, maar ik zou wel meerdere accounts willen kunnen hebben.
De optie waarbij je elke user gewoon naar zijn eigen home laat gaan, hoe zou je daar dan de domeinen daar naartoe laten gaan? Door de webroot van Apache aan te passen, of door bijvoorbeeld een mod rewrite (waar ik eerder nog niet eens aan gedacht had)
Als ze een eigen webroot moeten hebben zou ik het per user doen.
Zo blijft het overzichtelijk en ook makkelijker te onderhouden denk bijvoorbeeld aan een slecht betalende gebruiker. Waarom zou je het moeilijk doen met ModRewrite terwijl een virtuele host daar uitermate geschikt voor is?
Als je in apache een virtualhost aanmaakt ben je eigenlijk al klaar.
Dan hoef je alleen maar in proftp Die /var/www/html/ te vervangen naar ~ en ftp werkt al.
Het enige wat je nog moet doen is even een virtuele host aan te maken.
Op zich is dat niet zo moeilijk hoor.
EDIT nu ik nog even verder zit te denken.
Als er nog geen domeinen gekoppeld zitten zou je ook nog als userdir websites kunnen laten serveren...
Dan krijg je iets van 127.0.0.1/~erwin
Weet zo niet hoe je dat doet met CentOS maar hier heb je wat meer uitleg: http://www.centos.org/docs/4/4.5/Reference_Guide/s3-httpd-mig-main-map.html
Als er een slecht betalende gebruiker is dan moet ik mezelf een deurwaarder sturen :-)
Ik begrijp je punt en op zich kan ik alle stappen wel uitvoeren die je noemt, het ging mij meer om wat de meest logische dan wel beste oplossing is. In alle gevallen kon ik namelijk wel weer een reden bedenken waarom het niet handig was.
Overigens, als ik nu dus voor de verschillende users ga per domein krijg ik dit:
domein 1: /home/domein1_user/public_html/
domein 2: /home/domein2_user/public_html/
domein 3: /home/domein3_user/public_html/
Elke user kan dus uploaden binnen zijn eigen domein en hoewel ik achter elke user zit, houd ik het zo dus nog zelfs voor mezelf gescheiden. Op zich niet eens een slecht idee.
Voor elk domein gebruik ik ook nog bepaalde algemene scripts (mijn framework). Die wil ik er niet 3 keer opzetten, maar maar 1 keer. Die files moet ik dus eigenlijk weer buiten alle drie de bovenstaande roots zetten en daar heb ik dan dus ook weer een andere user voor nodig om ervoor te zorgen dat die die framework files kan uploaden. Klopt dat?
[size=xsmall]Toevoeging op 05/07/2013 14:56:21:[/size]
Ger van Steenderen op 05/07/2013 14:52:04
Excuus Erwin, ik was een beetje onvolledig, ik gebruik dus FileZilla Server (ook de client overigens)
Ah, ok, ook nog maar eens naar kijken. De server versie kende ik nog niet.
[size=xsmall]Toevoeging op 05/07/2013 15:00:04:[/size]
Bart V B op 05/07/2013 14:47:02
EDIT nu ik nog even verder zit te denken.
Als er nog geen domeinen gekoppeld zitten zou je ook nog als userdir websites kunnen laten serveren...
Dan krijg je iets van 127.0.0.1/~erwin
Weet zo niet hoe je dat doet met CentOS maar hier heb je wat meer uitleg: http://www.centos.org/docs/4/4.5/Reference_Guide/s3-httpd-mig-main-map.html
Ik denk niet dat ik dat (op dit moment) wil hebben. Ik heb nu twee, maar dit worden er vier, domeinen en die moeten ieder dus naar zijn eigen root gaan, maar binnen de domeinen heb ik geen user directories.