Главная » Шпаргалка » Freebsd UNIX, LINUX... » настройка php для виртуального вебхостинга.

настройка php для виртуального вебхостинга.

Теория

Для начала следует твердо уяснить, что PHP существует в двух ипостасях: как строковый интерпретатор/CGI и как модуль Apache. Оба метода имеют и преимущества и недостатки, кратко перечисленные в сравнительной таблице.


/usr/local/bin/php libphp4.so
Безопасность высокая: определяется системой UNIX permissions и конфигурацией языка низкая: определяется конфигурацией языка и в минимальной степени - системой UNIX permissions
Скорость работы низкая высокая
Сложность конфигурирования хостинга низкая высокая
Возможность установки лимитов есть; для каждого пользователя нет
Удобство использования клиентами неудобно удобно
Выполняется владельцем (при настроенном suexec) пользователем, из-под которого запущен веб-сервер
Установка дисковых квот средствами OS сложно; необходимо использовать внешний монитор типа sgi_fam

Поэтому если вы действительно заботитесь о том, чтобы хостинг был максимально безопасным, вам придется либо отказаться от PHP вообще, либо использовать его в режиме CLI/CGI. В этом случае правильно настроенный suexec и грамотно выставленные права на каталоги позволят сделать php таким же (если не более) безопасным, как и любой другой cgi скрипт. Платой за безопасность будет наличие строки #!/usr/local/bin/php в заголовке каждого выполняемого скрипта php, права 0755 и крайне медленная скорость работы сервера.
Безопасность требует жертв.

На самом деле, все не так уж и плохо. Если использовать PHP как модуль, то все же можно добиться минимального уровня безопасности. Для этого необжодимо:
1) установить режим safe_mode
2) установить переменные open_basedir, safe_mode_include_dir, safe_mode_exec_dir, doc_root, user_dir, upload_tmp_dir таким образом, чтобы скрипты PHP имели доступ на чтение/запись/подключение/выполнение только к файлам, расположенным в домашнем каталоге пользователя.
Тем не менее, скрипты PHP будут выполняться из-под пользователя, под которым запущен веб-сервер. Следствием этого станет недопустимым использование любых средств IPC, в частности - shared memory и semaphores, поскольку доступ к ним регулируется системой UNIX file permissions.
Также желательно отключить все "тяжеловесные" возможности PHP, как то: все функции поддержки DOM, XSLT и создания/манипулирования изображениями, хотя это, скорее и не вопрос безопасности, а вопрос вычислительной мощности хостинговой площадки.

Также следует отключить register_globals.
register_globals On - это самое худшее, что можно придумать для системы. И поскольку все пользователи во всех проблемах всегда винят хостера, то в интересах администратора сделать так, чтобы возникало как можно меньше проблемных ситуаций, прямо или косвенно связанных с безопасностью хостинга.

Установка Apache

Устанавливам Apache.

Установка mod_php.

Ставим mod_php из портов, так, как это принято во FreeBSD. cd /usr/ports/www/mod_php4 make install clean

Конфигурирование хостинга

Переименовываем файл /usr/local/etc/php.ini-recommended в /usr/local/etc/php.ini.
Устанавливаем необходимые права на этот файл:

chowh root:www /usr/local/etc/php.ini
chmod 0440 /usr/local/etc/php.ini

Отключаем функцию phpinfo. Настраиваем Apache. Для каждого виртуального сервера устанавливаем свои переменные конфигурации php.

NameVirtualHost *:80
<VirtualHost *:80>
ServerName testsite.ru
DocumentRoot /home/www/testsite.ru/public_html
ScriptAlias /cgi /home/www/testsite.ru/public_html/cgi
ErrorLog /var/log/apache/testsite.ru/error_log
CustomLog /var/log/apache/testsite.ru/access_log combined


php_admin_value open_basedir /home/www/testsite.ru
php_admin_value safe_mode_include_dir /home/www/testsite.ru
php_admin_value safe_mode_exec_dir /home/www/testsite.ru
php_admin_value doc_root /home/www/testsite.ru
php_admin_value user_dir public_html
php_admin_value upload_tmp_dir /home/www/testsite.ru/tmp

User testsite.ru
Group virtwww
</VirtualHost>

<VirtualHost *:80>
ServerName testsite1.ru
DocumentRoot /home/www/testsite1.ru/public_html
ScriptAlias /cgi /home/www/testsite1.ru/public_html/cgi
ErrorLog /var/log/apache/testsite1.ru/error_log
CustomLog /var/log/apache/testsite1.ru/access_log combined


php_admin_value open_basedir /home/www/testsite1.ru
php_admin_value safe_mode_include_dir /home/www/testsite1.ru
php_admin_value safe_mode_exec_dir /home/www/testsite1.ru
php_admin_value doc_root /home/www/testsite1.ru
php_admin_value user_dir public_html
php_admin_value upload_tmp_dir /home/www/testsite1.ru/tmp

User testsite1.ru
Group virtwww
</VirtualHost>

Для того, чтобы можно было загружать файлы служит каталог /home/www/*/tmp. На него следует выставить разрешение записи для пользователя www.
Если требуется писать файлы в public_html (что само по себе может быть небюезопасно), сделует также озаботиться установкой соответствующих прав на каталог /home/www/testsite1.ru/public_html.

взято тут http://reki.ru/massvirthosting_php.html