Собственно сам скрипт:
Код: Выделить всё
#!/usr/bin/perl -w
use strict;
use English;
my $etc = "/etc/apache2/sites-available/";
my $log = "/var/log/apache2/";
my $www = "/var/";
my $a2ensite = "/usr/sbin/a2ensite";
my $a2 = "/etc/init.d/apache2";
my ($login,$pass,$uid,$gid) = getpwnam("www-data");
exit unless defined @ARGV;
my $site = $ARGV[0];
my $wwwsite = "www.".$site;
open FTEMPLATE, "<$etc/TEMPLATE" or die "Can't open file: $!\n";
my @tmpl = <FTEMPLATE>;
close FTEMPLATE;
mkdir "$log$wwwsite", 0755;
mkdir "$www$wwwsite", 0755;
chown $uid, $gid, "$www$wwwsite";
open FSITE, ">$etc$wwwsite" or die "Can't write file: $!\n";
foreach (@tmpl) {
s!<SITE>!$site!g;
print FSITE;
}
close FSITE;
open FTIINDEX, "<$etc/TINDEX" or die "Can't open file: $!\n";
open FOIINDEX, ">$www$wwwsite/index.php" or die "Can't write file: $!\n";
while (<FTIINDEX>) { print FOIINDEX }
close FOIINDEX;
close FTIINDEX;
chown $uid, $gid, "$www$wwwsite/index.php";
system($a2ensite,$wwwsite);
system($a2,"reload");
Шаблон TEMPLATE:
Код: Выделить всё
#
# <SITE> (/etc/apache2/sites-available/www.<SITE>)
#
<VirtualHost *>
ServerAdmin postmaster@olympus.net.ua
ServerName www.<SITE>
ServerAlias <SITE>
DirectoryIndex index.html index.htm index.php
DocumentRoot /var/www.<SITE>/
ErrorLog /var/log/apache2/www.<SITE>/error.log
CustomLog /var/log/apache2/www.<SITE>/access.log combined
</VirtualHost>
Шаблон TINDEX:
Код: Выделить всё
<html>
<head>
<title><?=$_SERVER["HTTP_HOST"]?></title>
</head>
<body>
The web server <b><?=$_SERVER["HTTP_HOST"]?></b> is not available or under development.<br>
For more information contact <a href="mailto:<?=$_SERVER["SERVER_ADMIN"]?>"><?=$_SERVER["SERVER_ADMIN"]?></a>.<br>
</body>
</html>
Собственно все.
Будет время дорисую документацию.
Тем кто и так разберется: надеюсь, что теперь создание виртуальных доменов ограничиться лишь Вашей фантазией и... службой DNS