HOWTO PHP5.2.1 + Fast/CGI + suPHP + PLESK ( Confixx )

Apache, Lighttpd, nginx, Cherokee
twisterchen
Anbieter
Posts: 233
Joined: 2005-07-14 14:13

HOWTO PHP5.2.1 + Fast/CGI + suPHP + PLESK ( Confixx )

Post by twisterchen » 2007-02-16 10:07

Hallo nachdem ich hier im Forum auch schon einiges an Hilfe bekommen habe möchte ich auf diesem Wege etwas zurück geben.

Dieses HOWTO gibt es auch noch für einen Suse 10.1 Confixx Server, dass aber erst noch kommt.
Dieses HOWTO wurde unter Suse 9.3 mit Plesk 8.0.1 Apache/2.0.53 erstellt.

Ich fang einfach mal an

Wir erstellen uns ein Arbeitsverzeichniss:

Code: Select all

mkdir arbeitv
und wechseln in das Verzeichniss:

Code: Select all

cd arbeitv
Wir laden uns die sourcen PHP5.2.1 von http://www.php.net herunter und entpacken das ganze.

Code: Select all

tar -xzf php-5.2.1.tar.gz
Wir laden uns die sourcen suphp-0.6.2 von http://www.suphp.org/ herunter und entpacken das ganze.

Code: Select all

tar -xzf suphp-0.6.2.tar.gz
wechseln in das Verzeichniss :!:

Code: Select all

cd php-5.2.1
Nun müsst ihr natürlich darauf achten, dass die nötigen -devel Pakete installiert sind, ansonsten könnten beim configure von PHP fehler auftreten .

Code: Select all

./configure --with-exec-dir=/opt/php5.2.1-fastcgi/bin --prefix=/opt/php5.2.1-fastcgi --includedir=/opt/php5.2.1-fastcgi/include --datadir=/opt/php5.2.1-fastcgi/lib --bindir=/opt/php5.2.1-fastcgi/bin  --without-pear --with-imap --with-imap-ssl --with-mime-magic --with-mhash --with-ldap --with-gmp --with-gettext --enable-track-vars --with-mcrypt --with-gd --with-curl --disable-cli --with-mysql --enable-magic-quotes --enable-safe-mode --enable-zend-multibyte --enable-zip --enable-libxml --enable-sysvmsg --enable-sysvsem --with-zlib --with-openssl --with-bz2 --enable-sysvshm --enable-sockets --enable-soap --enable-shmop --enable-mbstring --enable-ftp --enable-exif --enable-dbase --enable-calendar --enable-bcmath --enable-memory-limit --enable-force-cgi-redirect --enable-safe-mode --with-pcre-regex --without-sqlite --without-mm --enable-fastcgi

Wichtig ist beim configure nur, dass das PHP nicht mit --with-config-file-path compiliert wird da ansonsten über suPHP keine eigener Path für die php.ini angegeben werden kann.


Wenn der configure fertig ist machen wir ein:

Code: Select all

make
und dann ein :

Code: Select all

make install
Nun müsste PHP in /opt/php5.2.1-fastcgi installiert sein.

Code: Select all

/opt/php5.2.1-fastcgi/bin/php -v
müsste folgendes ergeben.

Code: Select all

PHP 5.2.1 (cgi-fcgi) (built: Feb 12 2007 15:38:53)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
Nun gehen wir zum suPHP über :!:

Wir wechseln ins Verzeichniss :

Code: Select all

cd /arbeitv/suphp-0.6.2
Hier ist noch darauf zu achten das die -devel Pakete für den Apachen installiert sind.

führen das configure für suPHP aus

Code: Select all

./configure  --sysconfdir=/etc --with-apxs=/usr/sbin/apxs2 --with-min-uid=500 --with-min-gid=500 --with-apache-user=wwwrun --with-php=/opt/php5.2.1-fastcgi/bin/php --with-setid-mode=owner --with-logfile=/var/log/apache2/suPHP.log
Einen unterschied gab es hier noch zu Suse 10.1 hier mussten wir zu dem configure noch folgendes ergänzen was beim Suse 9.3 nicht nötig war.

Sollte der configure einen Fehler bringen mit APR
dieses ans configure anhängen.

Code: Select all

--with-apr=/usr/bin/apr-1-config
Eventuell auch diese Pakete

Code: Select all

libapr-util1-debuginfo
libapr1-debuginfo
Nun machen wir ein:

Code: Select all

make
und

Code: Select all

make install

Code: Select all

/usr/sbin/suphp -v
müsste dann folgendes ergeben:

Code: Select all

suPHP version 0.6.2
(c) 2002-2005 Sebastian Marsching

suPHP has to be called by mod_suphp to work.

So, nun erstellen wir in /etc eine suphp.conf

Code: Select all

touch /etc/suphp.conf
und fügen folgenden Inhalt ein :!:

Code: Select all

[global]
logfile=/var/log/apache2/suphp_log
loglevel=info
webserver_user=wwwrun
docroot=/home/httpd/vhosts
env_path=/bin:/usr/bin
umask=0030
min_uid=500
min_gid=500

; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false

;Path to chroot() to before executing script
;chroot=/mychroot

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

;Send minor error messages to browser
errors_to_browser=false

[handlers]
;Handler for php-scripts
x-httpd-php=php:/opt/php5.2.1-fastcgi/bin/php

;Handler for CGI-scripts
x-suphp-cgi=execute:!self
Jetzte erstellen wir in /etc/apache2/conf.d eine suphp.conf

Code: Select all

touch /etc/apache2/conf.d/suphp.conf
und fügen folgenden inhalt ein :!:

Code: Select all

suPHP_Engine off
Jetzt Aktivieren wir mal das mod_suphp indem wir in /etc/syscongig/apache2
folgenden Eintrage bearbeiten.( könnte bei euch auch anders aussehen )

Code: Select all

APACHE_MODULES="rewrite access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php4 perl python suexec"
und fügen am ende einfach suphp hinzu

Code: Select all

APACHE_MODULES="rewrite access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php4 perl python suexec suphp"
Jetzt bearbeiten wir mal einen Vhost :!:

Code: Select all

/home/httpd/vhosts/<domain.de>/conf
hier erstellen wir mal eine vhost.conf

Code: Select all

touch /home/httpd/vhosts/<domain.de>/conf/vhost.conf
vhost.conf:

Code: Select all

<Directory /home/httpd/vhosts/<domain.de>/httpdocs>
# zum ausschalten von mod_php
php_admin_flag engine off
#
suPHP_Engine On
#hier bitte nur den pfad zu php.ini
suPHP_ConfigPath "/etc/phpvirtual/domain"
AddHandler x-httpd-php .php
suPHP_AddHandler x-httpd-php
</Directory>

Code: Select all

Jetzt erstellen wir noch die für den vhost eigene php.ini:
Legen Verzeichnisse an:

Code: Select all

/etc/phpvirtual/<domain> 
und kopieren unsere gewollte php.ini nach

Code: Select all

/etc/phpvirtual/<domain>/php.ini
wie in der vhost.conf angegeben:

Code: Select all

suPHP_ConfigPath "/etc/phpvirtual/domain"
Nun kann mann schön für jede Domain eine eigene php.ini anlegen.

So, wir sind eigentlich fast fertig, wir müssen Plesk jetzt nur noch dazu bringen die vhost.conf auch zu laden.

Code: Select all

/usr/local/psa/admin/sbin/websrvmng -v -a
Wir starten den apache auch neu und hoffe das es bei euch geklappt hat, so wie bei mir.

Ich hoffe ich habe nichts wichtiges vergessen, und die Admins hier zerreisen mich nicht in der Luft wenn ich hier vielleicht was falsches erklährt hätte.
Das HOWTO für Confixx kommt noch.

Meine gross und KLEIN Schreibungsfehler mögen mir doch verziehen werden.

Gruss
Twisterchen

twisterchen
Anbieter
Posts: 233
Joined: 2005-07-14 14:13

Re: HOWTO PHP5.2.1 + Fast/CGI + suPHP + PLESK ( Confixx )

Post by twisterchen » 2007-02-19 10:43

Hallo

und hier das Conifxx HOWTO vielleicht hilft es ja jemanden und die Admins hier könnten das vielleicht mal als wichtig deklarieren.

Hiermit wird Automatisch beim anlegen eines users suPHP verwendet ohne, dass man irgendwas in irgend welchen vhost.conf Dateien machen müsste.

Zusätzliche PHP Pakete über YaST installiert:

Code: Select all

libapr-util1-debuginfo
libapr1-debuginfo
-+apache2-devel
-+apache2-debuginfo 
Files kopieren (sonst gibt es seine Fehlermeldung das die Dateien nicht existieren)

Code: Select all

# cp -a /usr/lib/apr-1/build/* /usr/lib/build/
# cp -a /usr/include/apr-1/* /usr/include/apache2
PHP 5.2.1 installieren
Downloaden, entpacken und dann:

Code: Select all

# . ./configure --with-exec-dir=/opt/php5.2.1-fastcgi/bin --prefix=/opt/php5.2.1-fastcgi -
-includedir=/opt/php5.2.1-fastcgi/include --datadir=/opt/php5.2.1-fastcgi/lib --
bindir=/opt/php5.2.1-fastcgi/bin --without-pear --with-mime-magic --with-mhash --withldap
--with-gmp --with-gettext --enable-track-vars --with-mcrypt --with-gd --with-curl --
disable-cli --with-mysql --enable-magic-quotes --enable-safe-mode --enable-zendmultibyte
--enable-zip --enable-libxml --enable-sysvmsg --enable-sysvsem --with-zlib
--with-openssl --with-bz2 --enable-sysvshm --enable-sockets --enable-soap --enableshmop
--enable-mbstring --enable-ftp --enable-exif --enable-dbase --enable-calendar
--enable-bcmath --enable-memory-limit --enable-force-cgi-redirect --enable-safemode
--with-pcre-regex --without-sqlite --without-mm --enable-fastcgi
# make
# make install
suPHP installieren
Download von http://www.suphp.org/download/suphp-0.6.2.tar.gz
nach /downloads/suPHP/

Code: Select all

# cp -a /usr/lib/apr-1/build/* /usr/lib/build/
# cp -a /usr/include/apr-1/* /usr/include/apache2
# cd /downloads/suPHP
# ./configure --prefix=/usr --with-apxs=/usr/sbin/apxs2 --with-min-uid=500 --with-mingid=500 --with-php=/opt/php5.2.1-fastcgi/bin/php --with-apr=/usr/bin/apr-1-config --with-apache-user=wwwrun --with-setid-mode=owner --with-logfile=/var/log/apache2/suPHP.log --sysconfdir=/etc --with-setid-mode=force
# make
# make install
Die Datei /etc/suphp.conf erstellen:

Code: Select all

# cp suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf
Anpassung in /etc/suphp.conf

Code: Select all

[handlers]
;Handler for php-scripts
x-httpd-php=php:/opt/php5.2.1-fastcgi/bin/php (der Pfad muss stimmen, je nach
dem wohin PHP5 compiliert wurde)
Datei ändern:
/etc/sysconfig/apache2
Den letzten Eintrag hinzufügen

Code: Select all

APACHE_MODULES="actions alias auth_basic authn_file authz_host
authz_groupfile authz_default authz_user authn_dbm autoindex cgi dir env expires
include log_config mime negotiation setenvif ssl suexec userdir php5 rewrite suphp"
Anpassen der /usr/local/confixx/confixx_main.conf

Code: Select all

# vi /usr/local/confixx/confixx_main.conf
Diese Zeile ändern:

Code: Select all

$suphp_paranoid = '1';
Confixx konfigurieren (darf erst nach der Anpassung in confixx_main.conf geschehen)
Ausführen von:

Code: Select all

# /usr/local/confixx/admin/admin.pl
(2) Webserver -> (9) su_php [x]
Individuelle Einstelungen:
ändere Feature "PHP-Engine" ...

Code: Select all

Wo befindet sich die globale php.ini-Datei? [/etc/php5/cli/php.ini]:
Auswahl: /etc/php5/cli/php.ini
Wo möchten Sie die php.ini-Dateien der Benutzer ablegen? [/etc/php.ini.d]:
Auswahl: /etc/php.ini.d
(Bein anlegen eines neuen Users in Confixx wird hier automatisch für jeden User
eine eigene php.ini angelegt)
Möchten Sie php-Spezial verwenden? Falls ja, analysiert Confixx httpd-Speziale
nach php_admin_*-Direktiven und fügt php-Einstellungen zu einer Benutzer-php.ini-
Datei hinzu. [JA|nein]:JA
Confxx Updatescript
Um nicht auf den nächsten Cronjob warten zu müssen beim anlegen eines neuen
Users. Ausführen von:

Code: Select all

/usr/local/confixx/confixx_counterscript.pl
/usr/local/confixx/confixx_updatescript.pl
Confixx registrieren
Ausführen von:

Code: Select all

/usr/local/confixx/admin.STANDART/auto_reg.pl
UPDATE OK
Valid until: Sat Sep 22 13:55:03 2007
SUEXEC Fehlermeldung beim Start vom Apache beseitigen
Fehlermeldung: Warning: SuexecUserGroup directive requires SUEXEC wrapper.

Code: Select all

# chown root:www /usr/sbin/suexec2
# chmod 4755 /usr/sbin/suexec2