Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008
Откуда: Крым
Помог: 11 раз(а)
|
Когда-то создал себе я такой скрипт, чтоб он создавал мне хосты моментально. Создает сам хосты, файлы, настраивает конфиги, в общем для локального использования самое оно.
Писал для debian, проверял в lenny и squeeze .
Критику можете не оставлять ,так как я не силен в perl да и скрипт написан для узкой задачи, чтоб не тратить время на конфиги.
В общем если кому нужно, берите, а так выложил сюда, чтоб если что самому скопировать.
$pathsite- содержит папку для доменов, в ней будут нужные директории создаваться
# группа пользователей
$usergroup="user";
# пользователь
$username="user";
Для установки прав доступа к созданному.
ВНИМАНИЕ, ПРОВЕРОК НА ОШИБКИ И Т,Д, Я НЕ ДЕЛАЛ, ТАК КАК ПРИ ЗАПУСКЕ СКРИПТА Я ТОЧНО ЗНАЮ, ЧТО ЕСТЬ И ЧТО НУЖНО. ДАННЫЙ СКРИПТ ТОЛЬКО НЕ ТРАТИТ ВРЕМЯ НА СОЗДАНИЕ ФАЙЛОВ И ДИРЕКТОРИЙ И ИХ НАСТРОЙКИ.
CODE ( htmlphp):
скопировать код в буфер обмена
#!/usr/bin/perl # Сюда складываем сайты, $pathsite="/home/user/domains/"; # папка должна существовать! # группа пользователей $usergroup="user"; # пользователь $username="user"; #################################### $functionon=shift; $name=shift; chomp($name); # По умолчанию IP = 127.0.0.1 $ipsitehost=shift; if ($ipsitehost=~ /^$/) { $ipsitehost="127.0.0.1"; } # к этому ip присоеденяется сайт в файле /etc/hosts # IP заведома должен быть внесен в него! #################################### sub swidom { use Switch; switch($functionon){ case '-a' { print "Добавление домена:\n\r"; adomain(); } case '-d' { print "Удаление домена:\n\r"; deldom(); } case '-q' { exit; } case '-h' { print "Справка:\r -a - Добавление домена;\r \t # ./ms.sh -a site.local [127.0.0.1] - Пример быстрого добавления. \r\n \t IP по умолчанию 127.0.0.1 - если менять не нужно, то можно не указывать. \r -d - Удаление домена;\r -h - Даннная справка;\r -q - Выход;\r "; } else { print "Выбирите действие (-a,-d,-h,-q):"; chomp($functionon=<>); swidom(); } }} sub adomain { if ($name=~ /^$/) { print "Введите название домена (без http:// и www.) : "; chomp($name=<>); } open(F1,"> /etc/apache2/sites-enabled/".$name.".conf"); open(F2,"/etc/hosts"); read F2,$allhosts,999999999; $replacement=$ipsitehost."\t".$name."\twww.".$name; $allhosts =~ s/$ipsitehost/$replacement/gi; open(F3,"> /etc/hosts"); $old_point2=select(F3); print $allhosts; select($old_point2); close(F3); system "mkdir ".$pathsite.$name; system "mkdir ".$pathsite.$name."/www"; system "mkdir ".$pathsite.$name."/log"; $domainconf="<VirtualHost *:80> DocumentRoot ".$pathsite.$name."/www ServerAlias www.".$name." ServerName ".$name." <Directory \"".$pathsite.$name."/www\"> AllowOverride All Order Deny,Allow Allow from all Options All </Directory> <IfModule dir_module> DirectoryIndex index.php index.html </IfModule> ErrorLog \"".$pathsite.$name."/log/error.log\" </VirtualHost>"; $old_point1=select(F1); print $domainconf; select($old_point1); close(F1); system "/etc/init.d/apache2 restart"; print "Домен http://".$name." создан!\n\r"; system "chown -R ".$username.":".$usergroup." ".$pathsite.$name; system "chmod -R +x ".$pathsite.$name; $indexphp="<?php ?>"; open(FINDEX,"> ".$pathsite.$name."/www/index.php"); $finphp=select(FINDEX); print $indexphp; select($finphp); close(FINDEX); system "chown -R ".$username.":".$usergroup." ".$pathsite.$name."/www/index.php"; system "chmod -R +x ".$pathsite.$name."/www/index.php"; } sub deldom { if ($name=~ /^$/) { print "Введите название домена (без http:// и www.) : "; chomp($name=<>); } system "rm -R ".$pathsite.$name; system "rm -R /etc/apache2/sites-enabled/".$name.".conf"; open(F2,"/etc/hosts"); read F2,$allhosts,999999999; $repl1="\t".$name; $repl2="\twww.".$name; $onrepl=""; $allhosts =~ s/$repl1/$onrepl/gi; $allhosts =~ s/$repl2/$onrepl/gi; open(F3,"> /etc/hosts"); $old_point2=select(F3); print $allhosts; select($old_point2); close(F3); print "Домен ".$name." удален!\n\r"; } swidom();
ПРИМЕНЕНИЕ
Создаем например в папке /usr/sbin/ файл с именем ad-da , в него копируем содержимое скрипта, на файл ставим права на выполнение. Далее в консоли от рута:
Создание домена domain.dom
ad-da -a domain.dom
Данная команда создаст в директории $pathsite директорию с именем домена и нужными файлами, в настройках пропишет все необходимое и перезапустит апач, проверяем входом браузера на страницу http://domain[dot]dom/
ad-da -d domain.dom - удалит домен domain.dom
|