Автоматическое добавление сабдоменов

Габриэль
На сайте с 01.09.2006
Offline
85
3045

Подскажите, как решается следующая проблема.

Надо организовать для юзеров возможность создавать свои сабдомены. Другими словами, пользователь заходит на существующий сайт, скажем site.com и получает возможность создать свой типа сайта скажем vasya.site.com

Предполагаю, что можно дописать в вирутальные хосты, но в таком случае по всей видимости придется делать перезагрузку. Такой вариант не совсем устраивает.

K
На сайте с 12.07.2006
Offline
295
Kpd
#1

Зазеркалить субдомен *.site.com на site.com, в скрипте или в .htaccess на site.com проверять какой домен запрашивает посетитель, если vasya.site.com - отдавать страничку Васи

Groove
На сайте с 22.02.2007
Offline
41
#2

Нужно в DNS прописать *.site.ru на тот же айпишник, что и осноной сайт например

затем создать 2 виртуальных хоста в конфиге апача:

для основного домена и для доменов третьего уровня

jQuickForm = генератор форм на PHP (jQuery + HTML_QuickForm2) (http://jquickform.ru/) | iBegun.ru - цены в Бегуне (http://ibegun.ru/)
UA
На сайте с 19.06.2006
Offline
100
#3

Сайты юзеров закачивать в подкаталоги и настроить сервер вот так:

Apache: Автоматические субдомены

Andreyka
На сайте с 19.02.2005
Offline
822
#4

А еще можно не restart а graceful/reload ;)

Не стоит плодить сущности без необходимости
G
На сайте с 07.04.2006
Offline
37
gct
#5

У меня DNS прописывается с помощью скрипта - скриптом идёт добавление строки в файл зоны, перезапуск named, создание подкаталога, перезапуск апача.

KTIF
На сайте с 29.03.2006
Offline
54
#6

Код как делать сабдомены в сpanelе, может поможет

<?php


###############################################################
# cPanel Subdomains Creator 1.1
###############################################################
# Visit http://www.zubrag.com/scripts/ for updates
###############################################################
#
# Can be used in 3 ways:
# 1. just open script in browser and fill the form
# 2. pass all info via url and form will not appear
# Sample: cpanel_subdomains.php?cpaneluser=USER&cpanelpass=PASSWORD&domain=DOMAIN&subdomain=SUBDOMAIN
# 3. List subdomains in file - domains.txt. In this case you must provide all the defaults below
#
# Note: you can omit any parameter, except "subdomain".
# When omitted, default value specified below will be taken
###############################################################

// cpanel user
define('CPANELUSER','USER');

// cpanel password
define('CPANELPASS','PSWD');

// name of the subdomains list file.
// file format may be 1 column or 2 columns divided with semicilon (;)
// Example for two columns:
// rootdomain1;subdomain1
// rootdomain1;subdomain2
// Example for one columns:
// subdomain1
// subdomain2
define('INPUT_FILE','domains.txt');

// cPanel skin (mainly "x")
// Check http://www.zubrag.com/articles/determine-cpanel-skin.php
// to know it for sure
define('CPANEL_SKIN','x');

// Default domain (subdomains will be created for this domain)
// Will be used if not passed via parameter and not set in subdomains file
define('DOMAIN','');


/////////////// END OF INITIAL SETTINGS ////////////////////////
////////////////////////////////////////////////////////////////

function getVar($name, $def = '') {
if (isset($_REQUEST[$name]) && ($_REQUEST[$name] != ''))
return $_REQUEST[$name];
else
return $def;
}

$cpaneluser=getVar('cpaneluser', CPANELUSER);
$cpanelpass=getVar('cpanelpass', CPANELPASS);
$cpanel_skin = getVar('cpanelskin', CPANEL_SKIN);

if (isset($_REQUEST["subdomain"])) {
// get parameters passed via URL or form, emulate string from file
$doms = array( getVar('domain', DOMAIN) . ";" . $_REQUEST["subdomain"]);
if (getVar('domain', DOMAIN) == '') die("You must specify domain name");
}
else {
// open file with domains list
$doms = @file(INPUT_FILE);
if (!$doms) {
// file does not exist, show input form
echo "
Cannot find input file with subdomains information. It is ok if you are not creating subdomains from file.<br>
Tip: leave field empty to use default value you have specified in the script's code.<br>
<form method='post'>
Subdomain:<input name='subdomain'><br>
Domain:<input name='domain'><br>
cPanel User:<input name='cpaneluser'><br>
cPanel Password:<input name='cpanelpass'><br>
cPanel Skin:<input name='cpanelskin'><br>
<input type='submit' value='Create Subdomain' style='border:1px solid black'>
</form>";
die();
}
}

// create subdomain
function subd($host,$port,$ownername,$passw,$request) {

$sock = fsockopen('localhost',2082);
if(!$sock) {
print('Socket error');
exit();
}

$authstr = "$ownername:$passw";
$pass = base64_encode($authstr);
$in = "GET $request\r\n";
$in .= "HTTP/1.0\r\n";
$in .= "Host:$host\r\n";
$in .= "Authorization: Basic $pass\r\n";
$in .= "\r\n";

fputs($sock, $in);
while (!feof($sock)) {
$result .= fgets ($sock,128);
}
fclose( $sock );

return $result;
}

foreach($doms as $dom) {
$lines = explode(';',$dom);
if (count($lines) == 2) {
// domain and subdomain passed
$domain = trim($lines[0]);
$subd = trim($lines[1]);
}
else {
// only subdomain passed
$domain = getVar('domain', DOMAIN);
$subd = trim($lines[0]);
}
// http://[domainhere]:2082/frontend/x/subdomain/doadddomain.html?domain=[subdomain here]&rootdomain=[domain here]
$request = "/frontend/$cpanel_skin/subdomain/doadddomain.html?rootdomain=$domain&domain=$subd";
$result = subd('localhost',2082,$cpaneluser,$cpanelpass,$request);
$show = strip_tags($result);
echo $show;
echo '<br>';
echo '<br>';
}

?>
Zaqwr
На сайте с 08.08.2007
Offline
111
#7
Администрирование, Linux, Cisco, Juniper
DA
На сайте с 04.02.2005
Offline
165
#8

Так ведь сначала надо в DNS прописать домен

тыщ-пыщ
K
На сайте с 24.03.2004
Offline
223
#9
DJ_AlieN:
Так ведь сначала надо в DNS прописать домен

/ru/forum/comment/2429775

проверенная ддос защита (http://ddos-protection.ru) -> http://ddos-protection.ru (http://ddos-protection.ru), бесплатный тест, цена от размера атаки не зависит.
Andreyka
На сайте с 19.02.2005
Offline
822
#10
DJ_AlieN:
Так ведь сначала надо в DNS прописать домен

wildcard поможет

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий