Hosting Multiple Websites With Apache2 (Автоматизация создания виртуальных доменов в Apache2)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Olden Gremlin
Сообщения: 365
Статус: RAP22-RIPE
ОС: Debian GNU/Linux Wheezy
Контактная информация:

Hosting Multiple Websites With Apache2

Сообщение Olden Gremlin »

Хотелось бы поделиться експромт-скриптом на Perl'е который сможет оказать посильную помощь в организации виртуальных доменов для Apache2.
Собственно сам скрипт:

Код: Выделить всё

#!/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 :)
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
Ответить