В Jail поднял хостинг по статье:
http://www.lissyara.su/articles/freebsd ... d_fastcgi/
С первого раза не получилось (php скрипты висели), но потом это исправил (путаница была с правами + suexec должен был запускаться от юзера www, а apache у меня запускался от юзера apache..это исправил вроде)
Так вот, все работает, РНР собрался правильно, пробую через НТТР какой-то файл запустить, выполняется верно...
вот что получается после запуска какого-то скрипта:
# ps -aux | grep php-cgi
Код: Выделить всё
my-host 22091 0.0 0.3 16824 9284 ?? SJ 11:36AM 0:00.04 /usr/local/bin/php-cgi
my-host 62644 0.0 0.3 16824 9292 ?? SJ 11:54AM 0:00.03 /usr/local/bin/php-cgi
my-host 63926 0.0 0.3 16824 9176 ?? IsJ 12:29PM 0:00.02 /usr/local/bin/php-cgi
my-host 63927 0.0 0.3 16824 9220 ?? IJ 12:29PM 0:00.00 /usr/local/bin/php-cgi
my-host 63928 0.0 0.3 16824 9340 ?? IJ 12:29PM 0:00.00 /usr/local/bin/php-cgi
my-host 63929 0.0 0.3 16824 9220 ?? IJ 12:29PM 0:00.00 /usr/local/bin/php-cgi
my-host 63930 0.0 0.3 16824 9292 ?? IJ 12:29PM 0:00.00 /usr/local/bin/php-cgi
Код: Выделить всё
my-hostphp-cgi 63930 0 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 63929 0 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 63928 0 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 63927 0 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 63926 0 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
apache httpd 62716 11 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 62644 0 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 62644 3 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 22091 0 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
my-hostphp-cgi 22091 3 stream /var/run/fastcgi/dynamic/055a7007326b77460dd216b4a60f2bcb
Код: Выделить всё
root 62715 0.0 0.1 7196 3812 ?? SsJ 11:54AM 0:00.04 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 62716 0.0 0.1 7132 3780 ?? IJ 11:54AM 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63896 0.0 0.1 7196 3928 ?? IJ 12:25PM 0:03.83 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63897 0.0 0.1 7196 3940 ?? IJ 12:25PM 0:03.35 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63898 0.0 0.1 7196 3876 ?? IJ 12:25PM 0:03.03 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63899 0.0 0.1 7196 3876 ?? IJ 12:25PM 0:03.02 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63900 0.0 0.1 7196 3928 ?? IJ 12:25PM 0:02.86 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63901 0.0 0.1 7196 3876 ?? IJ 12:25PM 0:02.85 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63902 0.0 0.1 7196 3876 ?? IJ 12:25PM 0:02.86 /usr/local/sbin/httpd -DNOHTTPACCEPT
apache 63903 0.0 0.1 7196 3876 ?? IJ 12:25PM 0:02.85 /usr/local/sbin/httpd -DNOHTTPACCEPT
root 64022 0.0 0.0 3336 936 p1 R+J 12:33PM 0:00.00 grep http
Код: Выделить всё
server version: Apache/2.2.13 (FreeBSD)
Server built: Dec 4 2009 11:52:28
Server's Module Magic Number: 20051115:23
Server loaded: APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/usr/local"
-D SUEXEC_BIN="/usr/local/sbin/suexec"
-D DEFAULT_PIDLOG="/var/run/httpd.pid"
-D DEFAULT_SCOREBOARD="/var/run/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/accept.lock"
-D DEFAULT_ERRORLOG="/var/log/httpd-error.log"
-D AP_TYPES_CONFIG_FILE="etc/apache22/mime.types"
-D SERVER_CONFIG_FILE="etc/apache22/httpd.conf"
# /usr/local/sbin/suexec -V
Код: Выделить всё
-D AP_DOC_ROOT="/usr/home/"
-D AP_GID_MIN=900
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=900
-D AP_USERDIR_SUFFIX="apache"
вот еще права на директории:
/home
dr-xr-x--x 7 apache apache 512 Nov 30 18:58 home
/home/my-host
dr-xrwx--- 4 my-host my-host 512 Dec 4 12:59 my-host.com
Проблема в том что скрипты других пользователей или даже с других хомов могут выполнятся (я пробовал через include в php) + я могу просматривать директории на сервере которые вне хома текущего пользователя (функциями dir и т.д.) =\
как я понял, тут дело в настройке PHP, в php.ini поправил:
Код: Выделить всё
safe_mode = On
safe_mode_gid = On
перезагрузил сервер, нечего не изменилось (сделал проверочный скрипт, который делает include другого скрипта, который находится в чужом хоме)...погуглив, понял что одного safe_mode недостаточно, надо еще и "open_basedir"
делаю:
Код: Выделить всё
open_basedir = On
потом в apache добавляю к виртуалхосту несколько параметров:
Код: Выделить всё
<VirtualHost *:80>
ServerAdmin admin@my-domain.ru
DocumentRoot /usr/home/my-host.com/www/data
ServerName my-host.com
SuexecUserGroup my-host my-host
Alias /php-fcgi/ /usr/home/my-host.com/www/cgi-bin/
CustomLog /var/log/httpd/httpd-access.log combined
ErrorLog /var/log/httpd/httpd-error.log
php_admin_flag safe_mode on
php_admin_flag safe_mode_gid on
php_admin_value open_basedir /usr/home/my-host.com/www
php_admin_value upload_tmp_dir /usr/home/my-host.com/temp
php_admin_flag session.auto_start off
php_admin_value session.save_path /usr/home/my-host.com/temp
</VirtualHost>
перезагружаю apache, а он мне ошибку:
Код: Выделить всё
Performing sanity check on apache22 configuration:
Syntax error on line 530 of /usr/local/etc/apache22/httpd.conf:
Invalid command 'php_admin_flag', perhaps misspelled or defined by a module not included in the server configuration
что означает ошибка я понимаю...apache не знает что такое php_admin_flag...начал разбиратся, люди говорят что нужно подключить modphp...
но у меня php собран как CGI и использую я его как CGI а не как модуль для apache.....
есть какие-то варианты решения? или использовать open_basedir с CGI php не получится? =\
Спасибо!