Итак, я настраиваю общий хостинг с Apache, PHP, MySQL, и самый большой вопрос - как это делать с PHP, поскольку существует миллион вариантов, как его безопасно настроить.
План такой:
Я посмотрел на suexec и suphp но они кажутся очень медленными;
http://blog.stuartherbert.com/php/2007/12/18/using-suexec-to-secure-a-shared-server/ http://blog.stuartherbert.com/php/2008/01/18/using-suphp-to-secure-a-shared-server/
Итак, я посмотрел еще и нашел другие решения:
Я попробовал простую настройку с mod_fastcgi + php-fpm, и, похоже, он работает, работает как правильный пользователь и так далее, но защита от перемещения каталогов все еще open_basedir (?)
Одним из решений этого может быть использование параметра chroot php-fpm, но это вызывает множество других проблем, таких как
Подсказки?
С тех пор, как этот вопрос был задан и дан ответ, CloudLinux действительно стал основным дистрибутивом Linux в пространстве общего хостинга. Он основан на RHEL / CentOS в качестве апстрима, хотя и с некоторыми изменениями. Вот некоторые подробности:
Проект fpm проделал отличную работу, позволив довольно легко развертывать решения для общего хостинга, даже исключая пользователей (однако, есть некоторые проблемы с apache, которые можно решить с помощью символических ссылок; в Интернете есть много руководств по этому поводу).
Решение, включающее php5-fpm, требует mod_fastcgi и позволяет хостеру создавать конфигурации для каждого пользователя (memory_limit, max_execution_time ... просто в качестве примера), и, судя по тому, что я смог увидеть, оно довольно стабильно;)
Что касается проблем с разрешением и использованием электронных писем, их легко решить, добавив библиотеки в chrooted-среду и необходимые исполняемые файлы (например, sendmail).
Проблема, которую я нашел и решаю, связана с неправильными переменными, переданными в скрипты php с помощью php-fpm (после chroot php-fpm должен удалить внешние каталоги, передав скрипту только те, которые находятся внутри chroot ... но это не так, и что-то еще должно позаботиться об этом, что-то вроде прокси между mod_fastcgi и php-fpm).
Мне удалось решить проблему с помощью прокси-сервера fcgi между php-fpm и apache, который автоматически исправляет переменные, поскольку php-fpm в то время, когда я пишу, не может их исправить.