Met dank aan [mail=matthijs@comkraq.net]mathijs[/mail] kunnen we deze howto su-exec php under apache beschikbaar stellen.
Zoals de titel waarschijnlijk al zegt gaan we er voor zorgen dat php ook onder de gebruiker draait die je ingesteld hebt bij je virtualhost.
[b]1. Port Upgrade[/b]
Je moet eerst zorgen dat je ports uptodate zijn.
Volg de volgende aanwijzingen om je ports te updaten.
[shell]
# cd /usr/ports
# cp /usr/share/examples/cvsup/ports-supfile ports-supfile
# vi ports-supfile
[/shell]
pas het volgende aan:
[file]
*default host=CHANGE_THIS.FreeBSD.org
[/file]
naar:
[file]
*default host=cvsup3.nl.freebsd.org
[/file]
typ nu: escape :wq om uit vi te gaan
en daarna:
[shell]
# cvsup -g -L 2 ports-supfile om je ports te updaten
[/shell]
[b]2. Apache + suexec via port[/b]
Oke eerst gaan we apache installeren:
hint(s): -pas nadat je de Makefile gedownload hebt de mingid en minuid aan
-In de Makefile staat dat php alleen vanuit /home gestart mag worden. Pas dit naar de directory aan waar jij je webpagina’s/gebruikers hebt.
[shell]
# cd /usr/ports/www/apache13/
# wget http://www.matthijs.vuurwerk.nl/howto/Makefile
# make
# cd work/apache_1.3.26
# wget http://www.localhost.nl/patches/apache-php-suexec-patch
# patch -p1 < apache-php-suexec-patch
# vi src/support/suexec.c
[/shell]
Zoek in de file naar php
Vervang nu het volgende:
php3.cgi vervangen door php3
php4.cgi vervangen door php
#define HAVECGIDIR vervangen door /* #define HAVECGIDIR */
[shell]
# make
# cd ../../
# make install
[/shell]
en je zou nu een apache + suexec moeten hebben
[shell]
cd /usr/ports/lang/php4
make install clean
[/shell]
[shell]
cd /usr/ports/lang/php3
make install clean
[/shell]
de opties bij php zijn naar eigen keus
[b]3. httpd.conf aanpassen.[/b]
Ga naar /usr/local/etc/apache/httpd.conf
Pas bij de volgende secties in je httpd.conf het volgende aan.
[file]# Dynamic Shared Object (DSO) Support
[/file]
zet bij het volgende een # neer comment het dus.
[file]#LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
[/file]
zet bij het volgende ook een # neer comment het dus.
[file]#AddModule mod_mime_magic.c
[/file]
Zoek nu naar het stukje:
[file]# To use CGI scripts:
#
#AddHandler cgi-script .cgi
[/file]
En zet er dit bij:
[file]# To use CGI scripts:
#
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
AddHandler cgi-script .php
AddHandler cgi-script .php3
AddHandler cgi-script .php4
AddHandler cgi-script .phtml
[/file]
Ga vervolgens naar sectie VirtualHost en zet het stuk wat bij Vhost voorbeeld staat erin.
[b]4. Vhost voorbeeld[/b]
[file]
ServerAdmin jou@email.adress
DocumentRoot /home/users/matthijs/www # zet hier je eigen path neer naar je html etc files.
ServerName www.bsdfreaks.nl # je domein
ServerAlias bsdfreaks.nl # je domein
User “#1001” # userid van $user waar de html files etc staan.
Group “#1000” # groepid
ErrorLog /home/logs/bsdfreaks-error.log # path naar de errorlog
TransferLog /home/logs/bsdfreaks-access_log #path naar de accesslog
Options Indexes ExecCGI FollowSymLinks MultiViews
AllowOverride Options AuthConfig FileInfo Indexes Limit
Order allow‚deny
Allow from all
[/file]
Als je vragen en of opmerkingen hebt. Kom dan op IRC of mail [mail=matthijs@comkraq.net]mathijs[/mail]!
Anonymous says
En een vhost voorbeeld confje?
Anonymous says
Alsjeblieft 🙂
Anonymous says
En hoe zit het dan met de user directory’s? Persoonlijk heb ik namelijk de volgende regel in mijn chost staan:
AliasMatch ^/users/([^/]+)(/(.*))? /home/domein.nl/users/$1/web/$3
Dit zorgt erdus voor dat wanneer ik naar domein.nl/users/blaat ga ik de website van die user krijg te zien. Nu is het alleen zo, dat suexec de group en user id gebruiken die hiervoor zijn gedefineerd ipv de persoonlijke userid + groupid. Is hier ook een oplossing voor zonder voor elke user ook een apart record in de httpd.conf op te nemen.
Anonymous says
Niemand??
Anonymous says
Nadat ik dit gevolgd heb krijg ik de volgende 500 errors op alle php bestanden : [Tue May 27 16:02:46 2003] [error] [client 193.x.x.x] Premature end of script headers: /usr/local/www/data/iets.php
Heeft iemand hier nog tips voor om php toch goed als cgi aan de gang te krijgen? Als module werkt ie perfect.