PDA

Просмотр полной версии : Настройки apache


hNick
15.01.2009, 18:30
Добрый день, столкнулся с такой проблемой, воопщем подскажите пожалуйста доступным языком что означают следующие параметры, и их оптимальное значение.

StartServers
MinSpareServers
MaxSpareServer
ServerLimit
MaxClients
MaxRequestsPerChild
KeepAliveTimeout
MaxKeepAliveRequests

Зарание извеняюсь и спасибо =)

StopFreeLife
15.01.2009, 20:18
StartServers

Директива StartServers устанавливает число дочерних процессов, созданных при запуске сервера.
Поскольку число процессов динамически меняется в зависимости от нагрузки, то обычно нет необходимости настраивать этот параметр.

MinSpareServers

Директива MinSpareServers устанавливает желательное минимальное число неиспользуемых* дочерних процессов сервера.
Если свободных процессов меньше, чем значение MinSpareServers, то родительский процесс создает новые дочерние процессы с максимальной частотой по 1 в секунду.

MaxClients

Это самый важный параметр prefork MPM, задающий максимальное число дочерних процессов, которым разрешено запустится (которые будут созданы для обработки запросов).

Значение выставляется большим, чтобы обрабатывать одновременно много запросов, а меньшим для снижения потребления памяти!

Сколько Вы укажите в этой диррективе, столько и будет у Вас процессов вставать в очередь на выполнение.

Настройка этого параметра необходима только на очень загруженных сайтах.
Увеличение этого параметра к большому числу - почти всегда плохая идея!

MaxSpareServers

Директива MaxSpareServers устанавливает желательное максимальное число неиспользуемых* дочерних процессов сервера.

Если есть больше чем MaxSpareServers неиспользуемых процессов, то родительский процесс убьет лишние.

Настройка этого параметра необходима только на очень загруженных сайтах. Увеличение этого параметра к большому числу - почти всегда плохая идея!
Если попытаться установить значение ниже, чем MinSpareServers, то Apache автоматически присвоит это к MinSpareServers + 1.


ServerLimit

Для prefork MPM эта директива устанавливает максимальное значение MaxClients на протяжении всей жизни процесса сервера Apache.

Используя эту директиву будте особенно осторожны!
Если значение ServerLimit установить намного выше необходимого, то свободная совместно используемая память будет занята (ассигнована, allocated).
Если ServerLimit и MaxClients установить выше, чем система может обрабатывать, то Apache может не запустится или система станет нестабильной.

Используйте эту директиву с prefork MPM, только если Вы хотите установить MaxClients выше чем 256 (default).
Не устанавливайте значение этой директивы ни на сколько выше чем значение, установленное в MaxClients.

У ServerLimit предельное значение 20000, даже, если указать больше (для избежания нежелательных эффектов, вызванных опечатками).

MaxRequestsPerChild

Управляет, как часто сервер перерабатывает процессы, убивая старые и начиная (запуская) новые, т.е здесь указывается число запросов, которое позволено обрабатывать дочернему процессу до переполнения.

Эта дирректива полезна для того, чтобы избежать проблем при длительной непрерывной работе, если Apache (или используемые им библиотеки), допускают утечку памяти или других ресурсов, так как при переполнении дочерний процесс будет принудительно завершен.
На большинстве систем это не требуется, но некоторые страдают заметными утечками в библиотеках.
Установка значения в 0 снимает ограничения.

Для запросов KeepAlive, только первый запрос подсчывается к пределу MaxRequestsPerChild. В действительности, это меняет действие ограничения числа связей с дочерним процессом.

KeepAliveTimeout

Время ожидания (в секундах) следующего запроса от того же клиента в рамках одного персистентного соединения.

MaxKeepAliveRequests

Максимальное количество запросов при одном персистентном соединении.

Значение 0 снимает ограничения (разрешено неограниченное количество запросов).
Для максимального быстродействия рекомендуется высокое значение.

kuzya0703
16.01.2009, 14:48
Добрый день. Не нашел более подходящей темы поэтому поспрашиваю тут.

У меня apache установлен под виндой на домашнем ПК для разрабортки. Имею статичный IP поэтому настроил и видимость его из сети, для демонстрации клиентам или удаленной разработки... Все вроде нормлаьно работает, но попробовал залить шелл и открыть его в инете, он видим все содержимое моего компа.

Поискал как от этого избавиться не нашел внятной информации. может кто сталкивался и решал проблему.

У товарища тоже есть клиент у них также на винде apache висит. Поэкспериментировали с шеллом, такая же штука, все диски как на ладони...

Dronga
16.01.2009, 16:11
Вывод, не используйте Apache + PHP на Windows машинах =) Отчасти шутка. Вы ведь PHP используете?? На чем у вас шелл написан??

Вопрос очень глобальный и затрагивает многие аспекты безопасности и производительности. Поищи статьи на тему безопасный веб-сервер (в качестве плохого примера могу не рекоммендовать статьи вида http://forum.antichat.ru/thread94880.html), мои поиски к однозначному решению не привели, но привели к разработке собственного решения (так поступает большинство влезших в эту тему).

Если шелл на PHP, то в качестве первоочередной меры могу посоветовать использование директивы open_basedir в php.ini или в секции твоего домена в httpd.conf.

Дальше настраивай свой php.ini таким образом чтобы шелл просто не работал.. Параметр disable_functions, туда вписывай ключевые функции шелла, такие как system, shell_exec, eval.. Список очень индивидуален, ищи потенциально опасные и ненужные тебе функции. Могут быть и функции по работе с файлами, но я почти уверен что они тебе и для разработки самому нужны :p

Более комплексным шагом, является включение безопасного режима safe_mode в php.ini. Считается дурным тоном.

Как показывает практика, полагаться на ограничения накладываемым данными ограничениями не стоит. Со временем появляются методы обхода и приходится искать что-то более глобальное.

Не знаю как сделать на Win-системах, но можешь поискать про chroot.

Теперь можешь протестить свой шелл. Удовлетворен?? Очень часто добившись нужного эффекта по безопасности ты потеряешь в функционале своего проекта и общей производительности сервера.

На своих серверах мне удалось найти компромисное решение, если очень актуально, может быть и статью напишу. Но это продакшн сервера и особой необходимости поднимать такую сложную систему на девелоперсокй тачке просто нет.

ЗЫ. Свои шеллы паролить надо и девелопить только _правильные_ скрипты ;)

kuzya0703
16.01.2009, 19:00
Вы ведь PHP используете??
Да, юзаю Apache + PHP на Win-машине, т.к. в *nixах не сильно шарю, хотя есть идея поднять свой сервер на *nix системе.

На чем у вас шелл написан??
Что касается шелла, то использовал C99madShell v. 2.0 madnet edition...

Спасибо за советы, попробую покопаться.
ЗЫ. Свои шеллы паролить надо и девелопить только _правильные_ скрипты
Ну скрипты вроде как бы и пишуца правильные, да и пишу в основном на битриксе, но только вот не совсем радует то, что на столько открыто все становится если не нароком (тьфу, тьфу, тьфу) кто-нибудь умудриться закачать его мне на комп...
А наткнулся на то что все открыто чисто случайно, когда закачал его на свой комп и потестить решил..

ex3me
13.02.2009, 22:53
Решил у себя такую проблему создав нового юзера в winXP с НЕ админскими правами и запустив апач+пхп от него ;)

Dronga
02.03.2009, 19:16
Обычно взламывают не с целью захвата всего и вся на машине, а с целью кражи/модификации/удаления контента сайта. При использовании метода ex3me цель злоумышленника будет достигнута. Вообще-то для апача в Unix системах всегда создавался отдельный непривилегированный пользователь... Вывод прежний, не используйте Apache + PHP на Windows машинах =)

D Mak
02.03.2009, 19:28
добавить функции scandir итп в запрещенные к исполнению