Создайте субдомен после регистрации пользователя

Я проверил бы SQLAlchemy

, Это действительно просто в использовании, и модели, с которыми Вы работаете, не плохи вообще. Django использует SQLAlchemy, поскольку это - ORM забастовка>, но использование его отдельно позволяет Вам использовать, это - полная мощность.

Вот является небольшой пример при создании и выборе orm объектами

>>> ed_user = User('ed', 'Ed Jones', 'edspassword')
>>> session.add(ed_user)
>>> our_user = session.query(User).filter_by(name='ed').first() 
>>> our_user
    

5
задан rebellion 3 December 2009 в 16:16
поделиться

3 ответа

Можете ли вы указать apache прочитать дополнительный файл .conf? (традиционно вы храните свои vhosts в httpd-vhosts.conf)

если это так, добавьте что-то вроде следующего и перезапустите свой веб-сервер

NameVirtualHost *:80

<VirtualHost *:80>
        DocumentRoot /abs/path/to/webroot
        ServerName   domainname.com
        ServerAlias *.domainname.com
        <Directory /abs/path/to/webroot>
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

, тогда в php вы можете увидеть, какой субдомен запрашивает пользователь, проверив:

$_SERVER['HTTP_HOST']

т.е. если пользователь запрашивает http://user1.domainname.com/index.php

$ _SERVER ['HTTP_HOST'] будет иметь user1.domainname.com

, вы можете взорвать ('.', $ _SERVER ['HTTP_HOST']) для проверки каждого сегмента и т. Д.

7
ответ дан 13 December 2019 в 05:36
поделиться

Для этого вам понадобятся 3 вещи:

1. Установите DNS для * .yourDomain.com

2. Добавьте директиву ServerAlias ​​в конфигурацию apache для этого домена:

ServerName www.yourDomain.com
ServerAlias *.yourDomain.com yourDomain.com

Также убедитесь, что на вашем сервере Apache для параметра UseCanonicalName установлено значение на (это значение по умолчанию)

3. Grep имя поддомена с помощью PHP:

  $nameChunks = explode('.', $_SERVER['HTTP_HOST']);
  $subDomainName = $nameChunks[count($nameChunks) - 3];
2
ответ дан 13 December 2019 в 05:36
поделиться

(на основе комментария Янека)

ЕСЛИ ваш экземпляр Apache настроен для * псевдонима, тогда нет необходимости создавать виртуальный именованный хост - вы можете подделать его с помощью PHP, оценив $ _SERVER ['HTTP_HOST'].

Чтобы определить, будет ли ваш экземпляр Apache обрабатывать его, отредактируйте локальный файл / etc / hosts (или эквивалент Windows -% SystemRoot% \ system32 \ drivers \ etc \ hosts) так, чтобы желаемый виртуальный имя указывает на ваш сервер.

Например,

# An example HOSTS file.
192.168.1.4 testserver testserver.com subdomain.testserver.com secondname.com

Предполагается, что 192.168.1.4 - это IP-адрес вашего сервера. Все, что находится после этого, является псевдонимом, на который можно вызывать сервер.

Затем, как предложил Янек, создайте страницу, которая будет отображать $ _SERVER ['HTTP_HOST'] , чтобы проверить, правильно ли она записывает имя. Если это так, то все, что требуется, - это изменение DNS, и Apache может остаться без изменений.

В противном случае без доступа к Apache.conf (это означает, что у вас нет доступа ко многим вещам) это будет сложно осуществить. Программирования не будет - но реализация будет.

Вот почему:

  1. Apache по умолчанию обслуживает виртуальные хосты. Но вам нужен доступ к каталогу conf сервера (часто расположенному в /etc/httpd/conf.d/), чтобы вы могли создать "включаемый" файл виртуального хоста (ЕСЛИ конфигурация Apache настроена для его включения - самые последние установки должны be).

  2. Вам нужно будет выполнить цикл Apache (перезапустить). Без этого изменения виртуального хоста не повлияют.

  3. Вам нужно будет изменить DNS. Вы всегда можете изменить свой локальный файл / etc / hosts, но для того, чтобы посетители могли попасть на ваш сайт, вы Мне нужно будет протолкнуть изменение DNS. (Что может происходить мгновенно - или может потребоваться 24 часа для распространения.)

Создание сценария, безусловно, может быть выполнено (см. Cpanel и WHM)

2
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: