Apache VirtualHost – настройка, автоматическое создание

Работая программистом, очень часто приходится настраивать VirtualHost в Apache. Конечно это не занимает больше 10 минут, но все же время это деньги. Как же хорошо что не только denwer в windows может упростить задачу создания виртуальных хостов, в Ubuntu тоже есть такая возможность – это и есть тема данной статьи. Для начала рассмотрим процесс ручной настройки, а затем напишем sh скрипт для автоматического создания виртуальных хостов.
В каталоге /etc/apache2/sites-available создаём файл с именем «sitename.ru»
sudo gedit /etc/apache2/sites-available/sitename.ru

в нем необходимо указать настройки хоста, я указываю такие:
<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName sitename.ru
  DocumentRoot /var/www/sitename
  <Directory />
    Options All
    AllowOverride All
  </Directory>
  <Directory /var/www/sitename>
    Options All
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>
  ErrorLog /var/log/apache2/error.log
  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog /var/log/apache2/access.log combined
  ServerSignature On
</VirtualHost>

Теперь для того чтоб разрешить использование этого доменного имени создадим символическую ссылку в каталоге /etc/apache2/sites-enabled/
cd /etc/apache2/sites-enabled/
sudo ln -s ../sites-available/sitename.ru

либо с помощью команды
a2ensite /etc/apache2/sites-available/sitename.ru

Теперь осталось только добавить запись о нашем виртуальном хосте в файл /etc/hosts, открываем файл:
sudo gedit /etc/hosts

через пробел добавляем название нашего сайта «sitename.ru», должна получиться строка вида, если доменов больше одного они указываются через пробел:
127.0.0.1 sitename.ru

Перезапускаем apache, чтоб новые настройки вступили в силу, делаем это командой:
sudo apache2ctl restart

Теперь напишем sh скрипт который сделает все то же самое автоматически. Создадим файл в папке /home/username/, назовем его virt-host.sh и добавим в него сам скрипт автоматического создания виртуального хоста:
#!/bin/bash
echo "Creating Virtual Host"
cd /etc/apache2/sites-available
cat <<EOF >> "$1"
<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName $1
    ServerAlias www.$1
  DocumentRoot "/var/www/$1"
 
  <Directory />
    Options All
    AllowOverride All
  </Directory>
 
  <Directory "/var/www/$1">
    Options All
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>
  ErrorLog /var/log/apache2/error.log
  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog /var/log/apache2/access.log combined
  ServerSignature On
</VirtualHost>
EOF
mkdir "/var/www/$1"
cd /etc/apache2/sites-enabled
ln -s "/etc/apache2/sites-available/$1.conf" "$1.conf"
echo "Editing /etc/hosts"
cat <<EOF >> "/etc/hosts"
127.0.0.1       $1
EOF
echo "Set permissions"
chmod 0777 -R "/var/www/$1"
echo "Restarting Apache2"
/etc/init.d/apache2 restart
echo "Finished!"
echo "Local address: /var/www/$1"
echo "Web address: http://$1"

сохраним и дадим файлу права на исполнение:
sudo chmod a+x virt-host.sh

вот и все, скрипт готов к работе, запускаем его с помощью команды:
sudo ./virt-host.sh sitename.ru

скрипт также создаст каталог «sitename.ru» в директории /var/www/, в этот каталог нам и нужно будет положить файлы нашего сайта.
Добавлено: 11 Сентября 2013 07:42:22 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...