Мы создаем нишевое программное обеспечение для управления проектами в CodeIgniter. Мы хотим предоставить каждому пользователю свой собственный поддомен на нашем сайте. Например, user.oursite.com. Пользователь1 переходит на user1.oursite.com для входа в свое программное обеспечение. Это тот же формат, который BaseCamp и Freshbooks используют для каждого экземпляра своего программного обеспечения.
Вот вопрос. Какова лучшая практика для создания такого сайта? Вот некоторые проблемы:
1) CSS, PHP и другие файлы. Каждый экземпляр программного обеспечения будет идентичен, за исключением базы данных (обсуждается ниже). Другими словами, каждый экземпляр (то есть user1.oursite.com, user2.oursite.com) будет использовать идентичные файлы php и CSS. Все, что было настроено для пользователя, будет динамически извлечено из базы данных. Как мы можем отформатировать эти субдомены, чтобы минимизировать усилия, необходимые для загрузки обновлений в файл? У нас была одна идея - создать основной набор файлов, из которых извлекается каждый поддомен (то есть зеркало), и, конечно, создать новую базу данных для каждого из этих поддоменов. Как это можно сделать? Это лучшая практика? Любые другие предложения?
2) Базы данных - основная база данных для базового программного обеспечения для управления проектами довольно сложна. Как обсуждалось выше, каждый пользователь получает свой собственный экземпляр программного обеспечения (то есть username1.oursite.com, username2.oursite.com, username3.oursite.com). Должен ли каждый экземпляр программного обеспечения иметь свою собственную базу данных? Что происходит, когда нам нужно обновить / изменить базу данных (скажем, например, добавить новую таблицу) для 100 пользователей?
3) Codeigniter - Как Codeigniter будет работать при такой структуре? Должны ли мы иметь какие-либо проблемы?
Любые предложения будут с благодарностью. Если бы вы могли указать мне на документацию или обсуждение этих типов программных сборок, это было бы замечательно. Если кто-нибудь может сделать это для нас, нам было бы интересно пообщаться с вами.