Счетчик

Поисковый анализ сайта
яндекс.ћетрика
Cервер и сайт запущен 2011.02.01 на Debian

Скрипт автоматического создания виртуальных хостов apache2 
Работа вебмастера вынуждает довольно часто создавать новые сайты, а значит выполнять кучу рутинных операций по управленияю локальной DNS зоной и созданию виртуального хоста. Чтобы избавится от подобной рутины и потенциальных ошибок я использую вот такой простой скрипт
Предполагается, что уже имеются настроенные вебсервер apache2 и локальная зона управляемая сервером bind9
#!/bin/bash
# скрипт создаёт инфраструктуру сайта, требуется доменное имя c указанием зоны, 
зона будет заменена 
на локальную
# Втр Июл 28 00:41:18 MSD 2009

nd=$@
if [ $nd ]
then echo make new virtual domain $nd
else echo use: $0 new-domain.ru; exit
fi
d=`echo $nd| sed -r 's/\.[a-z]+$//g'`
z="a" # название зоны
ip="192.168.0.78" # IP адрес сервера
t="breys" # название эталонного виртуального хоста

# если DNS имя не существует то создаём его либо пропускаем этот шаг
if host $d > /dev/null ; 
then 
echo skip make dns name
else
echo "echo \"\n;`date`\" >> /etc/bind/$z.host" | sudo sh
echo "echo $d IN A $ip >> /etc/bind/$z.host" | sudo sh
echo "echo www.$d IN CNAME $d >> /etc/bind/$z.host" | sudo sh
sudo /etc/init.d/bind9 restart
fi

# создаём директорию для нового сайт, -p без проверок и вопросов
mkdir -p /home/httpd/$nd/www /home/httpd/$nd/cgi-bin

# создаём виртуальный хост apache на основе конфига рабочего сайта
sudo cp /etc/apache2/sites-available/$t.ru.conf /etc/apache2/sites-available/$nd.conf
sudo sed -i s/$t/$d/g /etc/apache2/sites-available/$nd.conf
sudo ln -s /etc/apache2/sites-available/$nd.conf /etc/apache2/sites-enabled/

sudo apache2ctl restart
if wget -q --spider $d.$z;
then
echo Wellcom http://$d.$z
else
# если новый виртуальный хост по какой либо причине не доступен, удалём его и перезапускаем
индейца
sudo rm /etc/apache2/sites-available/$nd.conf /etc/apache2/sites-enabled/$nd.conf
rmdir /home/httpd/$nd/www /home/httpd/$nd/cgi-bin /home/httpd/$nd
sudo apache2ctl restart
fi

Я сохранил его в $HOME/bin и для создания нового сайта использую так
make_domen.sh my-django.ru
make new virtual domain my-django.ru
Password: 
* Stopping domain name service... bind [ OK ] 
* Starting domain name service... bind [ OK ] 
Wellcom http://my-django.a

Вуаля, я получаю новую DNS запись, созданную иерархию нового сайта, новый домен в apache и рабочую ссылку на новый сайт

Для адаптации скрипта для другого сервера нужно изменить 3 переменных
t - имя эталонного виртуального хоста на основе которого будет создан новый (без зоны), должно совпадать с DNS записью и именем конфига
z - имя DNS зоны
ip - IP адрес сервара к которому будет привязываться новый виртуальный хост

Скрипт не особо умный, он лишь проверяет зону на повторное создание виртуального домена и недопускает этого, а в случае неправильного формирования виртуального домена удаляет созданный конфиг apache и пустые директории сайта

Скрипт будет работать на Debian подобных дистрибутивах так как привязан к конфигам в его файловой системе

Добавить комментарий


Защитный код
Обновить