Установка ISPCP · 14 min read · Nov 05, 2025
Установка ISPCP на Ubuntu Lucid x86_64 и реализация Chroot для каждого виртуального хоста в Apache2
Установка ISPCP на Ubuntu Lucid x86_64 и реализация Chroot для каждого виртуального хоста в Apache2
Установка сервера
Установите базовый сервер Ubuntu Lucid x86_64, следуя первым двум страницам руководства The Perfect Server - Ubuntu Lucid Lynx (Ubuntu 10.04) [ISPConfig 2].
Установка ISPCP
Скачайте исходные коды ISPCP с официальной страницы загрузки. Это руководство основано на версии 1.0.6. Распакуйте его и перейдите в извлечённый каталог.
tar xf iscp-omega-1.0.6.tar.gzcd ispcp-omega-1.0.6cp docs/Ubuntu/ubuntu-packages-karmic docs/Ubuntu/ubuntu-packages-lucidОтредактируйте docs/Ubuntu/ubuntu-packages-lucid и замените эти записи:
libmd5-perl
libmysqlclient15offна эти:
libdigestmd5-perl
libmysqlclient16Следуйте шагам установки, описанным в docs/Ubuntu/INSTALL. При запуске ispcp-setup убедитесь, что выбрали FastCGI. Ваша система ISPCP по умолчанию должна работать на этом этапе, и вывод ps auxf должен выглядеть очень похоже на это:
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 startКомпиляция пользовательского обертки Suexec
Большая часть этого раздела основана на отличной статье на metaclarity. Скачайте исходные коды Apache HTTPd с официальной страницы загрузки. Это руководство основано на версии 2.2.16.
tar xf httpd-2.2.16.tar.bz2cd httpd-2.2.16/supportПримените патчи.
--- 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; /* команда для выполнения */
char cwd[AP_MAXPATH]; /* текущий рабочий каталог */
char dwd[AP_MAXPATH]; /* рабочий каталог документа */
+ char nwd[AP_MAXPATH]; /* после chroot рабочего каталога */
struct passwd *pw; /* держатель записи пароля */
struct group *gr; /* держатель записи группы */
struct stat dir_info; /* держатель информации о каталоге */
@@ -456,7 +457,6 @@
log_err("не удается запустить с запрещенным uid (%d/%s)\n", uid, cmd);
exit(107);
}
-
/*
* Ошибка, если попытка выполнена как корневая группа
* или как GID меньше AP_GID_MIN. Тсс тсс.
@@ -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("не удается получить текущий рабочий каталог (prechroot)\n");
+ exit(111);
+ }
+
+ char* trunc_nwd = strndup("/fcgi", 5);
+
+ if (chdir(chroot_dir)) {
+ log_err("критическая ошибка: не удается перейти в chroot каталог (%s)",chroot_dir);
+ exit(121);
+ }
+
+ if (chroot(chroot_dir) != 0) {
+ log_err("срочно: не удалось chroot (%s, %s)\n", chroot_dir, cmd);
+ exit(122);
+ }
+
+ if (chdir (trunc_nwd)) {
+ log_err("критическая ошибка: не удается перейти в %s внутри chroot %s\n", trunc_nwd, chroot_dir);
+ exit(42);
+ }
+
/*
* Измените UID/GID здесь, чтобы последующие тесты работали через 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("не удается получить информацию о корне документа (%s)\n", target_homedir);
- exit(112);
- }
- }
- else {
- if (((chdir(AP_DOC_ROOT)) != 0) ||
- ((getcwd(dwd, AP_MAXPATH)) == NULL) ||
- ((chdir(cwd)) != 0)) {
- log_err("не удается получить информацию о корне документа (%s)\n", AP_DOC_ROOT);
- exit(113);
- }
+ if (((chdir(getenv("DOCUMENT_ROOT"))) != 0) ||
+ ((getcwd(dwd, AP_MAXPATH)) == NULL) ||
+ ((chdir(cwd)) != 0)) {
+ log_err("не удается получить информацию о корне документа (%s)\n", AP_DOC_ROOT);
+ exit(113);
}
if ((strncmp(cwd, dwd, strlen(dwd))) != 0) {
@@ -565,7 +590,7 @@
* Ошибка, если целевое имя/группа отличается от
* имени/группы cwd или программы.
*/
- 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);
- }
+ }*/
/*
* Ошибка, если программа не исполняется для пользователя.
* В противном случае она не найдет никаких ошибок в журналах, кроме
patch -p0 < ../../makefile.diffpatch -p0 -o suexec-phpfcgi.c < ../../suexec-phpfcgi.diffОтредактируйте 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 suexecУстановите новую обертку suexec.
cp suexec-phpfcgi /usr/lib/apache2chown .www-data /usr/lib/apache2/suexec-phpfcgichmod 4751 /usr/lib/apache2/suexec-phpfcgiОбновите /etc/apache2/modules-enables/fastcgi_ispcp.conf, чтобы использовать новую обертку:
FastCgiWrapper /usr/lib/apache2/suexec-phpfcgiСоздание Chroot для виртуальных хостов
Следующее является достаточным chroot. Я положил свой в /usr/local/skel. Вы можете добавить больше/другие часовые пояса.
.
\__ 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
\__ virtualПолный Chroot
Для каждого созданного виртуального хоста chroot, как определено выше, должен быть скопирован в домашний каталог виртуального хоста. Например, для виртуального хоста example.org, который работает как пользователь vu2009, применимо следующее:
cp -a /usr/local/skel/* ~vu2009/Кроме того, требуется следующее:
mkdir -p ~vu2009/var/www/virtual/example.orgcd ~vu2009/var/www/virtual/example.org && ln -s /htdocs htdocsТакже создайте ссылку для каждого поддомена. Если у вас есть поддомены one.example.org и two.example.org, также сделайте:
cd ~vu2009/var/www/virtual/example.org && ln -s /one onecd ~vu2009/var/www/virtual/example.org && ln -s /two twoОбратите внимание, что эти символические ссылки выглядят сломанными. Однако они работают, если учесть, что ~vu2009 является корнем chroot’ированной файловой системы.
Обновите ispcp.conf
Убедитесь, что база данных использует TCP (127.0.0.1), а не сокеты (localhost). Chroot’ированный vhost не сможет увидеть сокет MySQL, который находится в /var/run/mysqld/mysqld.sock.
DATABASE_HOST = 127.0.0.1Обновите главный виртуальный хост
Нужно немного больше магии с символическими ссылками.
cd /var/www/fcgi/master && ln -s / fcgicp -a /var/www/fcgi/master /var/www/ispcp/gui/var/www/fgci/masterОбновите /etc/passwd, измените домашний каталог vu2000 (главного пользователя) на /var/www/ispcp/gui. Панели управления необходимо иметь возможность читать основной конфиг. Этот файл никогда не меняется, поэтому прямая копия вполне подходит.
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-jailОбновите /etc/apache2/httpd.conf:
ChRootDir /var/www-jailmkdir -p /var/www-jail/var/wwwmount -o bind /var/www /var/www-jail/var/wwwПосле chroot’ирования сокеты FastCGI должны быть доступны для vhosts.
mount -o bind /var/lib/apache2/fastcgi /var/www-jail/var/lib/apache2/fastcgiСделайте эти монтирования постоянными, добавив в /etc/fstab:
/var/www /var/www-jail/var/www none bind
/var/lib/apache2/fastcgi /var/www-jail/var/lib/apache2/fastcgi none bindMini Sendmail
Postfix имеет много зависимостей, поэтому предпочтительнее не включать его в chroot’ы vhosts. Вместо этого скачайте и скомпилируйте mini_sendmail отсюда. Он не будет работать статически связанный, но требует не больше библиотек, чем у нас уже есть в chroots, так что это нормально. Отредактируйте Makefile:
CFLAGS = -g
#LDFLAGS = -s -static
LDFLAG = -gМы не даем почти достаточно информации для обертки, чтобы она была довольна, поэтому изменим её немного:
--- 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 @@
не хотите функции, вы можете отменить определение символов; некоторые из них означают
значительную экономию в размере исполняемого файла.
*/
-#define DO_RECEIVED /* добавлять заголовок "Received:" */
+#undef DO_RECEIVED /* добавлять заголовок "Received:" */
#define DO_GETPWUID /* пытаться получить getpwuid(), если getlogin() не удается */
#define DO_MINUS_SP /* реализовать флаги -s и -p */
#define DO_DNS /* выполнять поиск имени по -s, или просто 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: не удается определить имя пользователя\n", argv0 );
- exit( 1 );
+ struct passwd* pw = getpwuid( getuid() );
+ if ( pw == (struct passwd*) 0 ) {
+ (void) fprintf( stderr, "%s: не удается определить имя пользователя\n", argv0 );
+ exit( 1 );
}
- username = pw->pw_name;
+ username = pw->pw_name;
#else /* DO_GETPWUID */
- (void) fprintf( stderr, "%s: не удается определить имя пользователя\n", argv0 );
- exit( 1 );
+ (void) fprintf( stderr, "%s: не удается определить имя пользователя\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" );
+
/* Удалить любые угловые скобки в адресе отправителя. */
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 sendmailТест
Создайте несколько виртуальных хостов и проверьте, работает ли PHP. Если всё прошло хорошо, вывод ps auxf должен выглядеть очень похоже на:
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 startПолезные инструменты отладки включают strace для FastCGI Process Manager (PID 25767 в выводе выше), если vhost не запускается:
strace -ff -p 25767Также проверьте вывод в /tmp/suexec.log. Strace для собственных процессов vhost полезен, если они запускаются, но не выводят то, что вы хотите видеть (например, для vu2058 в выводе выше):
strace -ff -p 11292 -p 11294 -p 11295Get new posts in your inbox
No spam. Unsubscribe anytime.