Хотел бы коснуться важной составляющей всего сервера, а именно веб-сервера. Это для начала.
Предполагается, что используется Linux, а именно CentOS 7 как наиболее разумный на сегодня вариант.
Предполагается, что используется ISPmanager 5 Lite.
В качестве веб-сервера выступает Апаче.
Итак, как можно добиться максимальной производительности сервера (в конечном итоге сайта) за счет настроек веб-сервера?
И при этом обеспечить максимальную безопасность.
Желательно не использовать права для папок вида 777. Лучше такие: 755.
Т. е. мы выставляем права доступа не всем подряд (777), что само по себе приводит к снижению безопасности, а только владельцу (виртуалхоста, т. е. сайта/домена) и его группе.
Возражения есть по этому правилу безопасности?
На сервере (VPS/VDS) по умолчанию установлен веб-сервер Апаче (Apache MPM-Prefork) и php как модуль апаче.
конфиги php.ini в корне сайта в таком случае не работают.
конфигурацию php в таком случае производят в глобальном php.ini, а для сайта - в соответствующем файле .htaccess
пример директив в этом файле (.htaccess):
php_value max_execution_time 600
Поскольку мы говорим про Апаче, установленный по умолчанию, то PHP (mod-php) будет работать от имени Апаче (httpd). Что требует выставления прав 777 для папок сайта, что не есть хорошо.
Работа PHP именно как модуля Апаче предпочтительна, т. к. именно в таком случае достигается наибольшая производительность. Да и некоторые полезные возможности php будут работать только в этом режиме, а в режиме CGI будут отсутствовать.
Для определенного пользователя можно выбрать тип PHP (как модуль или как CGI)
PHP типа CGI будет работать от имени пользователя, и можно использовать права для папок не выше 755, что хорошо в плане безопасности. И удобно при разворачивании сайта, т. к. при разархивировании (из RAR, например) дистрибутива папки автоматически создаются с такими правами. Также CGI позволяет менять версии php для каждого пользователя индивидуально, это бывает иногда полезно если у вас сайтов много с разными требованиями к php. Но обычно сервер используется для одного высоконагруженного проекта (сайта).
Но в плане производительности (быстродействия) PHP как CGI уступает варианту PHP как модулю.
Установленный по умолчанию Apache MPM-Prefork не позволит работать php от имени пользователя.
Но есть вариант замены его на Apache MPM-ITK с сохранением преимуществ работы php как модуля и возможность работать от имени пользователя (владельца virtualhost). На мой взгляд, это лучшее решение.
Сборка Apache MPM-ITK не представляет особых трудностей. Пользоваться терминалом (консолью) для этого нужно было на старых версиях панели управления, сейчас все проще.
Я пока не касаюсь вопросов настройки кеширования и сжатия файлов.
У кого-то имеется лучшее предложение по Апаче в плане производительности и безопасности?
-------
Вопрос использования nginx хотел бы рассмотреть немного позже. И связку Апаче + nginx в вариантах тоже попозже.