Писал для 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
- phpinfo ();
- ?>";
- 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();