Создание мультисайтового приложения - PullRequest
1 голос
/ 08 декабря 2009

Я планирую приложение, которое позволит пользователям создавать веб-сайты определенного типа. Я хотел связать имена учетных записей с «account.myapp.com». Переход на account.myapp.com приведет к открытию веб-сайта. Я понятия не имею, как отобразить это. Я буду использовать Code Igniter в качестве инструмента разработки.

Я хотел бы дать пользователям возможность добавлять зарегистрированное доменное имя для своего веб-сайта, а не использовать стандартный поддомен. Любые советы / методы по этому поводу?

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

Спасибо за ваше время!

Ответы [ 4 ]

2 голосов
/ 08 декабря 2009

Ваш план для одного приложения, которое обслуживает все сайты, будет довольно трудоемким и лот работы. Это не означает, что это невозможно (многие корпоративные CMS, включая Sharepoint, позволяют запускать «виртуальные сайты» и т. Д. Из одной установки).

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

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

Лучшим планом было бы разработать автономное решение (для одного веб-сайта), которое затем можно запускать из своего собственного каталога с собственной базой данных и собственным набором учетных записей. Он будет значительно меньше (с точки зрения как кода, так и базы данных) и, следовательно, вероятно, будет работать намного лучше. Повседневное обслуживание будет проще (восстановить веб-сайт из резервной копии), но обновления программного обеспечения (для добавления новой функции) будут немного сложнее, хотя, поскольку это PHP, это просто загрузка файлов и исправления SQL, поэтому вы можете автоматизировать это с легкостью.

С точки зрения доменов: если вы выбрали подход «отдельное приложение» (по одному на веб-сайт), вы можете использовать функцию Apache Dynamic Virtual Hosts , которая эффективно отображает URL-адрес файловой системы (например, веб-сайт). mydomain.com может быть переведен для автоматического удаления из / home / vhosts / com / mydomain / website): таким образом, развертывание нового веб-сайта будет простым копированием файлов в правильный каталог, созданием базы данных и обновлением конфигурации. файл, который можно легко автоматизировать.

Если пользователи хотят использовать свои собственные URL-адреса, то они должны сначала обновить свой DNS, чтобы он указывал на ваш сервер, а во-вторых, вам нужно настроить хост Apache для этого домена, что, вероятно, потребует перезапуска apache и, таким образом, повлияет на все другие пользователи.

1 голос
/ 11 декабря 2009

Если я правильно понимаю ваш вопрос, вам нужно настроить подстановочный DNS и использовать Apache mod_rewrite для внутреннего перенаправления (пример) myaccount.myapp.com на myapp.com/?account=myaccount. Логика вашего приложения может взять его оттуда.

Я просто гуглил, "wildcard dns mod_rewrite account" (без кавычек) и нашел несколько примеров с инструкциями, таких как:

http://www.reconn.us/content/view/46/67/

Это действительный и желательный способ структурирования определенных веб-приложений IMO. Я не знаю о серьезных недостатках.

Я действительно не знаю, какой отличный (автоматизированный / масштабируемый) способ позволить пользователям указывать свои собственные доменные имена, но вы могли бы сделать это, если бы вы изменили DNS своего домена, чтобы он указывал на ваш веб сервер, затем добавил директиву ServerAlias ​​в конфигурацию Apache "myapp". У вас все еще остается проблема с пониманием вашего экземпляра среды выполнения myapp, что запросы, поступающие через домен клиента, являются специфическими для учетной записи клиента. Таким образом, (пример) customeraccount.com действительно соответствует myapp.com/?account=customeraccount. Возможно, об этом позаботятся еще некоторые правила mod_rewrite, но они не автоматизированы (возможно, это может быть связано с включаемым файлом или другим).

Извините, вы сказали, что используете CodeIgniter ... замените на myapp.com/account/myaccount, где я написал myapp.com/?account=myaccount.

1 голос
/ 08 декабря 2009

Это очень легко сделать в codeigniter и может быть выполнено с использованием routes.php и ловушки предварительного контроллера.

ЭТО СКАЗАЛ ... Не делай этого. Это вообще не очень хорошая идея. Даже 37Signals, которые сделали этот вид управления учетными записями известными, отрекаются и переходят к централизованным учетным записям. Чек http://37signals.com/accounts

0 голосов
/ 08 декабря 2009

Во-первых, вам нужно настроить Apache (или любой используемый вами веб-сервер), чтобы дать каждому поддомену одинаковые настройки DNS (сопоставление с подстановочными знаками). Затем вы должны использовать функции маршрутизации CodeIgniter для анализа субдомена из URL-адреса запроса, установить его в качестве параметра (или как он будет вызываться в CodeIgniter) и повеселиться с ним в своем контроллере.

О подводных камнях и проблемах: это зависит от того, что вы хотите сделать. ;)

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