PDA

Bekijk Volledige Versie : HOWTO: Centos, apache 2, php4, php5 & suphp



Mikey
28/08/06, 12:13
Onderstaand zijn de stappen die ik neem om suphp, php4, php5 op een centos machine icm directadmin te installeren. Dit naar voorbeeld van een thread op het directadmin forum. Ik ben zelf een tijd aan het stoeien geweest omdat ik de geplaatste oplossingen van bepaalde problemen nou niet echt de oplossing vond.



[root@test]#cd /usr/local/src/
[root@test]#wget http://de.php.net/get/php-5.1.5.tar.gz/from/this/mirror
[root@test]#wget http://de.php.net/get/php-4.4.4.tar.gz/from/this/mirror
[root@test]#wget http://downloads.mijn-sleutel.net/DA/suphp-0.6.1.tar.gz


Uitpakken van de zojuist gedownloade files.,



[root@test]#tar -zxvf php-5.1.5.tar.gz
[root@test]#tar -zxvf php-4.4.2.tar.gz
[root@test]#tar -zxvf suphp-0.6.1.tar.gz


# CONFIGURE & COMPILEN PHP4



[root@test]#cd php-4.4.2
[root@test]#./configure --prefix=/usr/local/php4 --enable-force-cgi-redirect --enable-fastcgi --with-config-file-path=/usr/local/etc/php4/cgi --with-curl --with-curl-dir=/usr/local/lib --with-gd --with-gd-dir=/usr/local/lib --with-gettext --with-jpeg-dir=/usr/local/lib --with-kerberos --with-mcrypt --with-mhash --with-mysql=/usr --with-pear --with-png-dir=/usr/local/lib --with-xml --with-zlib --with-zlib-dir=/usr/local/lib --with-zip --enable-bcmath --enable-calendar --enable-ftp --enable-magic-quotes --enable-sockets --enable-track-vars --enable-mbstring --enable-memory-limit
[root@test]#make
[root@test]#make install


# CONFIGURE & COMPILEN PHP5



[root@test]#cd ../php-5.1.5
[root@test]#./configure --prefix=/usr/local/php5 --enable-force-cgi-redirect --enable-fastcgi --with-config-file-path=/usr/local/etc/php5/cgi --with-curl --with-curl-dir=/usr/local/lib --with-gd --with-gd-dir=/usr/local/lib --with-gettext --with-jpeg-dir=/usr/local/lib --with-kerberos --with-mcrypt --with-mhash --with-mysql=/usr --with-pear --with-png-dir=/usr/local/lib --with-xml --with-zlib --with-zlib-dir=/usr/local/lib --with-zip --enable-bcmath --enable-calendar --enable-ftp --enable-magic-quotes --enable-sockets --enable-track-vars --enable-mbstring --enable-memory-limit
[root@test]#make
[root@test]#make install


# CONFIGURE & COMPILEN suPHP



[root@test]#cd ../suphp-0.6.1
[root@test]#./configure --prefix=/usr/local/suphp --sysconfdir=/usr/local/suphp/etc/ --with-apache-user=apache --with-setid-mode=force --with-apxs=/usr/sbin/apxs --disable-checkpath
[root@test]#make
[root@test]#make install


# Maken van de juiste directories



[root@test]#mkdir -p /usr/local/etc/php4/cgi
[root@test]#mkdir -p /usr/local/etc/php5/cgi
[root@test]#mkdir -p /usr/local/suphp/etc


# COPIEREN PHP CONFIG FILES



[root@test]#cp /usr/local/src/php-5.1.5/php.ini-dist /usr/local/etc/php5/cgi/php.ini
[root@test]#mkdir /usr/local/etc/php4/cgi/stdvrthost
[root@test]#cp /usr/local/src/php-4.4.2/php.ini-dist /usr/local/etc/php4/cgi/php.ini
[root@test]#cp /usr/local/src/php-4.4.2/php.ini-dist /usr/local/etc/php4/cgi/stdvrthos/php.ini
[root@test]#cp /usr/local/src/suphp-0.6.1/doc/suphp.conf-example /usr/local/suphp/etc/suphp.conf

Let op, ik copieer hier hele nieuwe ini files in, je moet deze aanpassen naar wens. Je kan evt de oude php.ini van de huidige php install erheen copieren. In de folder stdvrthost staat de php.ini voor de virtualhost waar ook webmail, phpmyadmin op draaien.

# Maak van de originele files



[root@test]#cp /usr/local/suphp/etc/suphp.conf suphp.conf.original
[root@test]#cp /etc/httpd/conf/httpd.conf httpd.conf.original


# Maak logfile voor suphp



touch /var/log/suphp.log

Voeg deze zelf toe aan bijvoorbeeld logrotate.

# Aanpassen van de suPHP configuratie



[root@test]#vi /usr/local/suphp/etc/suphp.conf

neem onderstaande gegevens over:
;User Apache is running as
webserver_user=apache

;Path all scripts have to be in
docroot=/

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=false

;Umask to set, specify in octal notation
umask=0022

; Minimum UID
min_uid=100

; Minimum GID
min_gid=500


[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/local/php4/bin/php
x-httpd-php5=php:/usr/local/php5/bin/php



# Aanpassen van de HTTPD.CONF



[root@test]#nano /etc/httpd/conf/httpd.conf

Na :
LoadModule php4_module /usr/lib/apache/libphp4.so
LoadModule frontpage_module /usr/lib/apache/mod_frontpage.so
LoadModule perl_module /usr/lib/apache/mod_perl.so

Voegtoe :
LoadModule suphp_module /usr/lib/apache/mod_suphp.so

na AddHandler cgi-script .cgi .pl

Voegtoe:
AddHandler x-httpd-php .php .inc .php4
AddHandler x-httpd-php5 .php5

suPHP_AddHandler x-httpd-php
suPHP_AddHandler x-httpd-php5

in <VirtualHost IP:80>
Voegtoe:
suPHP_Engine ON
suPHP_AddHandler x-httpd-php
suPHP_ConfigPath (/usr/local/etc/php4/cgi/stdvrthost)

suPHP_UserGroup apache apache




save httpd.conf


[root@test]#chown -R apache:apache /var/www/html/*


# Directadmin templates aanpassen:



[root@test]#cd /usr/local/directadmin/data/templates
[root@test]#cp virtual_host2* custom
[root@test]#cd custom

pas de 4 files aan.

Na |CGI|
Voegtoe:
Redirect 301 /webmail http://|IP|/webmail

Na |USECANONICALNAME|
Voegtoe:
suPHP_Engine |PHP|
suPHP_UserGroup |USER| |GROUP|
<Files *.php>
SetEnv PHPRC /usr/local/directadmin/data/users/|USER|/php4/
</Files>

<Files *.php5>
SetEnv PHPRC /usr/local/directadmin/data/users/|USER|/php5/
</Files>

doe dit bij alle 4 de bestanden, daarna rebuild all conf files.
[root@test]#echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
[root@test]#service httpd restart


Als het goed is zal httpd herstarten en gewoon naar behoren werken. Altans dat is bij mij wel het geval. De php files worden als php4 behandeld, php5 files worden als php5 behandel. Wil je nou dat alle php bestanden als php5 behandeld worden dan kun je dit oplossen door in het .htaccess het volgende te zetten: AddHandler x-httpd-php5 .php

Om php uit te zetten edit de httpd.conf van betreffend domein:
suPHP_Engine off
RemoveHandler .php
RemoveHandler .php5

Je kan na deze setup een ideale php.ini maken, heb je echter een gebruiker die toch wat aanpassingen nodig heeft, dan kun je per gebruiker een php.ini file gebruiken. Deze worden realtime gelezen. Om een gebruiker een eigen php.ini te geven maak je in de volgende directory twee directories aan, namelijk php4 en php5. Beide gebruiken hun eigen php.ini file(s).
/usr/local/directadmin/data/users/|USER|/ . Maak de directories aan en copier daarin de gewenste php.ini.


Mocht ik ergens gigantisch de plank misschieten, dan hoor ik dat uiteraard graag :)

rayden
28/08/06, 13:22
Mikey, Heb dit gelijk even geprobeerd en het werkt perfect.

Wederom een uitstekende howto van jou! :) Keep up the good work

Maniak
13/09/06, 15:55
Hello,

I don't like to find a pure copy of what I wrote somewhere, without asking me anything.

Original thread : http://www.directadmin.com/forum/showthread.php?threadid=13953

If you want to copy and use my work, you could at least ask me, and it's not forbbiden to quote me.

By the way, since php 4.4.4 SetEnv PHPRC does not work anymore.

Thank you.

Mikey
13/09/06, 16:48
Hello,

I don't like to find a pure copy of what I wrote somewhere, without asking me anything.

Original thread : http://www.directadmin.com/forum/showthread.php?threadid=13953

If you want to copy and use my work, you could at least ask me, and it's not forbbiden to quote me.

By the way, since php 4.4.4 SetEnv PHPRC does not work anymore.

Thank you.

Maniak,

Dit naar voorbeeld van een thread op het directadmin forum.

There stands that i used most of it from a thread @ DA forum. But i also make my own tweaks for the standard virtual host and webmail. The thread u suggest is securing but later breaking it again. And my TS is like "this is the way i do it on a succesfull way"

just a summery in dutch with a 100% succesfull end, and not many tweaks as u see in the DA thread.



By the way, since php 4.4.4 SetEnv PHPRC does not work anymore.


Shall we test :)

Maniak
13/09/06, 17:19
Hello,

I am sorry to be so aggressive, but I have lost so many hours, to make all works fine, editing files, trying all configurations.

I have found your thread just googling a bit, so once again without any notice that it's based on someone work.

It is just kind of missing respect for me, as when someone rip some programs.

Greetings.

Keizer
26/09/06, 14:24
en, werkt het wel of niet met php 4.4.4 ?

ErikKosters
26/09/06, 18:25
Hoe zit het met de snelheid? Neemt deze aanzienlijk af aangezien je met CGI werkt of valt dit mee?

Mikej0h
07/10/06, 12:53
By the way, since php 4.4.4 SetEnv PHPRC does not work anymore.


Shall we test :)


Heb je dit inmiddels kunnen testen?

Mikey
07/10/06, 18:29
Bij mij werkt het gewoon.

Imtek
02/02/07, 11:44
Na gebruik van je howto krijg ik een error als ik een testdomein aanmaak:

Syntax error on line 39 of /usr/local/directadmin/data/users/admin/httpd.conf:
Invalid command 'php_admin_flag', perhaps mis-spelled or defined by a module not included in the server configuration.

Klinkt dit je bekend in de oren?

snaaps
08/02/07, 18:23
Zonder al te veel problenen geinstalleerd.
Wellicht handig om erbij te vermelden eerst apache te updaten naar versie 2 indien nodig.

cp /usr/local/src/php-4.4.4/php.ini-dist /usr/local/etc/php4/cgi/stdvrthos/php.ini
cp: cannot create regular file `/usr/local/etc/php4/cgi/stdvrthos/php.ini': No s
uch file or directory
Bovenstaande werkten niet, deze handmatig aangemaakt.

Is het handig of noodzakelijk om ook Mysql 5 te installeren / up te graden?

Mikej0h
11/02/07, 02:46
Na gebruik van je howto krijg ik een error als ik een testdomein aanmaak:

Syntax error on line 39 of /usr/local/directadmin/data/users/admin/httpd.conf:
Invalid command 'php_admin_flag', perhaps mis-spelled or defined by a module not included in the server configuration.

Klinkt dit je bekend in de oren?

Op het moment dat je de 'mod_php4' niet meer gebruikt, zijn die flag extenties inderdaad niet meer beschikbaar.
Ik ben zelf ook nog aan het kijken hoe we dit kunnen oplossen.


Zonder al te veel problenen geinstalleerd.
Wellicht handig om erbij te vermelden eerst apache te updaten naar versie 2 indien nodig.

cp /usr/local/src/php-4.4.4/php.ini-dist /usr/local/etc/php4/cgi/stdvrthos/php.ini
cp: cannot create regular file `/usr/local/etc/php4/cgi/stdvrthos/php.ini': No s
uch file or directory
Bovenstaande werkten niet, deze handmatig aangemaakt.

Is het handig of noodzakelijk om ook Mysql 5 te installeren / up te graden?

In de howto staat een typfout.
Het commando moet zijn: cp /usr/local/src/php-4.4.4/php.ini-dist /usr/local/etc/php4/cgi/stdvrthost/php.ini

Imtek
11/02/07, 16:41
Op het moment dat je de 'mod_php4' niet meer gebruikt, zijn die flag extenties inderdaad niet meer beschikbaar.
Ik ben zelf ook nog aan het kijken hoe we dit kunnen oplossen.


Ik heb het zelf opgelost door PHP te rebuilden via het ./build script

Mikej0h
11/02/07, 16:43
Ik heb het zelf opgelost door PHP te rebuilden via het ./build script

Dat kan wel, maar dan 'breek' je dit suPHP systeem eigelijk weer.
Het is of mod_php4 of mod_suphp (met de directives voor php4)...

snaaps
14/02/07, 09:06
is er iets bekend dat squirrelmail na deze upgrade een 500 error vertoond?

Mikej0h
14/02/07, 09:33
is er iets bekend dat squirrelmail na deze upgrade een 500 error vertoond?

Krijg je die error ook via http://IPADRES/squirrelmail ?

snaaps
14/02/07, 22:24
nee dan niet,

heb nu in de da templates 2 extra regels toegevoegd net zoals met /webmail

maar nu ook voor squirrelmail en phpmyadmin.

Hou activeer je nu zend op beide php versies?

in het standaard build script staat de volgende regel:
Onder: doZend() {
echo -e "Location of php.ini:\n /usr/local/lib";

Kan deze regel simpel worden aangepast naar de lokatie van de nieuwe ini.pgp files en dan ./build zend 2x uitvoeren?

Edit:

Het volgende heb ik nu gedaan:

2x ./build zend uit gevoerd

./build zend

installation path: /usr/local/zend4
lokation php.ini: /usr/local/etc/php4/cgi/

After this done:

./build zend
installation path: /usr/local/zend5
lokation php.ini: /usr/local/etc/php5/cgi/

snaaps
27/02/07, 13:01
Vraagje,

Waneer je een map in public_html chmod naar 777 kan deze hierna geen php bestanden meer lezen.

Men krijgt een 500 error.

De map moet schijfbaar zijn voor het script, nu werkt 755 ook wel echter in de meeste howto,s staat: chmod de directory naar 777.
Als men dit doet werkt het script niet meer en hangt vervolgens bij ons aan de lijn.

Mikej0h
27/02/07, 13:31
Hou activeer je nu zend op beide php versies?


Wij gebruiken geen Zend, dus helaas kan ik je daar niet op antwoorden.


Vraagje,

Waneer je een map in public_html chmod naar 777 kan deze hierna geen php bestanden meer lezen.

Men krijgt een 500 error.

De map moet schijfbaar zijn voor het script, nu werkt 755 ook wel echter in de meeste howto,s staat: chmod de directory naar 777.
Als men dit doet werkt het script niet meer en hangt vervolgens bij ons aan de lijn.

Lijkt me erg sterk, gezien 777 zorgt dat er geschreven kan worden in de directory. Belangrijk is dat de files in de map in ieder geval +x hebben, zodat deze uitvoerbaar is.

Kijk anders in /var/log/suphp.log wat er gebeurd als er zo'n script wordt uitgevoerd. Wellicht kan je dan wat gerichter zoeken.

snaaps
27/02/07, 14:00
Zend is inmiddels gelukt door 2x te installeren.

Btreft de 500 errors met php bestanden in een 777 directory:

Apache error log:

[Tue Feb 27 13:08:22 2007] [error] [client 80.126.139.xx] Premature end of script headers: lala.php
[Tue Feb 27 13:08:22 2007] [error] [client 80.126.139.xx] SoftException in Application.cpp:233: Directory "/home/user/domains/domein.nl/public_html/log-test" is writeable by group
[Tue Feb 27 13:08:22 2007] [error] [client 80.126.139.xx] *** glibc detected *** double free or corruption (fasttop): 0x09237c40 ***
[Tue Feb 27 13:08:22 2007] [error] [client 80.126.139.xx] File does not exist: /home/user/domains/domein.nl/public_html/500.shtml


SUphp Log:


[Tue Feb 27 12:39:58 2007] [warn] Directory "/home/user/domains/domein.nl/public_html/log-test" is writeable by group
[Tue Feb 27 12:40:07 2007] [warn] Directory "/home/user/domains/domain.nl/public_html/log-test" is writeable by group

Mastje
27/02/07, 14:02
zoals ik het hier lees in de logs, dat als je hoger geeft dan 755 dan geeft SuPHP een error terug. daardoor krijg je de 500 error. Omdat dankzij SuPHP PHP onder de eigen gebruiker draait, hebt je ook niet meer nodig dan 755 :) het is alleen wel lastig, omdat je daar weer support op moet geven.

snaaps
02/03/07, 14:08
Hallo, wij zijn bezig freetype te installeren echter dit wil niet lukken.

Wat wij doen:
download en installer freetpye 2
build script aanpassen with-freetype
rebuild GD: ./build gd
rebuild Apache: ./build apache_2

Configureer PHP:
./configure --prefix=/usr/local/php4 --enable-force-cgi-redirect --enable-fastcgi --with-config-file-path=/usr/local/etc/php4/cgi --with-curl --with-curl-dir=/usr/local/lib --with-gd --with-gd-dir=/usr/local/lib --with-gettext --with-jpeg-dir=/usr/local/lib --with-freetype --with-freetype-dir=/usr/local/lib --with-kerberos --with-mcrypt --with-mhash --with-mysql=/usr --with-pear --with-png-dir=/usr/local/lib --with-xml --with-zlib --with-zlib-dir=/usr/local/lib --with-zip --enable-bcmath --enable-calendar --enable-ftp --enable-magic-quotes --enable-sockets --enable-track-vars --enable-mbstring --enable-memory-limit

#make
#make install

Herstart apache.

phpinfo geeft bij GD aan dat freetype niet is gecompileerd.
zie phpinfo: http://ccc27.nl/test.php

Tijdens deze procedure krijgen we geen errors,

bigall
03/03/07, 21:04
Probeer om eerst eens een een build clean te doen. (maak a.u.b een backup van je huidige config bestanden)
En zorg dat --with-freetype vòòr --with-gd staat.
Doe dan opnieuw een build apache_2

FreshLife
17/04/07, 20:39
Werkt dit ook met Apache 1?

RayManZ
17/04/07, 22:57
DirectAdmin heeft nu zelf een script gemaakt welke nog in BETA is.

Deze doet precies wat hier staat en werkt met apache 1 en 2 en kan php4 en php5 tegelijk draaien middels suphp. Alles is mogelijk

Zie directadmin.com/forum

snaaps
20/04/07, 09:00
zijn inmiddels maar afgestapt van php4 en ph5, een en al ellende...
Nieuwe servers bevatten nu enkel php5 met apache 1, werkt als een trein..

Michel2
30/08/07, 15:25
Heeft bij mij niet gewerkt helaas,

Ik gebruik DirectAdmin 1.30.2 (latest) met CentOS 4.4

Heb alle stappen gedaan, gingen ook zonder problemen verder, maar php5 wil gewoon niet werken helaas, ik heb geen idee wat er verkeerd is.

betz
30/08/07, 16:37
Mensen, opgelet, heb suphp ooit ook draaiende gehad en het heeft lang goed zijn ding gedaan, maar er is toch een ernstig conflict met de laatste versie van directadmin.

Dus iedereen met directadmin, informeer je eerst goed op voorhand.

Bij de update naar de laatste directdmin versie, weigerde de httpd-server dienst, kon niet herstart worden, niets. Dit was een major issue zoals jullie wel zullen begrijpen.

Hiermee, pas op met suphp:
- is nog in ontwikkelingsfase
- vraagt veel meer resources
- support is ook niet om van de daken te schreeuwen, van alle vragen maar enkele antwoorden gekregen, meestal week later.

Een gewaarschuwd man is er 2 waard ;)

Mikey
30/08/07, 16:40
Vind dit een beetje onnodig paniek zaaien, vertel eerst maar eens waarom het niet zou werken (in jouw geval) hier draaien genoeg servers icm deze setup geheel zonder problemen!

RayManZ
30/08/07, 16:43
Volgens mij heeft DirectAdmin nu ook zelf een script gebouwd. Custombuild heet het. Zoek maar op hun forum. Die ondersteund ook suphp en dergelijke.

Mikej0h
30/08/07, 16:55
directadmin != httpd

Bovendien werken wij met de laatste versie van DirectAdmin & suPHP.
Het werkt dus prima...

betz
30/08/07, 22:54
directadmin != httpd

Bovendien werken wij met de laatste versie van DirectAdmin & suPHP.
Het werkt dus prima...

ik heb nergens gezegd dat directadmin httpd is, wat ik bedoelde was dat de update naar de laatste versie (1.30.1) een totale crash veroorzaakte.
Ik heb na lang zoeken gewoon een hele format gedaan.

En omdat het bij jou werkt, moet het maar bij iedereen draaien ofzo?
Negationisme zou ik zoiets noemen

kijk maar op deze topic
directadmin.com/forum/showthread.php?t=19644

En wie heeft mij hier reputatiepunten voor afgenomen?
Ik wil mijn kennis delen, ik heb er niets aan, en dan krijg je het deksel op je neus ofwat? "Als je er niets van afweet, zeg dan niets"? Damned man, met jouw 'opbouwende kritiek' heb ik ook weer veel bijgeleerd.

Ik zeg hiermee niet dat ik het bij het juiste eind heb, absoluut niet, ik ben nog niet zolang in het vak, maar wou gewoon mijn (enge) ervaring meedelen voor iemand anders (met dan gelijkaardige ervaring) tegen dezelfde steen stoot.

En iedereen begint bij nul of niet?

Moest even van het hart :)

Mikey
30/08/07, 23:11
Kijk dat is nou een melding waar iedereen aan heeft,

als ik je verhaal zo lees, en de thread op DA bekijk, heb ik het idee dat je de stap voor de "custom" templates overgeslagen hebt. Heb je daar niet de templates aangepast die in de templates/ dir staat en de stap gemist van het copy'n van de juiste templates naar de custom folder ?

eweps
30/08/07, 23:19
Offtopic, maar wellicht handig:

http://www.directadmin.com/forum/showthread.php?t=19221

Ik heb het zelf nog niet zozeer getest icm suphp, maar inmiddels kun je misschien beter de Build tool voor DA gebruiken.

Herbert
27/01/08, 21:25
Ik heb op een test server DA geinstalleerd met custombuild.
Apache 2.2.8 / PHP 5.2.5 (cli) SuPHP + Zend + PHP 4.4.8
Alles draaid nu maar met 1 probleem.
php 4.4.8 haalt de ini vanaf /usr/local/etc/php5/cgi/
PHPRC /usr/local/etc/php4/cgi/ werkt niet.
In de virtualhost config van het domein heb ik staan:
suPHP_Engine off
RemoveHandler .php
RemoveHandler .php5
AddHandler x-httpd-php4 .php

Heeft er iemand een idee waarom dat niet werkt??