Server Installation · 14 min read · Nov 05, 2025
ISPCP auf Ubuntu Lucid x86_64 installieren und Chroot pro virtuellen Host in Apache2 implementieren
ISPCP auf Ubuntu Lucid x86_64 installieren und Chroot pro virtuellen Host in Apache2 implementieren
Server installieren
Installieren Sie einen grundlegenden Ubuntu Lucid x86_64-Server, indem Sie die ersten beiden Seiten von The Perfect Server - Ubuntu Lucid Lynx (Ubuntu 10.04) [ISPConfig 2] howto befolgen.
ISPCP installieren
Laden Sie die ISPCP-Quellen von der offiziellen Download-Seite herunter. Dieser Leitfaden basiert auf 1.0.6. Entpacken Sie es und wechseln Sie in das entpackte Verzeichnis.
tar xf iscp-omega-1.0.6.tar.gzcd ispcp-omega-1.0.6cp docs/Ubuntu/ubuntu-packages-karmic docs/Ubuntu/ubuntu-packages-lucidBearbeiten Sie docs/Ubuntu/ubuntu-packages-lucid und ersetzen Sie diese Einträge:
libmd5-perl
libmysqlclient15offdurch diese:
libdigestmd5-perl
libmysqlclient16Befolgen Sie die Installationsschritte, die in docs/Ubuntu/INSTALL beschrieben sind. Stellen Sie beim Ausführen von ispcp-setup sicher, dass Sie FastCGI auswählen. Ihr standardmäßiges ISPCP-System sollte zu diesem Zeitpunkt funktionieren, und die Ausgabe von ps auxf sollte sehr ähnlich aussehen wie diese:
root 25761 0.0 1.7 138304 36360 ? Ss 10:56 0:00 /usr/sbin/apache2 -k start
root 25762 0.0 0.0 4096 580 ? S 10:56 0:00 \_ /bin/sh -c /var/www/ispcp/engine/ispcp-apache-logger -e
root 25764 0.0 0.7 62624 15416 ? S 10:56 0:00 | \_ /usr/bin/perl /var/www/ispcp/engine/ispcp-apache-logger -e
root 25763 0.0 0.0 4096 576 ? S 10:56 0:00 \_ /bin/sh -c /var/www/ispcp/engine/ispcp-apache-logger
root 25765 0.0 0.7 62624 15416 ? S 10:56 0:00 | \_ /usr/bin/perl /var/www/ispcp/engine/ispcp-apache-logger
www-data 25766 0.0 1.6 138004 34416 ? S 10:56 0:00 \_ /usr/sbin/apache2 -k start
www-data 25767 0.0 1.6 138004 34372 ? S 10:56 0:00 \_ /usr/sbin/fcgi-pm -k start
vu2000 25768 0.0 0.4 147120 8936 ? Ss 10:56 0:00 | \_ /usr/bin/php5-cgi
vu2000 25826 0.0 0.7 155448 15156 ? S 10:56 0:00 | \_ /usr/bin/php5-cgi
vu2000 25827 0.0 0.1 147120 3788 ? S 10:56 0:00 | \_ /usr/bin/php5-cgi
www-data 25769 0.0 1.8 427808 37468 ? Sl 10:56 0:00 \_ /usr/sbin/apache2 -k start
www-data 25778 0.0 1.7 427688 36796 ? Sl 10:56 0:00 \_ /usr/sbin/apache2 -k startBenutzerdefinierten Suexec-Wraper kompilieren
Der größte Teil dieses Abschnitts basiert auf dem hervorragenden Beitrag bei metaclarity. Laden Sie die Apache HTTPd-Quellen von der offiziellen Download-Seite herunter. Dieser Leitfaden basiert auf 2.2.16.
tar xf httpd-2.2.16.tar.bz2cd httpd-2.2.16/supportWenden Sie die Patches an.
--- Makefile.in.old 2009-04-21 09:59:33.000000000 -0400
+++ Makefile.in 2009-04-21 10:04:11.000000000 -0400
@@ -59,9 +59,13 @@
$(LINK) $(checkgid_LTFLAGS) $(checkgid_OBJECTS) $(PROGRAM_LDADD)
suexec_OBJECTS = suexec.lo
-suexec: $(suexec_OBJECTS)
+suexec: $(suexec_OBJECTS) suexec-phpfcgi
$(LINK) $(suexec_OBJECTS)
+suexec-phpfcgi_OBJECTS = suexec-phpfcgi.lo
+suexec-phpfcgi: $(suexec-phpfcgi_OBJECTS)
+ $(LINK) $(suexec-phpfcgi_OBJECTS)
+
htcacheclean_OBJECTS = htcacheclean.lo
htcacheclean: $(htcacheclean_OBJECTS)
$(LINK) $(htcacheclean_LTFLAGS) $(htcacheclean_OBJECTS) $(PROGRAM_LDADD) --- suexec.c 2010-07-12 11:26:29.000000000 +0200
+++ suexec-phpfcgi.c 2010-09-14 10:07:36.581742585 +0200
@@ -259,6 +259,7 @@
char *cmd; /* auszuführender Befehl */
char cwd[AP_MAXPATH]; /* aktuelles Arbeitsverzeichnis */
char dwd[AP_MAXPATH]; /* docroot Arbeitsverzeichnis */
+ char nwd[AP_MAXPATH]; /* nach-chroot Arbeitsverzeichnis */
struct passwd *pw; /* Passwort-Eintrag Halter */
struct group *gr; /* Gruppen-Eintrag Halter */
struct stat dir_info; /* Verzeichnisinfo Halter */
@@ -456,7 +457,6 @@
log_err("kann nicht als verbotene uid (%d/%s) ausgeführt werden\n", uid, cmd);
exit(107);
}
-
/*
* Fehler, wenn versucht wird, als Root-Gruppe oder als GID kleiner als AP_GID_MIN auszuführen. Tsk tsk.
@@ -466,6 +466,42 @@
exit(108);
}
+
+ int striplen = strlen (target_homedir);
+
+ char* tlen = strchr(target_homedir, '/');
+ char* hlen = strchr(tlen+1, '/');
+ char* ulen = strchr(hlen+1, '/');
+ char* chroot_dir = strndup(target_homedir, striplen);
+ char* pt = getenv("PATH_TRANSLATED");
+ if (pt != 0) {
+ setenv("PATH_TRANSLATED", pt + (ulen - target_homedir), 1);
+ }
+
+ setenv("DOCUMENT_ROOT", "/", 1);
+
+ if (getcwd(nwd, AP_MAXPATH) == NULL) {
+ log_err("kann aktuelles Arbeitsverzeichnis (prechroot) nicht abrufen\n");
+ exit(111);
+ }
+
+ char* trunc_nwd = strndup("/fcgi", 5);
+
+ if (chdir(chroot_dir)) {
+ log_err("kritisch: kann nicht in chroot-Verzeichnis (%s) wechseln",chroot_dir);
+ exit(121);
+ }
+
+ if (chroot(chroot_dir) != 0) {
+ log_err("Notfall: chroot fehlgeschlagen (%s, %s)\n", chroot_dir, cmd);
+ exit(122);
+ }
+
+ if (chdir (trunc_nwd)) {
+ log_err("kritisch: kann nicht in %s innerhalb von chroot %s wechseln\n", trunc_nwd, chroot_dir);
+ exit(42);
+ }
+
/*
* UID/GID hier ändern, damit die folgenden Tests über NFS funktionieren.
*
@@ -498,22 +534,11 @@
exit(111);
}
- if (userdir) {
- if (((chdir(target_homedir)) != 0) ||
- ((chdir(AP_USERDIR_SUFFIX)) != 0) ||
- ((getcwd(dwd, AP_MAXPATH)) == NULL) ||
- ((chdir(cwd)) != 0)) {
- log_err("kann docroot-Informationen (%s) nicht abrufen", target_homedir);
- exit(112);
- }
- }
- else {
- if (((chdir(AP_DOC_ROOT)) != 0) ||
- ((getcwd(dwd, AP_MAXPATH)) == NULL) ||
- ((chdir(cwd)) != 0)) {
- log_err("kann docroot-Informationen (%s) nicht abrufen", AP_DOC_ROOT);
- exit(113);
- }
+ if (((chdir(getenv("DOCUMENT_ROOT"))) != 0) ||
+ ((getcwd(dwd, AP_MAXPATH)) == NULL) ||
+ ((chdir(cwd)) != 0)) {
+ log_err("kann docroot-Informationen (%s) nicht abrufen", AP_DOC_ROOT);
+ exit(113);
}
if ((strncmp(cwd, dwd, strlen(dwd))) != 0) {
@@ -565,7 +590,7 @@
* Fehler, wenn der Zielname/die Gruppe von
* dem Namen/der Gruppe des cwd oder des Programms abweicht.
*/
- if ((uid != dir_info.st_uid) ||
+/* if ((uid != dir_info.st_uid) ||
(gid != dir_info.st_gid) ||
(uid != prg_info.st_uid) ||
(gid != prg_info.st_gid)) {
@@ -575,7 +600,7 @@
dir_info.st_uid, dir_info.st_gid,
prg_info.st_uid, prg_info.st_gid);
exit(120);
- }
+ }*/
/*
* Fehler, wenn das Programm für den Benutzer nicht ausführbar ist.
* Andernfalls findet sie keinen Fehler in den Protokollen, außer für patch -p0 < ../../makefile.diffpatch -p0 -o suexec-phpfcgi.c < ../../suexec-phpfcgi.diffBearbeiten Sie suexec.h:
AP_HTTPD_USER www-data
AP_UID_MIN 2000
AP_GID_MIN 2000
AP_LOG_EXEC "/tmp/suexec.log"
AP_DOC_ROOT "/"cd ..configure --prefix=/usr/lib/apache2 --enable-suexec --enable-mods-shared=most --enable-so --with-mpm=worker --with-included-aprcd supportmake suexecInstallieren Sie den neuen suexec-Wraper.
cp suexec-phpfcgi /usr/lib/apache2chown .www-data /usr/lib/apache2/suexec-phpfcgichmod 4751 /usr/lib/apache2/suexec-phpfcgiAktualisieren Sie /etc/apache2/modules-enables/fastcgi_ispcp.conf, um den neuen Wrapper zu verwenden:
FastCgiWrapper /usr/lib/apache2/suexec-phpfcgiChroot für virtuelle Hosts erstellen
Das Folgende ist ein ausreichendes Chroot. Ich habe meines in /usr/local/skel gelegt. Sie möchten möglicherweise weitere/andere Zeitzonen hinzufügen.
.
\__ bin -> chroot/bin
\__ chroot
| \__ bin
| | \__ dash
| | \__ sh -> dash
| \__ dev
| | \__ null
| | \__ urandom
| | \__ zero
| \__ etc
| | \__ group
| | \__ host.conf
| | \__ hosts
| | \__ locale.alias
| | \__ localtime
| | \__ nsswitch.conf
| | \__ passwd
| | \__ php5
| | | \__ cgi
| | | | \__ conf.d -> ../conf.d
| | | | \__ php.ini
| | | \__ conf.d
| | | | \__ adodb.ini
| | | | \__ gd.ini
| | | | \__ mcrypt.ini
| | | | \__ mysqli.ini
| | | | \__ mysql.ini
| | | | \__ pdo.ini
| | | | \__ pdo_mysql.ini
| | | \__ php.ini
| | \__ protocols
| | \__ resolv.conf
| | \__ services
| \__ lib
| | \__ ld-2.11.1.so
| | \__ ld-linux-x86-64.so.2 -> ld-2.11.1.so
| | \__ libbz2.so.1 -> libbz2.so.1.0.4
| | \__ libbz2.so.1.0 -> libbz2.so.1.0.4
| | \__ libbz2.so.1.0.4
| | \__ libc-2.11.1.so
| | \__ libcom_err.so.2 -> libcom_err.so.2.1
| | \__ libcom_err.so.2.1
| | \__ libcrypt-2.11.1.so
| | \__ libcrypto.so.0.9.8
| | \__ libcrypt.so.1 -> libcrypt-2.11.1.so
| | \__ libc.so.6 -> libc-2.11.1.so
| | \__ libdl-2.11.1.so
| | \__ libdl.so.2 -> libdl-2.11.1.so
| | \__ libexpat.so.1 -> libexpat.so.1.5.2
| | \__ libexpat.so.1.5.2
| | \__ libgcc_s.so.1
| | \__ libkeyutils-1.2.so
| | \__ libkeyutils.so.1 -> libkeyutils-1.2.so
| | \__ libm-2.11.1.so
| | \__ libm.so.6 -> libm-2.11.1.so
| | \__ libncurses.so.5 -> libncurses.so.5.7
| | \__ libncurses.so.5.7
| | \__ libnsl-2.11.1.so
| | \__ libnsl.so.1 -> libnsl-2.11.1.so
| | \__ libnss_dns-2.11.1.so
| | \__ libnss_dns.so.2 -> libnss_dns-2.11.1.so
| | \__ libnss_files-2.11.1.so
| | \__ libnss_files.so.2 -> libnss_files-2.11.1.so
| | \__ libnss_nis-2.11.1.so
| | \__ libnss_nis.so.2 -> libnss_nis-2.11.1.so
| | \__ libpam.so.0 -> libpam.so.0.82.2
| | \__ libpam.so.0.82.2
| | \__ libpcre.so.3 -> libpcre.so.3.12.1
| | \__ libpcre.so.3.12.1
| | \__ libpng12.so.0 -> libpng12.so.0.42.0
| | \__ libpng12.so.0.42.0
| | \__ libpthread-2.11.1.so
| | \__ libpthread.so.0 -> libpthread-2.11.1.so
| | \__ libresolv-2.11.1.so
| | \__ libresolv.so.2 -> libresolv-2.11.1.so
| | \__ librt-2.11.1.so
| | \__ librt.so.1 -> librt-2.11.1.so
| | \__ libselinux.so.1
| | \__ libssl.so.0.9.8
| | \__ libz.so.1 -> libz.so.1.2.3.3
| | \__ libz.so.1.2.3.3
| \__ lib64 -> lib
| \__ usr
| \__ bin
| | \__ php5-cgi
| \__ lib
| | \__ apache2
| | | \__ logs -> /var/log/apache2
| | \__ gconv
| | | \__ gconv-modules
| | | \__ gconv-modules.cache
| | \__ libdb-4.8.so
| | \__ libfontconfig.so.1 -> libfontconfig.so.1.4.4
| | \__ libfontconfig.so.1.4.4
| | \__ libfreetype.so.6 -> libfreetype.so.6.3.22
| | \__ libfreetype.so.6.3.22
| | \__ libgd.so.2 -> libgd.so.2.0.0
| | \__ libgd.so.2.0.0
| | \__ libgssapi_krb5.so.2 -> libgssapi_krb5.so.2.2
| | \__ libgssapi_krb5.so.2.2
| | \__ libjpeg.so.62 -> libjpeg.so.62.0.0
| | \__ libjpeg.so.62.0.0
| | \__ libk5crypto.so.3 -> libk5crypto.so.3.1
| | \__ libk5crypto.so.3.1
| | \__ libkrb5.so.3 -> libkrb5.so.3.3
| | \__ libkrb5.so.3.3
| | \__ libkrb5support.so.0 -> libkrb5support.so.0.1
| | \__ libkrb5support.so.0.1
| | \__ libmcrypt.so.4 -> libmcrypt.so.4.4.8
| | \__ libmcrypt.so.4.4.8
| | \__ libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
| | \__ libmysqlclient_r.so.16.0.0
| | \__ libt1.so.5 -> libt1.so.5.1.2
| | \__ libt1.so.5.1.2
| | \__ libX11.so.6 -> libX11.so.6.3.0
| | \__ libX11.so.6.3.0
| | \__ libXau.so.6 -> libXau.so.6.0.0
| | \__ libXau.so.6.0.0
| | \__ libxcb.so.1 -> libxcb.so.1.1.0
| | \__ libxcb.so.1.1.0
| | \__ libXdmcp.so.6 -> libXdmcp.so.6.0.0
| | \__ libXdmcp.so.6.0.0
| | \__ libxml2.so.2 -> libxml2.so.2.7.6
| | \__ libxml2.so.2.7.6
| | \__ libXpm.so.4 -> libXpm.so.4.11.0
| | \__ libXpm.so.4.11.0
| | \__ locale
| | | \__ en_ZA.utf8
| | | \__ LC_ADDRESS
| | | \__ LC_COLLATE
| | | \__ LC_CTYPE
| | | \__ LC_IDENTIFICATION
| | | \__ LC_MEASUREMENT
| | | \__ LC_MESSAGES
| | | | \__ SYS_LC_MESSAGES
| | | \__ LC_MONETARY
| | | \__ LC_NAME
| | | \__ LC_NUMERIC
| | | \__ LC_PAPER
| | | \__ LC_TELEPHONE
| | | \__ LC_TIME
| | \__ php5
| | | \__ 20090626
| | | \__ adodb.so
| | | \__ gd.so
| | | \__ mcrypt.so
| | | \__ mysqli.so
| | | \__ mysql.so
| | | \__ pdo_mysql.so
| | | \__ pdo.so
| | \__ sendmail -> ../sbin/mini_sendmail
| \__ lib64 -> lib
| \__ sbin
| | \__ mini_sendmail
| | \__ sendmail -> mini_sendmail
| \__ share
| \__ locale
| | \__ locale.alias -> /etc/locale.alias
| \__ zoneinfo
| \__ Africa
| \__ Johannesburg
\__ dev -> chroot/dev
\__ etc -> chroot/etc
\__ fcgi
| \__ php5-fcgi-starter
\__ lib -> chroot/lib
\__ lib64 -> chroot/lib64
\__ logs
\__ tmp
\__ usr -> chroot/usr
\__ var
\__ lib
| \__ apache2
| \__ php5
\__ log
| \__ apache2 -> /logs
\__ www
\__ virtualVollständiges Chroot
Für jeden erstellten virtuellen Host sollte das oben definierte Chroot in das Home-Verzeichnis des virtuellen Hosts kopiert werden. Zum Beispiel gilt für den virtuellen Host example.org, der als Benutzer vu2009 läuft:
cp -a /usr/local/skel/* ~vu2009/Zusätzlich ist Folgendes erforderlich:
mkdir -p ~vu2009/var/www/virtual/example.orgcd ~vu2009/var/www/virtual/example.org && ln -s /htdocs htdocsErstellen Sie auch einen Link für jede Subdomain. Wenn Sie Subdomains one.example.org und two.example.org haben, tun Sie auch:
cd ~vu2009/var/www/virtual/example.org && ln -s /one onecd ~vu2009/var/www/virtual/example.org && ln -s /two twoBeachten Sie, dass diese Symlinks beschädigt erscheinen. Sie funktionieren jedoch, wenn man bedenkt, dass ~vu2009 die Wurzel des chroot’ed Dateisystems ist.
ispcp.conf aktualisieren
Stellen Sie sicher, dass die Datenbank TCP (127.0.0.1) verwendet, nicht Sockets (localhost). Der chroot’ed vhost kann den MySQL-Socket, der sich in /var/run/mysqld/mysqld.sock befindet, nicht sehen.
DATABASE_HOST = 127.0.0.1Master-Virtual-Host aktualisieren
Benötigen Sie ein wenig mehr Symlink-Magie.
cd /var/www/fcgi/master && ln -s / fcgicp -a /var/www/fcgi/master /var/www/ispcp/gui/var/www/fgci/masterAktualisieren Sie /etc/passwd, ändern Sie das Home-Verzeichnis von vu2000 (Master-Benutzer) in /var/www/ispcp/gui. Das Kontrollpanel muss in der Lage sein, die Hauptkonfiguration zu lesen. Diese Datei ändert sich nie, daher ist eine direkte Kopie in Ordnung.
cp /etc/ispcp/ispcp.conf /var/www/ispcp/gui/etc/ispcp/cd /var/www/ispcp/gui/var/www/ispcp/ && ln -s / guiApache2 chrooten
mkdir /var/www-jailAktualisieren Sie /etc/apache2/httpd.conf:
ChRootDir /var/www-jailmkdir -p /var/www-jail/var/wwwmount -o bind /var/www /var/www-jail/var/wwwSobald chroot’ed, müssen die FastCGI-Sockets den vhosts zur Verfügung stehen.
mount -o bind /var/lib/apache2/fastcgi /var/www-jail/var/lib/apache2/fastcgiMachen Sie diese Mounts dauerhaft, indem Sie sie zu /etc/fstab hinzufügen:
/var/www /var/www-jail/var/www none bind
/var/lib/apache2/fastcgi /var/www-jail/var/lib/apache2/fastcgi none bindSendmail Mini
Postfix hat viele Abhängigkeiten, daher ist es vorzuziehen, es nicht in die chroots der vhosts aufzunehmen. Laden Sie stattdessen mini_sendmail von hier herunter und kompilieren Sie es. Es würde nicht statisch verlinkt funktionieren, benötigt jedoch keine weiteren Bibliotheken als die, die wir bereits in den chroots haben, also ist es in Ordnung. Bearbeiten Sie die Makefile:
CFLAGS = -g
#LDFLAGS = -s -static
LDFLAG = -gWir geben dem Wrapper nicht annähernd genug Informationen, damit er zufrieden ist, also ändern wir es etwas:
--- mini_sendmail-1.3.6/mini_sendmail.c 2005-06-29 19:37:15.000000000 +0200
+++ mini_sendmail-1.3.6-mine/mini_sendmail.c 2010-10-01 15:12:40.947187053 +0200
@@ -30,7 +30,7 @@
Wenn Sie die Funktionen nicht möchten, können Sie die Symbole undefinieren; einige von ihnen bedeuten
eine erhebliche Einsparung bei der Größe der ausführbaren Datei.
*/
-#define DO_RECEIVED /* ob einen "Received:"-Header hinzufügen */
+#undef DO_RECEIVED /* ob einen "Received:"-Header hinzufügen */
#define DO_GETPWUID /* ob versucht werden soll, ein getpwuid() auszuführen, wenn getlogin() fehlschlägt */
#define DO_MINUS_SP /* ob die -s- und -p-Flags implementiert werden sollen */
#define DO_DNS /* ob eine Namenssuche bei -s durchgeführt werden soll oder nur IP# */
@@ -122,6 +122,8 @@
{
if ( strncmp( argv[argn], "-f", 2 ) == 0 && argv[argn][2] != '\0' )
fake_from = &(argv[argn][2]);
+ else if ( strncmp( argv[argn], "-f", 2) == 0)
+ fake_from = &(argv[++argn][0]);
else if ( strcmp( argv[argn], "-t" ) == 0 )
parse_message = 1;
#ifdef DO_MINUS_SP
@@ -145,33 +147,32 @@
++argn;
}
- username = getlogin();
- if ( username == (char*) 0 )
- {
+ if ( fake_from == (char*) 0 ) {
+ username = getlogin();
+ if ( username == (char*) 0 ) {
#ifdef DO_GETPWUID
- struct passwd* pw = getpwuid( getuid() );
- if ( pw == (struct passwd*) 0 )
- {
- (void) fprintf( stderr, "%s: kann Benutzernamen nicht bestimmen\n", argv0 );
- exit( 1 );
+ struct passwd* pw = getpwuid( getuid() );
+ if ( pw == (struct passwd*) 0 ) {
+ (void) fprintf( stderr, "%s: kann Benutzernamen nicht bestimmen\n", argv0 );
+ exit( 1 );
}
- username = pw->pw_name;
+ username = pw->pw_name;
#else /* DO_GETPWUID */
- (void) fprintf( stderr, "%s: kann Benutzernamen nicht bestimmen\n", argv0 );
- exit( 1 );
+ (void) fprintf( stderr, "%s: kann Benutzernamen nicht bestimmen\n", argv0 );
+ exit( 1 );
#endif /* DO_GETPWUID */
}
-
- if ( gethostname( hostname, sizeof(hostname) - 1 ) < 0 )
- show_error( "gethostname" );
-
- if ( fake_from == (char*) 0 )
(void) snprintf( from, sizeof(from), "%s@%s", username, hostname );
- else
+ } else {
if ( strchr( fake_from, '@' ) == (char*) 0 )
(void) snprintf( from, sizeof(from), "%s@%s", fake_from, hostname );
else
(void) snprintf( from, sizeof(from), "%s", fake_from );
+ }
+
+ if ( gethostname( hostname, sizeof(hostname) - 1 ) < 0 )
+ show_error( "gethostname" );
+
/* Entfernen Sie alle spitzen Klammern in der Absenderadresse. */
while ( from[0] == '<' )makemkdir -p /usr/local/skel/usr/sbin/cp mini_sendmail /usr/local/skel/usr/sbin/cd /usr/local/skel/usr/sbin/ln -s mini_sendmail sendmailTest
Erstellen Sie ein paar virtuelle Hosts und sehen Sie, ob PHP läuft. Wenn alles gut geht, sollte die Ausgabe von ps auxf sehr ähnlich aussehen wie:
root 25761 0.0 1.7 138304 36360 ? Ss 10:56 0:00 /usr/sbin/apache2 -k start
root 25762 0.0 0.0 4096 580 ? S 10:56 0:00 \_ /bin/sh -c /var/www/ispcp/engine/ispcp-apache-logger -e
root 25764 0.0 0.7 62624 15424 ? S 10:56 0:00 | \_ /usr/bin/perl /var/www/ispcp/engine/ispcp-apache-logger -e
root 25763 0.0 0.0 4096 576 ? S 10:56 0:00 \_ /bin/sh -c /var/www/ispcp/engine/ispcp-apache-logger
root 25765 0.0 0.7 62624 15452 ? S 10:56 0:00 | \_ /usr/bin/perl /var/www/ispcp/engine/ispcp-apache-logger
www-data 25766 0.0 1.6 138004 34416 ? S 10:56 0:00 \_ /usr/sbin/apache2 -k start
www-data 25767 0.0 1.6 138004 34440 ? S 10:56 0:00 \_ /usr/sbin/fcgi-pm -k start
vu2000 25768 0.0 0.4 147120 8936 ? Ss 10:56 0:00 | \_ /usr/bin/php5-cgi
vu2000 25826 0.0 0.7 155448 15332 ? S 10:56 0:00 | | \_ /usr/bin/php5-cgi
vu2000 25827 0.0 0.7 155192 14984 ? S 10:56 0:00 | | \_ /usr/bin/php5-cgi
vu2007 11282 0.0 0.3 124356 7968 ? Ss 15:16 0:00 | \_ /usr/bin/php5-cgi
vu2007 11284 0.1 0.5 129676 11560 ? S 15:16 0:00 | | \_ /usr/bin/php5-cgi
vu2007 11285 0.1 0.5 131340 11756 ? S 15:16 0:00 | | \_ /usr/bin/php5-cgi
vu2058 11292 1.0 0.3 124356 7972 ? Ss 15:17 0:00 | \_ /usr/bin/php5-cgi
vu2058 11294 13.0 1.3 145292 27836 ? S 15:17 0:00 | \_ /usr/bin/php5-cgi
vu2058 11295 0.0 0.1 124356 3512 ? S 15:17 0:00 | \_ /usr/bin/php5-cgi
www-data 25769 0.0 1.8 428520 38416 ? Sl 10:56 0:00 \_ /usr/sbin/apache2 -k start
www-data 25778 0.0 1.8 428356 38008 ? Sl 10:56 0:00 \_ /usr/sbin/apache2 -k startNützliche Debugging-Tools sind das strace’ing des FastCGI-Prozessmanagers (PID 25767 in der obigen Ausgabe), wenn der vhost nicht startet:
strace -ff -p 25767Überprüfen Sie auch die Ausgabe in /tmp/suexec.log. Das Strace der eigenen Prozesse des vhosts ist nützlich, wenn sie starten, aber nicht das ausgeben, was Sie sehen möchten (z. B. für vu2058 in der obigen Ausgabe):
strace -ff -p 11292 -p 11294 -p 11295Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.