Installazione Server · 14 min read · Nov 05, 2025
Installazione di ISPCP su Ubuntu Lucid x86_64 e implementazione di Chroot per Virtual Host in Apache2
Installazione di ISPCP su Ubuntu Lucid x86_64 e implementazione di Chroot per Virtual Host in Apache2
Installare il server
Installa un server base Ubuntu Lucid x86_64 seguendo le prime due pagine di The Perfect Server - Ubuntu Lucid Lynx (Ubuntu 10.04) [ISPConfig 2] howto.
Installare ISPCP
Scarica le sorgenti di ISPCP dalla pagina di download ufficiale. Questa guida è basata sulla versione 1.0.6. Estrailo e cambia nella directory estratta.
tar xf iscp-omega-1.0.6.tar.gzcd ispcp-omega-1.0.6cp docs/Ubuntu/ubuntu-packages-karmic docs/Ubuntu/ubuntu-packages-lucidModifica docs/Ubuntu/ubuntu-packages-lucid e sostituisci queste voci:
libmd5-perl
libmysqlclient15offcon queste:
libdigestmd5-perl
libmysqlclient16Segui i passaggi di installazione dettagliati in docs/Ubuntu/INSTALL. Quando esegui ispcp-setup, assicurati di selezionare FastCGI. Il tuo sistema ISPCP predefinito dovrebbe funzionare a questo punto e l’output di ps auxf dovrebbe apparire molto simile a questo:
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 startCompilare un Wrapper Suexec Personalizzato
La maggior parte di questa sezione si basa sull’ottimo post di metaclarity. Scarica le sorgenti di Apache HTTPd dalla pagina di download ufficiale. Questa guida è basata sulla versione 2.2.16.
tar xf httpd-2.2.16.tar.bz2cd httpd-2.2.16/supportApplica le patch.
--- 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; /* comando da eseguire */
char cwd[AP_MAXPATH]; /* directory di lavoro corrente */
char dwd[AP_MAXPATH]; /* directory di lavoro docroot */
+ char nwd[AP_MAXPATH]; /* directory di lavoro dopo chroot */
struct passwd *pw; /* holder dell'entry password */
struct group *gr; /* holder dell'entry gruppo */
struct stat dir_info; /* holder delle informazioni sulla directory */
@@ -456,7 +457,6 @@
log_err("impossibile eseguire come uid vietato (%d/%s)\n", uid, cmd);
exit(107);
}
-
/*
* Errore se si tenta di eseguire come gruppo root
* o come GID inferiore ad AP_GID_MIN. 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("impossibile ottenere la directory di lavoro corrente (prechroot)\n");
+ exit(111);
+ }
+
+ char* trunc_nwd = strndup("/fcgi", 5);
+
+ if (chdir(chroot_dir)) {
+ log_err("crit: impossibile chdir nella directory chroot (%s)",chroot_dir);
+ exit(121);
+ }
+
+ if (chroot(chroot_dir) != 0) {
+ log_err("emerg: chroot fallito (%s, %s)\n", chroot_dir, cmd);
+ exit(122);
+ }
+
+ if (chdir (trunc_nwd)) {
+ log_err("crit: impossibile chdir a %s dentro chroot %s\n", trunc_nwd, chroot_dir);
+ exit(42);
+ }
+
/*
* Cambia UID/GID qui in modo che i test successivi funzionino su NFS.
*
@@ -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("impossibile ottenere informazioni docroot (%s)\n", target_homedir);
- exit(112);
- }
- }
- else {
- if (((chdir(AP_DOC_ROOT)) != 0) ||
- ((getcwd(dwd, AP_MAXPATH)) == NULL) ||
- ((chdir(cwd)) != 0)) {
- log_err("impossibile ottenere informazioni docroot (%s)\n", AP_DOC_ROOT);
- exit(113);
- }
+ if (((chdir(getenv("DOCUMENT_ROOT"))) != 0) ||
+ ((getcwd(dwd, AP_MAXPATH)) == NULL) ||
+ ((chdir(cwd)) != 0)) {
+ log_err("impossibile ottenere informazioni docroot (%s)\n", AP_DOC_ROOT);
+ exit(113);
}
if ((strncmp(cwd, dwd, strlen(dwd))) != 0) {
@@ -565,7 +590,7 @@
* Errore se il nome/gruppo di destinazione è diverso da
* il nome/gruppo della cwd o del programma.
*/
- 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);
- }
+ }*/
/*
* Errore se il programma non è eseguibile per l'utente.
* Altrimenti, non troverà alcun errore nei log tranne per
patch -p0 < ../../makefile.diffpatch -p0 -o suexec-phpfcgi.c < ../../suexec-phpfcgi.diffModifica 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 suexecInstalla il nuovo wrapper suexec.
cp suexec-phpfcgi /usr/lib/apache2chown .www-data /usr/lib/apache2/suexec-phpfcgichmod 4751 /usr/lib/apache2/suexec-phpfcgiAggiorna /etc/apache2/modules-enables/fastcgi_ispcp.conf per utilizzare il nuovo wrapper:
FastCgiWrapper /usr/lib/apache2/suexec-phpfcgiCrea Chroot per Virtual Hosts
Il seguente è un chroot sufficiente. Ho messo il mio in /usr/local/skel. Potresti voler aggiungere più/altre fusi orari.
.
\__ 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
\__ virtualChroot Completo
Per ogni virtual host creato, il chroot come definito sopra dovrebbe essere copiato nella home directory del virtual host. Ad esempio, per il virtual host example.org che gira come utente vu2009, si applica quanto segue:
cp -a /usr/local/skel/* ~vu2009/Inoltre, è richiesto quanto segue:
mkdir -p ~vu2009/var/www/virtual/example.orgcd ~vu2009/var/www/virtual/example.org && ln -s /htdocs htdocsCrea anche un link per ogni sottodominio. Se hai sottodomini one.example.org e two.example.org, fai anche:
cd ~vu2009/var/www/virtual/example.org && ln -s /one onecd ~vu2009/var/www/virtual/example.org && ln -s /two twoNota che questi symlink appaiono rotti. Tuttavia, funzionano se consideri che ~vu2009 è la radice del filesystem chrootato.
Aggiorna ispcp.conf
Assicurati che il database utilizzi TCP (127.0.0.1), non socket (localhost). Il vhost chrootato non sarà in grado di vedere il socket MySQL che risiede in /var/run/mysqld/mysqld.sock.
DATABASE_HOST = 127.0.0.1Aggiorna il Virtual Host Master
Necessita di un po’ più di magia con i symlink.
cd /var/www/fcgi/master && ln -s / fcgicp -a /var/www/fcgi/master /var/www/ispcp/gui/var/www/fgci/masterAggiorna /etc/passwd, cambia la home directory di vu2000 (utente master) in /var/www/ispcp/gui. Il pannello di controllo deve essere in grado di leggere la configurazione principale. Questo file non cambia mai, quindi una copia diretta va bene.
cp /etc/ispcp/ispcp.conf /var/www/ispcp/gui/etc/ispcp/cd /var/www/ispcp/gui/var/www/ispcp/ && ln -s / guiChroot Apache2
mkdir /var/www-jailAggiorna /etc/apache2/httpd.conf:
ChRootDir /var/www-jailmkdir -p /var/www-jail/var/wwwmount -o bind /var/www /var/www-jail/var/wwwUna volta chrootato, i socket FastCGI devono essere disponibili per i vhosts.
mount -o bind /var/lib/apache2/fastcgi /var/www-jail/var/lib/apache2/fastcgiRendi questi mount permanenti aggiungendo a /etc/fstab:
/var/www /var/www-jail/var/www none bind
/var/lib/apache2/fastcgi /var/www-jail/var/lib/apache2/fastcgi none bindSendmail Mini
Postfix ha molte dipendenze, quindi è preferibile non includerlo nei chroot dei vhosts. Invece, scarica e compila mini_sendmail da qui. Non funzionerebbe staticamente collegato, ma non richiede più librerie di quelle che abbiamo già nei chroot, quindi va bene. Modifica il Makefile:
CFLAGS = -g
#LDFLAGS = -s -static
LDFLAG = -gNon forniamo informazioni sufficienti per rendere felice il wrapper, quindi lo cambiamo un po’:
--- 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 @@
non vogliamo le funzionalità che puoi undefinire i simboli; alcune di esse significano
un risparmio significativo nelle dimensioni eseguibili.
*/
-#define DO_RECEIVED /* se aggiungere un'intestazione "Ricevuto:" */
+#undef DO_RECEIVED /* se aggiungere un'intestazione "Ricevuto:" */
#define DO_GETPWUID /* se provare un getpwuid() se getlogin() fallisce */
#define DO_MINUS_SP /* se implementare i flag -s e -p */
#define DO_DNS /* se fare una ricerca di nome su -s, o solo 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: impossibile determinare il nome utente\n", argv0 );
- exit( 1 );
+ struct passwd* pw = getpwuid( getuid() );
+ if ( pw == (struct passwd*) 0 ) {
+ (void) fprintf( stderr, "%s: impossibile determinare il nome utente\n", argv0 );
+ exit( 1 );
}
- username = pw->pw_name;
+ username = pw->pw_name;
#else /* DO_GETPWUID */
- (void) fprintf( stderr, "%s: impossibile determinare il nome utente\n", argv0 );
- exit( 1 );
+ (void) fprintf( stderr, "%s: impossibile determinare il nome utente\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" );
+
/* Rimuovi eventuali angoli nel campo dell'indirizzo di provenienza. */
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
Crea un paio di virtual hosts e verifica se PHP funziona. Se tutto va bene, l’output di ps auxf dovrebbe apparire molto simile a:
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 startStrumenti di debug utili includono strace’ing il FastCGI Process Manager (PID 25767 nell’output sopra) se il vhost non si avvia:
strace -ff -p 25767Controlla anche l’output in /tmp/suexec.log. Strace’ing i processi del vhost è utile se si avviano, ma non producono ciò che vuoi vedere (ad esempio, per vu2058 nell’output sopra):
strace -ff -p 11292 -p 11294 -p 11295Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.