Работая программистом, очень часто приходится настраивать 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/, в этот каталог нам и нужно будет положить файлы нашего сайта.