HowTo SuSE 10.1 + Confixx 3.2.1 + PHP 5.2.1 aus dem Source + suPHP 0.6.2 als fast CGI

coolsoft

Registered User
Letztes Update 19.02.2007 14:45

Zeichensatz Codierung und Translation im Putty anpassen für Umlaute und Sonderzeichen im vi
(s4y braucht dazu laut Angebot 3 Arbeitseinheiten á 39.00 EUR = 117 EUR)

Anlegen der Datei
~/.bash_profile

mit dem Inhalt:
export LC_ALL=de_DE@euro

Putty auf Translation 8859-1 (Lation1 - West Europe) stellen



Zusätzliche PHP Pakete über YaST installiert: (Braucht man vielleicht nicht alle, wer will kanns ja teilweise weglassen wenns dann trotzdem funktioniert ;-)

apache2-mod_fcgid
apache2-debuginfo

libapr-util1-debuginfo
libapr1-debuginfo
apache2-mod_fcgid-debuginfo
majordomo

gcc-ada
libada (Abhängigkeit)

gmp-devel 4.1.4-18
openldap-devel
lib-mcrypt-devel
mhash-devel
-+apache2-devel (löschen und neu installieren wegen Fehlermeldung beim PHP kompilieren)
-+apache2-debuginfo (löschen und neu installieren wegen Fehlermeldung beim PHP kompilieren)

mySQL RPM’s neu installieren (sonst kommt ein Fehler beim PHP ./configure)

+ imap-devel-2004g_suse-14
Auf RPMseek.com suchen imap-devel-2004g_suse-14.i586.rpm
Und installieren, da sonst das ./configure mit der Option –-with-imap nicht funktioniert!


YaST -> Onlineupdate (um auf dem neuesten Stand zu sein)

Files kopieren (sonst gab es bei mir eine Fehlermeldung weil die Dateien nicht existieren beim PHP installieren)
# 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: (man braucht vielleicht nicht alle Optionen, aber was man hat, das hat man ;-)
Ich denke die mehr-Serverlast fällt dann ins Gewicht wenn man -zig oder ein paar hundert Kunden hat.

# ./configure --with-exec-dir=/opt/php5.2.1-fastcgi/bin --prefix=/opt/php5.2.1-fastcgi --includedir=/opt/php5.2.1-fastcgi/include --libexecdir=/opt/php5.2.1-fastcgi/libexec --libdir=/opt/php5.2.1-fastcgi/lib --with-libxml-dir=/opt/php5.2.1-fastcgi/libxml2 --datadir=/opt/php5.2.1-fastcgi/lib --bindir=/opt/php5.2.1-fastcgi/bin --without-pear --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 --with-imap --with-imap-ssl --with-xsl

# make
# make install

suPHP installieren
Download von http://www.suphp.org/download/suphp-0.6.2.tar.gz nach /downloads/suPHP/

# cp -a /usr/lib/apr-1/build/* /usr/lib/build/ (sonst gabs bei mir eine Fehlermeldung)
# cp -a /usr/include/apr-1/* /usr/include/apache2 (sonst gabs bei mir eine Fehlermeldung)

# cd /downloads/suPHP
# ./configure --prefix=/usr --with-apxs=/usr/sbin/apxs2 --with-min-uid=500 --with-min-gid=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:
# cp suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf

Anpassung in /etc/suphp.conf

[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 kompiliert wurde)

Datei ändern:
/etc/sysconfig/apache2
Den grünen Eintrag hinzufügen
Kann aber sein das Confixx das automatisch macht, das habe ich noch nicht getestet.

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

Diese Zeile ändern:
$suphp_paranoid = '1';


Confixx konfigurieren (muss nach der Anpassung in confixx_main.conf geschehen)

Ausführen von:
# /usr/local/confixx/admin/admin.pl

(2) Webserver -> (9) su_php [x]

Individuelle Einstelungen:

ändere Feature "PHP-Engine" ...
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


Ändern der /etc/apache2/httpd.conf und Einfügen von:
(muss man das oder muss man das nicht?)
Hab das von server4downs aus einem anderen Posting... Danke!

<Directory "/srv/www">
php_admin_value engine off
suPHP_Engine on
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
</Directory>




Confxx Updatescript (Nur zur Info)
Um nicht auf den nächsten Cronjob warten zu müssen beim anlegen eines neuen Users. Ausführen von:
/usr/local/confixx/confixx_counterscript.pl
/usr/local/confixx/confixx_updatescript.pl



Soweit so gut, nun sollte suPHP funktionieren und beim anlegen eines neuen Users in Confixx sollten die suPHP Einträge in /etc/apache2/confixx_vhosts/webX.conf automatisch vorhanden sein.

Am besten testet man das mit einem kleinen PHP-Script:

<?
mkdir ("testneu");
?>

Dann sollte das erstellte Verzeichnis dem Selben User und Gruppe gehören wie das Script. (Nicht wwwrun)


Mit
<?
phpinfo();
?>
sollte als Eintrag erscheinen:

PHP Version 5.2.1
und
Server API - CGI/FastCGI


Wer Verbesserungsvorschläge hat kann das gerne mitteilen. Ich denke dann werde ich das Howto immer wieder verbessern. Aus eigener Erfahrung weis ich das es sonst es etwas mühsam ist als User wenn man nach einem Howto vorgeht das in einem Forum -zig Einträge hat.

--------------------
Webspace der Extraklasse 1A webspace
 
Last edited by a moderator:
Bringt das was?

Hallo,

danke für das ausführlich Howto.

Aber mal ne ganz andere Frage. Bringt es was php5 als fastcgi über suphp auszuführen? Kannte das immer nur entweder fastcgi oder suphp.
Wie sieht es da mit der Unterstützung in Confixx (neueste Version) aus?
suphp wird ja unterstützt aber macht das nen Unterschied, wenn das jetzt als fastcgi und nicht mehr cgi läuft?

Fragen über Fragen .... wer sich damit auskennt bitte mal seine Meinung äußern.
Danke!
 
Hallo,

um es simpel zu fassen:
es ist schlichtweg ein Mix aus suPHP und FastCGI. Somit werden die Scripte schneller ausgeführt. Wenn man es jedoch nur als FastCGI installieren würde, hätte man gut was zu konfigurieren (Prozesse, Memory etc). Die Rechtevergabe etc wird in diesem Falle von suPHP erledigt.

Eine richtige FastCGI Unterstützung gibt es in Confixx nicht.
 
Hallo,

tolle Anleitung aber ich habe noch ein paar Probleme. Momentan hat der Server Suse 9.3 mit Confixx Premium. Ich habe wie folgt kompiliert:

Code:
./configure --with-exec-dir=/opt/php5.2.1-fastcgi/bin --prefix=/opt/php5.2.1-fastcgi --includedir=/opt/php5.2.1-fastcgi/include --libexecdir=/opt/php5.2.1-fastcgi/libexec --libdir=/opt/php5.2.1-fastcgi/lib --with-libxml-dir=/opt/php5.2.1-fastcgi/libxml2 --datadir=/opt/php5.2.1-fastcgi/lib --bindir=/opt/php5.2.1-fastcgi/bin --without-pear --with-mime-magic --with-mhash --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 --with-imap --with-imap-ssl --with-xsl


./configure --prefix=/usr --with-apxs=/usr/sbin/apxs2 --with-min-uid=500 --with-min-gid=500 --with-php=/opt/php5.2.1-fastcgi/bin/php --with-apache-user=wwwrun --with-setid-mode=owner --with-logfile=/var/log/apache2/suPHP.log --sysconfdir=/etc --with-setid-mode=force

Und es kamen auch keine Fehlermeldungen.

Code:
Anpassen der /usr/local/confixx/confixx_main.conf

Diese Zeile ändern:
$suphp_paranoid = '1';


Confixx konfigurieren (muss nach der Anpassung in confixx_main.conf geschehen)

Ausführen von:
# /usr/local/confixx/admin/admin.pl

(2) Webserver -> (9) su_php [x]

Die Variable $suphp_paranoid = '1'; gibt es bei mir gar nicht. Wenn ich Sie manuell hinzufüge bringt das aber irgendwie keinen Effekt, da sich zwar mit "/usr/local/confixx/admin/admin.pl" die Datei aufrufen lässt, aber dort nicht (unter Webserver) su_php steht.

Was hab ich falsch gemacht? Sofern ich diese beiden Schritte ignoriere und ich in der httpd.conf folgendes reinschreibe geht gar nix mehr:

<Directory "/srv/www">
php_admin_value engine off
suPHP_Engine on
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
</Directory>

Nehme ich das wieder raus und reloade den Apache wieder kommt die alte Konfiguration

______________________________
Edit: Nun hab ich php mit der oberen Anweisung (aus dem Tutorial) compiliert. Bei suphp macht er aber noch faxen:
checking for APR... configure: error: the --with-apr parameter is incorrect. It must specify an install prefix, a
build directory, or an apr-config file.

Apr ist aber drauf, nur nicht die oben gennante apr-1. Schau ich in Yast rein, zeigt er mit beim suchen unter "apr" folgendes:
i │libapr0│2.0.53 │2.0.53 │Apache Portable Runtime (APR) Bibliothek│ 1.3 MB│

Also müsste das doch eigentlich drin sein? Keine Ahnung wie der Pfad dazu ist, wie kann man das rauskriegen? Naja, wie auch immer. Auf jeden Fall habe ich das dann ohne "--with-apr=/usr/bin/apr-1-config" compiliert. Der Rest ist aber wieder wie vorher, also findet man $suphp_paranoid = '1'; gar nicht und muss es, ohne Effekt, per Hand eintragen.
 
Last edited by a moderator:
Hallo.

So wie das aussieht hast du eine zu alte Confixx Version. Hast du Confixx 3.2.1?

Wenn nein: Vorhaben gescheitert -> Update machen :)
 
Ich habe die Confixx-Version von S4Y, also Confixx-Premium. Man müsste es doch auch mit dieser Version zum laufen kriegen oder nicht? :/
 
Hallo.

Nein, nicht mit diesem HowTo!
Machbar wäre es gewissermaßen schon, jedoch wenn du für jeden Host eine eigene php.ini haben willst wird es mit viel Aufwand verbunden sein.
Ich rate dir eher von ab.
 
Also ich möchte eigentlich nicht unbedingt, dass jeder eine eigene php.ini hat. Mir geht es lediglich darum mehr Sicherheit in meiner PHP installation zu haben und trotz dessen den Safemode deaktivieren zu können (wegen Joomla und Co).

Als einzige Lösung fällt mir da nur suPHP oder CGI ein. Was könntest du mir hier empfehlen (eventuell mit Link)?
 
Eventuell:
Ansonsten kannst du es auch mit suPHP hinbiegen.
Tip: benutze httpd_special um den suPHP-Benutzer pro Host einzustellen.
Was für dich leichter ist, kann ich leider nicht sagen. Für mich ist beides Routine :)
 
Hm ich hab jetzt PHP5 normal geupdatet, aber es erscheint immer noch die 5.2 Version. Wo muss ich das den genau umstellen? Normerlweise updated er das von alleine soweit ich weiß oder nicht?
 
Hallo,

leicht OffTopic, da Debian, vielleicht könnt Ihr mir ein paar Basis-Verständnisfragen beantworten:

1.) Wenn ich suphp verwende, brauche ich doch dafür kein cgi/fcgi Modul im Apache, da ja suphp das php-cgi binary ausführt?

2.) Auf meiner Debian Installation liegt folgender Sachverhalt vor:

PHP-Version:
Code:
[B]php5-cgi  --version[/B]
PHP 5.2.0-8+etch1 (cgi-fcgi) (built: Mar  7 2007 23:29:30)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
    with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer v3.2.6, Copyright (c) 1998-2007, by Zend Technologies
Wenn ich das also richtig sehe, kann ich dieses php-bin per cgi und/oder fcgi ansprechen?

suphp.conf:
[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php-cgi


Woher weiss ich jetzt, auf welche Art und Weise suphp mein php-bin aufruft?
 
Woher weiss ich jetzt, auf welche Art und Weise suphp mein php-bin aufruft?
Einfach die phpinfo() aufrufen und wenn dort bei "Server API" nur "CGI" steht, dann ist es nicht mit FastCGI, wenn "FastCGI/CGI" (oder andersrum) dort steht, dann ist es mit FastCGI.
 
Da steht CGI/FastCGI, dachte das wäre so ein allgemeiner String, so nach dem Motto, eines von beiden... Wenn das unterscheiden kann, warum stehts dann nicht ganz genau da?
 
Das hat schon so seine Richtigkeit. Wieso? Keine Ahnung. Fakt :)
Rasmus Leerdorf könnte dir das eventuell beantworten ;)
 
Ich hoffe es ist ok das ich den alten Thread hier raushole.

Ich habe Confixx neu installiert (aktuelle 3er, OS: Suse 10.3), kann allerdings keine Seite aufrufen (auch nicht im Confixx zu registrieren).

In der error.log stand zuerst: No user or group set - set suPHP_UserGroup

Dann habe ich folgendes eingegeben:
/srv/www/htdocs # chgrp confixx confixx
Vorher war hier "www"

Seitdem steht in der Log: (13)Permission denied: access to /reg/ denied

Was genau hat das zu bedeuten? In dem Maindateien habe ich suPHP aktiviert (war bei der Installation angegeben). Die Installation von Confixx verlief einwandfrei, lediglich dieses Problem tritt auf. Weitere Informationen:

vi /etc/apache2/conf.d/suphp.conf:
Code:
<IfModule mod_suphp.c>
  <Directory "/srv/www">
    suPHP_Engine on
    AddHandler x-httpd-php .php .php3 .php4 .php5 .phtml
    suPHP_AddHandler x-httpd-php
    DirectoryIndex index.php index.php3 index.php4 index.php5
  </Directory>
</IfModule>

vi /etc/sysconfig/apache2
Code:
....

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 rewrite php5 suphp"
 
Bitte HowTo lesen und verstehen.

Diese Zeile ändern:
$suphp_paranoid = '1';
Das sollte dir helfen.
Dann nochmals suPHP aktivieren.
 
Das steht bereits auf 1:

/root/confixx/confixx_main.conf: $suphp_paranoid = '1';


Ich habe jetzt nochmal den suphp neu ausgepackt und kompiliert. Jetzt lautet die Meldung: [Thu Mar 06 19:10:44 2008] [info] Executing "/srv/www/htdocs/confixx/html/reg/index.php" as UID 641, GID 500

bzw. im Browser:
Internal Server Error
Could not execute script "/srv/www/htdocs/confixx/html/reg/index.php"
 
Last edited by a moderator:
@Heinzelfried liegen vlt irgendwelche alten .htaccess Datein rum die ihn stören?
Bei mir gabs die größten Probleme am Anfang auch mit falschen Dateieigentümern.


Allerdings verzweifle ich gerade daran das innerhalb des Confixx zwar die korrekte php.ini geladen wird, aber unter jedem webX werden die compile-Defaults geladen und keinerlei ini:

Code:
Loaded Configuration File 	(none)

Logfiles haben nichts ungewöhnliches zu sagen.
Von Confixx werden die php.inis unterhalb von /etc/apache2/confixx_phpini im jeweiligen webX Ordner bzw. in einem Zahlenunterordner 1/ 2/ abgelegt.
Laut _SERVER["PHPRC"] is der Pfad auch innerhalb PHP bekannt. Aber er läd einfach nichts. :confused:

// EDIT
War die Auswirkung eines anderen Fehlers. Durch einen Fehlerhaften alten Eintraf in der default Apache config hats immer den falschen Benutzer geladen. Dadurch konnte er die php.inis wegen Zugriffmangel nicht öffnen.
 
Last edited by a moderator:
Back
Top