Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PERL скрипт для управления виртуальными хостами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: PERL, консольный клиент
ALEN Модератор
Отправлено: 05 Марта, 2011 - 17:44:56
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Когда-то создал себе я такой скрипт, чтоб он создавал мне хосты моментально. Создает сам хосты, файлы, настраивает конфиги, в общем для локального использования самое оно.
Писал для debian, проверял в lenny и squeeze .
Критику можете не оставлять ,так как я не силен в perl да и скрипт написан для узкой задачи, чтоб не тратить время на конфиги.
В общем если кому нужно, берите, а так выложил сюда, чтоб если что самому скопировать.

$pathsite- содержит папку для доменов, в ней будут нужные директории создаваться
# группа пользователей
$usergroup="user";
# пользователь
$username="user";
Для установки прав доступа к созданному.

ВНИМАНИЕ, ПРОВЕРОК НА ОШИБКИ И Т,Д, Я НЕ ДЕЛАЛ, ТАК КАК ПРИ ЗАПУСКЕ СКРИПТА Я ТОЧНО ЗНАЮ, ЧТО ЕСТЬ И ЧТО НУЖНО. ДАННЫЙ СКРИПТ ТОЛЬКО НЕ ТРАТИТ ВРЕМЯ НА СОЗДАНИЕ ФАЙЛОВ И ДИРЕКТОРИЙ И ИХ НАСТРОЙКИ.

CODE (htmlphp):
скопировать код в буфер обмена
  1. #!/usr/bin/perl
  2. # Сюда складываем сайты,
  3. $pathsite="/home/user/domains/";
  4. # папка должна существовать!
  5.  
  6. # группа пользователей
  7. $usergroup="user";
  8. # пользователь
  9. $username="user";
  10. ####################################
  11.  
  12. $functionon=shift;
  13. $name=shift;
  14. chomp($name);
  15.  
  16. # По умолчанию IP = 127.0.0.1
  17. $ipsitehost=shift;
  18. if ($ipsitehost=~ /^$/) {
  19. $ipsitehost="127.0.0.1";
  20. }
  21. # к этому ip присоеденяется сайт в файле /etc/hosts
  22. # IP заведома должен быть внесен в него!
  23. ####################################
  24.  
  25. sub swidom {
  26. use Switch;
  27.  
  28. switch($functionon){
  29. case '-a' {
  30. print "Добавление домена:\n\r";
  31. adomain();
  32. }
  33. case '-d' {
  34. print "Удаление домена:\n\r";
  35. deldom();
  36. }
  37. case '-q' {
  38. exit;
  39. }
  40. case '-h' {
  41. print "Справка:\r
  42. -a - Добавление домена;\r
  43. \t # ./ms.sh -a site.local [127.0.0.1] - Пример быстрого добавления. \r\n \t IP по умолчанию 127.0.0.1 - если менять не нужно, то можно не указывать. \r
  44. -d - Удаление домена;\r
  45. -h - Даннная справка;\r
  46. -q - Выход;\r
  47. ";
  48. }
  49. else {
  50. print "Выбирите действие (-a,-d,-h,-q):"; chomp($functionon=<>); swidom();
  51. }
  52. }}
  53.  
  54.  
  55.  
  56. sub adomain {
  57.  
  58. if ($name=~ /^$/) {
  59. print "Введите название домена (без http:// и www.) : ";
  60. chomp($name=<>);
  61. }
  62. open(F1,"> /etc/apache2/sites-enabled/".$name.".conf");
  63. open(F2,"/etc/hosts");
  64. read F2,$allhosts,999999999;
  65. $replacement=$ipsitehost."\t".$name."\twww.".$name;
  66. $allhosts =~ s/$ipsitehost/$replacement/gi;
  67. open(F3,"> /etc/hosts");
  68. $old_point2=select(F3);
  69. print $allhosts;
  70. select($old_point2);
  71. close(F3);
  72. system "mkdir ".$pathsite.$name;
  73. system "mkdir ".$pathsite.$name."/www";
  74. system "mkdir ".$pathsite.$name."/log";
  75. $domainconf="<VirtualHost *:80>
  76.  
  77. DocumentRoot ".$pathsite.$name."/www
  78. ServerAlias www.".$name."
  79. ServerName ".$name."
  80.  
  81. <Directory \"".$pathsite.$name."/www\">
  82.          AllowOverride All
  83.          Order Deny,Allow
  84.          Allow from all
  85.          Options All
  86. </Directory>
  87.  
  88. <IfModule dir_module>
  89.     DirectoryIndex index.php index.html
  90. </IfModule>
  91.  
  92. ErrorLog \"".$pathsite.$name."/log/error.log\"
  93.  
  94. </VirtualHost>";
  95. $old_point1=select(F1);
  96. print $domainconf;
  97. select($old_point1);
  98. close(F1);
  99. system "/etc/init.d/apache2 restart";
  100. print "Домен http://".$name." создан!\n\r";
  101. system "chown -R ".$username.":".$usergroup." ".$pathsite.$name;
  102. system "chmod -R +x ".$pathsite.$name;
  103.  
  104. $indexphp="<?php
  105. ?>";
  106. open(FINDEX,"> ".$pathsite.$name."/www/index.php");
  107. $finphp=select(FINDEX);
  108. print $indexphp;
  109. select($finphp);
  110. close(FINDEX);
  111. system "chown -R ".$username.":".$usergroup." ".$pathsite.$name."/www/index.php";
  112. system "chmod -R +x ".$pathsite.$name."/www/index.php";
  113.  
  114. }
  115.  
  116.  
  117.  
  118. sub deldom {
  119. if ($name=~ /^$/) {
  120. print "Введите название домена (без http:// и www.) : ";
  121. chomp($name=<>);
  122. }
  123. system "rm -R ".$pathsite.$name;
  124. system "rm -R /etc/apache2/sites-enabled/".$name.".conf";
  125.  
  126. open(F2,"/etc/hosts");
  127. read F2,$allhosts,999999999;
  128. $repl1="\t".$name;
  129. $repl2="\twww.".$name;
  130. $onrepl="";
  131. $allhosts =~ s/$repl1/$onrepl/gi;
  132. $allhosts =~ s/$repl2/$onrepl/gi;
  133. open(F3,"> /etc/hosts");
  134. $old_point2=select(F3);
  135. print $allhosts;
  136. select($old_point2);
  137. close(F3);
  138.  
  139. print "Домен ".$name." удален!\n\r";
  140. }
  141.  
  142.  
  143. swidom();
  144.  


ПРИМЕНЕНИЕ
Создаем например в папке /usr/sbin/ файл с именем ad-da , в него копируем содержимое скрипта, на файл ставим права на выполнение. Далее в консоли от рута:

Создание домена domain.dom
ad-da -a domain.dom
Данная команда создаст в директории $pathsite директорию с именем домена и нужными файлами, в настройках пропишет все необходимое и перезапустит апач, проверяем входом браузера на страницу http://domain[dot]dom/

ad-da -d domain.dom - удалит домен domain.dom
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB