как прошедший через создание шаред-хостинга могу поделиться мыслями и советами, если кому интересно это.
самое 1ое - нет идеального и универсального решения по созданию хостинговой платформы. да и быть в принципе не может, ибо у всех свои
требования. некоторых хостеров вполне устраивает ситуация, когда сисадмин ставит CentOS с ядром generic, на него накатывает directadmin/ispmanager/cpanel или даже plesk, дефолтно устанавливает его( как, например, в случае с директом, где выбирается старая версия апачи и пхп, новая, и последняя - девелоперская) ну и на этом все, поехали работать. кому то и такое подойдет. а кто то более осознанно настраивает всё. я шел вторым путем, и вот те вопросы, которые мне нужно было решить:
выбор системы. нравится линукс? не вопрос. мне нравится фрибсд, и я обычно компилирую свое собственное легкое ядро только с теми модулями, которые мне нужны и с поддержкой железа, которое есть на машине, а все остальное из конфига улетает. соответственно после компиляции ядра получаем достаточно легкое ядро, которое оптимизировано под хостинг и этому ядру мы еще можем выделить пару гигов памяти, используя sysctl.conf
а потом собрать мир и двигаться дальше. естественно, подразумевается, что система у нас х64. причем фря в этой редакции уже идет с хорошо подстроенными по умолчанию переменными ядра, что облегчает жизнь.
следующий шаг - определяемся с панелью. мне подходит directadmin, его и ставлю. идеально, если вы умеете собрать окружение и поставить все демоны руками, из пакетов и портов, т.е. пропустив этап установки окружения из панели. для чего это нужно? для того, что бы мы могли настроить всё под себя. что именно? apache и php, в первую очередь. и тут самое интересное начинается, т.к. панель не дает(пока еще) решения идеального с точки зрения безопасности и производительности:
1) php as module - по умолчанию, дефолтный. производительность php в данном случае максимальная(кто смотрел тесты php as module vs. php as cgi/suphp, тот знает, что производительность модуля повыше), а вот безопасности никакой нет. но так работают большинство хостеров, при этом мы имеем распространенную ситуацию, когда через php-shell сливаются сайты собственного и соседних аккаунтов. раздел форума РИПЫ тому безмолвный свидетель))) преимущества - скорость. недостатки - безопасность. все скрипты выполняются с правами веб-сервера.
2) php as cgi - позволяет выполнять PHP скрипты от пользователя, которому принадлежит виртуалхост: cкрипты работают от имени пользователя, и если похачят, то только тот сайт, где залили шелл. решение более безопасное(хотя это относительно, т.к владельцем остается www), но требует больше ресурсов системы, т.е. уступает в производительности, + нельзя использовать опкод кешеры, типа apc, eaccelerator. ну и есть некоторые сложности в настройке и отладке. имхо, в топку.
я бы советовал остановиться на 1ом варианте, а уже вопросы безопасности зааутсорсить вебсерверу
Prefork MPM и worker MPM это мультипроцессорные модели (модули) для веб-сервера Apache, основными среди MPM являются: worker, pre-fork, perchild, netware, itk, peruser. По умолчанию Apache настроен на использование prefork MPM. mpm-itk и mpm-peruser, эти 2е модели являются рекомендованными для использования на webhosting-серверах. из них более приоритетным является peruser-mpm:
Как работает Apache Per User MPM?
Из фундаментальных отличий от prefork - наличие мультиплексор (третий тип) процесса, который принимает соединение, определяет, на какой vhost оно идет и передает соединение нужному рабочему процессу.
по итогу мы получаем, что
apache2.2 с mod_php и mod_peruser является
наиболее гибкой, безопасной и производительной связкой для хостинга.
со стороны php мы можем использовать suhoshin-patch, который накладывает некоторые ограничения на php, и можем использовать акселераторы.
для полного счастья может потребоваться nginx, как фронтенд, который тоже нужно будет связать с панелью управления, что бы на автомате обрабатывались поддомены, виртуальные хосты, элиасы. в сети есть готовые решения для каждой панели управления. отдельно стоит упомянуть о mod_ruid, который тоже позволяет исполнять скрипты от имени пользователя - его включили в девелоперский вариант установки directadmin, возможно скоро мы получим готовую стабильную версию, это вопрос времени, работа в этом направлении ведется.
таким образом мы разобрались с производительностью и безопасностью - нашли решение, где пхп работает как модуль, а скрипты запускаются от пользователя. но нам так же надо будет
подумать об аккаунтинге, т.е. было бы хорошим решением иметь статистику потребляемых ресурсов, где бы мы смогли видеть кто и сколько потребляет. это удобно в отладке тяжелых проектов, когда кто то из клиентов грузит сервер, и мы сразу же можем узнать кто он сколько потребляет в данный момент. для директадмина есть скрипты аккаунтинга, а в других панелях не сталкивался.
собственно, на этом все. туда-сюда еще бекапирование, мониторинг, настройка фаерволла и конечно же биллинг - на ваш выбор. по итогу имеем хороший сервер, который легко потянет 2-3 тысячи сайтов, с кешированием, проксированием статики, безопасный и устойчивый к вторжениям. надеюсь, что это кому то пригодится когда то
пс: сервер настроенный таким образом работает уже 3ий год без нареканий - ведь он производительный и безопасный с самого начала.
а, и самое важное! если вы поймете, что вся эта рутина вам не интересна и вы не осилили текст, то лучше доверить дело специалистам - это поможет сэкономить время и в некотором смысле финансы. но а если вы все таки решите осилить настройку, то пройдете через все немыслимые испытания и получите бесценный опыт, ну и как минимум - очень хорошо и интересно проведете время