Apache2 und PHP unter anderem User
Apache2 und PHP unter anderem User
Hallo!
Also, ich versuche das dann nochmal anders.
Wenn es also unmöglich ist, dem Apache2 unter dem mpm-mod worker beizu bringen, dass er wieder gefälligst für jeden VHost andere User acceptiert, ist denn möglich, dann nur php-scripte unter einem anderen User parsen zu lassen? - Bei dem punkt, dass php als apache-modul drin bleibt (also kein suEXEC etc...), besteht weiterhin.
MfG
Krispin
Also, ich versuche das dann nochmal anders.
Wenn es also unmöglich ist, dem Apache2 unter dem mpm-mod worker beizu bringen, dass er wieder gefälligst für jeden VHost andere User acceptiert, ist denn möglich, dann nur php-scripte unter einem anderen User parsen zu lassen? - Bei dem punkt, dass php als apache-modul drin bleibt (also kein suEXEC etc...), besteht weiterhin.
MfG
Krispin
-
majortermi
- Userprojekt

- Posts: 916
- Joined: 2002-06-17 16:09
Re: Apache2 und PHP unter anderem User
Nein, entweder du benutzt das "perchild" MPM, oder du musst PHP als CGI mit suExec laufen lassen (warum sollte dir eigentlich klar sein, wenn du das Konzept verstanden hast).
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
Warum man sich an diese Reihenfolge halten sollte...
-
majortermi
- Userprojekt

- Posts: 916
- Joined: 2002-06-17 16:09
Re: Apache2 und PHP unter anderem User
Was mir gerade noch eingefallen ist: Warum benutzt du das "worker" MPM statt des ausgereiften, stablien "perfork" MPM. Der Performance-Unterschied dürfte unter Linux doch erst beim neuen 2.6er Kernel spürbar werden.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
Warum man sich an diese Reihenfolge halten sollte...
Re: Apache2 und PHP unter anderem User
Weil worker sehr viel besser skaliert und flexibler ist. Es ist einfach die bessere Architektur. Nicht nur auf SMP-Maschienen, wenn auch da besonders. Warum jemand perfork benutzen sollte bleibt unklar, entweder perchild wegen dem "besseren suexec" oder worker.
-
majortermi
- Userprojekt

- Posts: 916
- Joined: 2002-06-17 16:09
Re: Apache2 und PHP unter anderem User
Aber unter Linux vor Version 2.5 ist die Thread-Unterstützung doch eher schlecht, von der Seite her sehe ich nicht ganz, was der Vorteil von mutithreading gegenber multiprocessing ist.øxygen wrote:Weil worker sehr viel besser skaliert und flexibler ist. Es ist einfach die bessere Architektur. Nicht nur auf SMP-Maschienen, wenn auch da besonders.
Davon abgesehen, hat man beim prefork MPM keine Probleme mit Programmen, die nicht reentrant sind.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
Warum man sich an diese Reihenfolge halten sollte...
Re: Apache2 und PHP unter anderem User
Dieses Multi-Processing-Modul (MPM) [...worker...] implementiert einen Hybrid-Server mit Multi-Thread und Multi-Prozess-Unterstützung. Durch die Verwendung von Threads für die Bedienung von Anfragen ist er in der Lage, eine große Anzahl von Anfragen mit weniger Systemressourcen als ein Prozess-basierter Server zu bedienen. Er behält jedoch viel von der Stabilität eines Prozess-basierten Servers bei, indem er mehrere Prozesse verfügbar hält, jeden mit etlichen Threads.
Re: Apache2 und PHP unter anderem User
haste es schonmal geschaft, Perchild auf Linux zu Compilieren, und dass dann auch Lauffähig zu kriegen!?MajorTermi wrote:Nein, entweder du benutzt das "perchild" MPM, oder du musst PHP als CGI mit suExec laufen lassen (warum sollte dir eigentlich klar sein, wenn du das Konzept verstanden hast).
Schreibt die voin Apache doch selber bei diesem Mod dabei, eingerahmt!
SuExec - NEIN, weil erstmal ist es nicht das ware von der Performince her, und zweitens gibbet dann keine $_env und $_server - vars...
MfG
Krispin
-
majortermi
- Userprojekt

- Posts: 916
- Joined: 2002-06-17 16:09
Re: Apache2 und PHP unter anderem User
Nö, was meinst du, warum ich Apache 1.3.x benutze?krispin wrote:haste es schonmal geschaft, Perchild auf Linux zu Compilieren, und dass dann auch Lauffähig zu kriegen!?
Naja, in den meisten Fällen wirst du den Performance-Unterschied nicht wirklich merken.SuExec - NEIN, weil erstmal ist es nicht das ware von der Performince her, und zweitens gibbet dann keine $_env und $_server - vars...
Und $_ENV bzw. $_SERVER gibt es trotzdem.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
Warum man sich an diese Reihenfolge halten sollte...
Re: Apache2 und PHP unter anderem User
"man wirt es zwar nicht merken" ,
aber das ist keine wirklich gute Argument ;)
Ich habe da nun auch ne lösung, für den Server, der ne Andere ID brauch, habe ich nun den Debian Apache-SSL installiert, und Prob gelöst :)
MfG
Krispin
aber das ist keine wirklich gute Argument ;)
Ich habe da nun auch ne lösung, für den Server, der ne Andere ID brauch, habe ich nun den Debian Apache-SSL installiert, und Prob gelöst :)
MfG
Krispin
Re: Apache2 und PHP unter anderem User
Also ich habe gerade mal testweise apache2-prechild gebaut. Funktioniert. Hier so sieht das dann aus:
Weiß eigentlich jemand ob confixx das unterstützt? Das hat mich auf den Geschmack gebracht...
Code: Select all
#httpd -l
Compiled in modules:
core.c
perchild.c
http_core.c
mod_so.c
#httpd -V
Server version: Apache/2.0.47
Server built: Aug 20 2003 16:29:15
Server's Module Magic Number: 20020903:4
Architecture: 32-bit
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/experimental/perchild"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D HTTPD_ROOT="/usr"
-D SUEXEC_BIN="/usr/bin/suexec"
-D DEFAULT_PIDLOG="/var/run/httpd.pid"
-D DEFAULT_LOCKFILE="/var/run/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/httpd/mime.types"
-D SERVER_CONFIG_FILE="/etc/httpd/httpd.conf"
#ps aux | grep httpd
root 13482 0.6 0.8 4308 2112 ? S 00:33 0:00 /usr/sbin/httpd2-perchild -f /etc/apache2/httpd.conf
wwwrun 13483 0.0 0.8 4252 2076 ? S 00:33 0:00 /usr/sbin/httpd2-perchild -f /etc/apache2/httpd.conf
vhost1 13484 0.3 0.8 4356 2212 ? S 00:33 0:00 /usr/sbin/httpd2-perchild -f /etc/apache2/httpd.conf
vhost1 13485 0.0 0.8 4356 2212 ? S 00:33 0:00 /usr/sbin/httpd2-perchild -f /etc/apache2/httpd.conf
vhost2 13486 0.3 0.8 4356 2212 ? S 00:33 0:00 /usr/sbin/httpd2-perchild -f /etc/apache2/httpd.conf
vhost2 13487 0.3 0.8 4356 2212 ? S 00:33 0:00 /usr/sbin/httpd2-perchild -f /etc/apache2/httpd.conf
Re: Apache2 und PHP unter anderem User
unter welchem distri denn denn?
und würdeste bitte auch mal die Funktion, die perchild bietet ausprobieren?
Weil ab da es bei mir nämlich dann gescheitert hat!
mit PerchildUserID etc...
und AssignUserID bei Vhost ...
ließ dir das mal ganz genau durch!
http://httpd.apache.org/docs-2.0/de/mod/perchild.html
Ps: auf feedback bin ivh gespannt, weil ich das nämlich trotzdem gerne irgendwie mal hinkriegen würde :)
und würdeste bitte auch mal die Funktion, die perchild bietet ausprobieren?
Weil ab da es bei mir nämlich dann gescheitert hat!
mit PerchildUserID etc...
und AssignUserID bei Vhost ...
ließ dir das mal ganz genau durch!
http://httpd.apache.org/docs-2.0/de/mod/perchild.html
Ps: auf feedback bin ivh gespannt, weil ich das nämlich trotzdem gerne irgendwie mal hinkriegen würde :)
Re: Apache2 und PHP unter anderem User
Es funktioniert. Sieht man ja an dem ps Auszug. Distribution war eine SuSE 8.1, mein Test Rechner Zuhause. Folgende Konfiguration hab ich getestet (incl. php und perl):
Das Ergebnis sieht man oben.
Hier ein kleiner Ã?berblick was ich gemacht habe:
Folgendes Paket habe ich der Einfachheit halber benutzt: ftp://ftp.suse.com/pub/projects/apache/ ... 20.src.rpm
in apache2.spec
Durch folgendes ersetzt:
RPMs bauen:
rpm -ba /usr/src/packages/SPECS/apache2.spec
RPMs installieren:
rpm -i /usr/src/packages/RPMS/i386/apache2*
Modulverzeichnis korrigieren:
rm -R /etc/apache2/modules
ln -s /usr/lib/apache2 /etc/apache2/modules
Standards anpassen:
vi /etc/sysconfig/apache2
Abschließen:
SuSEconfig --module apache2
Konfiguration anpassen:
vi /etc/apache2/httpd.conf
starten:
rcapache2 start
Läuft und Funktioniert.
Das Ergebnis sieht man oben.
Code: Select all
ChildPerUserID vhost1 wwwdocs 2
ChildPerUserID vhost2 wwwdocs 2
<VirtualHost *>
DocumentRoot /www/vhost1
ServerName vhost1.server.local
AssignUserID vhost1 wwwdocs
</VirtualHost>
<VirtualHost *>
DocumentRoot /www/vhost2
ServerName vhost2.server.local
AssignUserID vhost2 wwwdocs
</VirtualHost>
Folgendes Paket habe ich der Einfachheit halber benutzt: ftp://ftp.suse.com/pub/projects/apache/ ... 20.src.rpm
in apache2.spec
Code: Select all
%define default_mpm prefork
%{!?perchild:%define perchild 0}
%{!?prefork:%define prefork 1}
%{!?worker:%define worker 1}
%{!?leader:%define leader 1}
Code: Select all
%define default_mpm perchild
%{!?perchild:%define perchild 1}
%{!?prefork:%define prefork 0}
%{!?worker:%define worker 0}
%{!?leader:%define leader 0}
rpm -ba /usr/src/packages/SPECS/apache2.spec
RPMs installieren:
rpm -i /usr/src/packages/RPMS/i386/apache2*
Modulverzeichnis korrigieren:
rm -R /etc/apache2/modules
ln -s /usr/lib/apache2 /etc/apache2/modules
Standards anpassen:
vi /etc/sysconfig/apache2
Abschließen:
SuSEconfig --module apache2
Konfiguration anpassen:
vi /etc/apache2/httpd.conf
starten:
rcapache2 start
Läuft und Funktioniert.
Re: Apache2 und PHP unter anderem User
super.... nur hat Debian keine RPMs :(
Re: Apache2 und PHP unter anderem User
Tja. Aber ich wüsste nicht warum es mit dem normalen Sourcepaket nicht gehen sollte.
Re: Apache2 und PHP unter anderem User
ich auch probiere es doch mal aus!
es der Compilert wunder bar, jedoch, kommt ein Request rein, stürzt der apache ab...
und vor allen dingen, wenne das dann mal machst, musste mir umgedingt mal den ./configure -befehl geben!
MfG
Krispin
es der Compilert wunder bar, jedoch, kommt ein Request rein, stürzt der apache ab...
und vor allen dingen, wenne das dann mal machst, musste mir umgedingt mal den ./configure -befehl geben!
MfG
Krispin
Re: Apache2 und PHP unter anderem User
also mein ./configure vom apache2 sähe dann so aus:
von PHP4.3.3RC4
Code: Select all
./configure
--enable-maintainer-mode
--enable-layout=SuSE81
--with-program-name=httpd2-perchild
--with-mpm=perchild
--with-perl=`which perl`
--enable-mods-shared=all
--enable-ssl=shared
--disable-deflate
--enable-echo
--enable-ext-filter
--enable-charset-lite
--enable-file-cache
--enable-logio
--enable-case_filter
--enable-case_filter_in
--with-ldap
--enable-ldap
--enable-auth_ldap
--enable-proxy
--enable-proxy-connect
--enable-proxy-ftp
--enable-proxy-http
--enable-cache
--enable-disk-cache
--enable-mem-cache
Code: Select all
./configure
--prefix=/usr/share
--datadir=/usr/share/php
--bindir=/usr/bin
--libdir=/usr/share
--with-config-file-path=/etc
--with-exec-dir=/usr/lib/php/bin
--with-mysql=/usr
--with-zlib
--with-bz2
--with-ftp
--with-gettext
--disable-debug
--with-openssl
--with-apxs2=/usr/sbin/apxs2-perchild
--silent
Last edited by oxygen on 2003-08-21 18:56, edited 1 time in total.
Re: Apache2 und PHP unter anderem User
ähm, aber du compilierst den shit dann auch noch?
MfG
Krispin
Nicht dein Ernst, oder? :D - Obwohl es sich auch "spacig" anhört ;)./configure
--with-mpm=prechild
MfG
Krispin
Re: Apache2 und PHP unter anderem User
Ich musste denn ./configure String aus dem spec File fischen... das sollte natürlich perchild heißen.
Re: Apache2 und PHP unter anderem User
nix.... will einfach nicht.. argl... aber moment.. ich habe ja noch das mod_vdbh im core drin, werde ich mal entfernen...
Re: Apache2 und PHP unter anderem User
ne, daran lag es auch nicht..... perchild will einfach nicht... aber ich bin zuversichtlich, da die von Apache-Foundation schreiben, dass die an dem Problem arbeiten, da man dieses Modul nur auf wenigen OSs bis nun am laufen kriegen soll.!
http://httpd.apache.org/docs-2.0/mod/perchild.html
ich dem rot eingerahmten Kasten.
Naja, so richtig brauchen tu ich das perchild ja nicht, aber es ärgert mich nun, dass ich es nicht m laufen kriege ;)
MfG
Krispin
http://httpd.apache.org/docs-2.0/mod/perchild.html
ich dem rot eingerahmten Kasten.
Naja, so richtig brauchen tu ich das perchild ja nicht, aber es ärgert mich nun, dass ich es nicht m laufen kriege ;)
MfG
Krispin