Howto: SaaS / PHP-приложение / Арендаторы / Безопасность

Будучи совершенно новым в области веб-хостинга, у меня есть несколько вопросов о том, как реализовать / настроить веб-сервер для приложения SaaS. Я собираюсь арендовать свой собственный сервер для нового продукта (CMS), который я запускаю через два месяца. Разработка системы не была для меня чем-то особенным, но это правильный способ ее реализации.

Итак, скажем, это моя ситуация:

  • Я хочу разместить 10 сайтов для 8 клиентов.
  • Есть 6 отдельных сайтов, и у двух клиентов есть два сайта, которыми они могут управлять с помощью моего программного обеспечения.
  • CMS также должна быть размещена на сервере, все клиенты подключаются к 1 системе
  • База данных должна быть размещена
  • В зависимости от контракта, который заключает клиент, клиент получает некоторое хранилище. Как измерить используемое хранилище по БД, файловой системе и электронной почте
  • Клиенты в любом случае не могут каким-либо образом выйти за пределы своего каталога, но из каталога CMS CMS должна иметь возможность создавать файлы и каталоги в каталоге клиентов (для шаблонов, галерей изображений, виджетов и т. Д. И т. Д.).

Я думал о чем-то вроде dirstructure, как это:

./CMS/ [all CMS files]

./Websites/*/ [all websites]

Мой хостинг-провайдер установит обновления для ОС (CentOS, последняя версия) и панели администратора (Direct Admin).

Есть кто-нибудь с опытом работы на эту тему? Или у тебя есть мысли по этому поводу? Пожалуйста, присоединяйтесь к разговору, так как я совершенно новичок в этом.

5 ответов

Рассматривали ли вы стратегию виртуализации? Таким образом, вы можете легко управлять объемом дискового пространства, доступного для клиента. Вы можете убедиться, что клиенты не могут получить доступ друг к другу. И вы можете быть готовы к большему количеству клиентов, убедившись, что виртуальные машины автоматически устанавливаются по шаблону или из золотого образа. Если вам нужно больше оборудования, просто добавьте другой хост и начните развертывание виртуальных машин или переместите уже запущенные виртуальные машины на новый хост. Также правильно настроенная виртуальная инфраструктура позволит вам очень быстро переместить виртуальные машины в общедоступное облако, такое как Amazon EC2 или RackSpace. Если ваш клиент получает косую черту, может быть безопаснее просто выбросить виртуальные серверы этих клиентов в облако, чтобы другие клиенты не зависли.

Чтобы это было больше похоже на разговор, я выложу новый ответ.

SaaS - действительно новый термин с года или двух, и его популярность растет. На самом деле это всего лишь сервисный контракт с вашими клиентами. Они арендуют ваше программное обеспечение, чтобы идти в ногу со своей компетенцией;)

Мое программное обеспечение почти готово. Все интересные части уже готовы, модули отображения (рендерер шаблонов) нуждаются в оптимизации, но они готовы к тестированию.

Могу ли я объединить используемые квоты в базе данных с используемым дисковым пространством и используемым пространством электронной почты?

Монтирование не будет возможным, поскольку все клиенты платят за уникальный шаблон. Вещь, которая является обязательным требованием.

Не зная всех деталей вашего реального CMS-приложения, его сложно советовать конкретно. Но при условии, что в программном обеспечении CMS есть какая-то система, позволяющая различать клиентов, и то, что они могут получить доступ к вашей системе DirectAdmin, решит остальное более или менее; он может выполнять синхронизацию пользователей (хранить их в своем собственном каталоге), измерять пропускную способность, использование дискового пространства и применять квоты. Это также устанавливает MySQL, я думаю.

Он должен делать то, что вы хотите, но с подвохом: только если вы устанавливаете CMS на каждый домен клиента. Что то, чего ты не хочешь.

Поэтому я хотел бы связать (man ln) ваше программное обеспечение CMS с каждым домашним каталогом, сделав его доступным. Проверьте это - и ОЧЕНЬ ОСТОРОЖНО, что если я смогу написать в вашу программу CMS, я смогу взломать всех других клиентов, которые используют эту CMS. Так что посмотрите в настройке правильных разрешений (man chmod / man chown).

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

Лично я бы забыл о символьных ссылках, дисковое пространство действительно дешево и переводит установку вашей CMS в нерабочее состояние (это случится) сразу всех ваших клиентов.

Создайте одну установку для каждого клиента, я надеюсь, что это функция приложения для управления несколькими отдельными сайтами с помощью CMS, а не ОС, это просто неправильное место, и я рекомендую всем запускать, не отказываясь от продукта, который заявляет, что может управлять несколькими сайтами, но на самом деле просто нужно несколько установок.

Плюсы:

  • сломанные обновления не разозлят всех клиентов сразу
  • Вы можете предоставить новые функции небольшой части клиентов (да, 1 из 10 по-прежнему жизнеспособен для этого, может быть, это тот, с кем вы можете поговорить лучше, чем другие, и предложить им пройти тест-драйв)
  • если один клиент прервет установку из-за ошибок безопасности, ни один другой клиент не будет затронут (если эскалация не перейдет на более глубокий уровень, который нарушает работу системы)

Я не понимаю, что этот блестящий новый термин сейчас широко используется в Интернете "SaaS", но... давайте примем решение:)

Готово ли ваше программное обеспечение?

Для квот дискового пространства есть несколько возможностей:

  • стандартные квоты (управляются на уровне файловой системы, скажем, на extfs, как это наиболее распространено)
  • управление разделами / томами: LVM очень удобен для создания фрагментов дискового пространства для клиентов

Если я вас хорошо понимаю, все получат одно и то же программное обеспечение, но, возможно, смогут добавить его дополнительные файлы / темы.

Я не знаю, будет ли это отличным решением для вас, но возможно смонтировать эталонный шаблон (скажем, фрагмент LVM) в режиме только для чтения и смонтировать в режиме записи пользовательское дисковое пространство на "теме" или "Пользовательская" папка.

Таким образом, все изменения, которые вы вносите в шаблон ссылки, "развертываются" для всех ваших клиентов.

Расскажите больше о своих пожеланиях и потребностях, чтобы мы могли добавить больше советов

Другие вопросы по тегам