Создание экземпляров программного обеспечения в поддоменах а-ля Freshbooks - Справка - PullRequest
1 голос
/ 02 апреля 2011

Мы создаем нишевое программное обеспечение для управления проектами в 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 будет работать при такой структуре? Должны ли мы иметь какие-либо проблемы?

Любые предложения будут с благодарностью. Если бы вы могли указать мне на документацию или обсуждение этих типов программных сборок, это было бы замечательно. Если кто-нибудь может сделать это для нас, нам было бы интересно пообщаться с вами.

1 Ответ

0 голосов
/ 07 апреля 2011

1) Если ваш код идентичен (только изменения данных), то вы просто указываете все свои субдомены на один и тот же экземпляр codeigniter.В вашем application/config/config.php установите base_url пустым:

$config['base_url'] = '';

, чтобы codeigniter сам определил ваш домен.

Затем вы можете получить текущий поддомен в вашем коде с помощью:

$current_subdomain = $this->input->server('SERVER_NAME');

и используйте его для загрузки любых пользовательских данных.

, таких как CSS и изображения, а также Javascript, это, вероятно, хорошая идея, чтобы хранить где-то еще .. как http://static.yoursite.com, чтобы их браузербудет кэшировать его во всех ваших поддоменах.

3) Я только что попробовал то, что я сказал в 1) с CodeIgniter 2.0, и он, кажется, работает нормально.Я не могу думать о каких-либо проблемах.Я имею в виду, что DNS решается задолго до того, как CodeIgniter включается.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...