Создание виртуальных хостов Apache2 (Ubuntu Linux)

Март 18, 2008

Давно задумался на тему наведения порядка на своем рабочем лаптоп-вебсервере. Решил вынести дефолтовую директорию web-сервера из /var/www в другое, более доступное место — надоедает по симлинкам скакать.

Кроме того, решил создать под каждый проект виртуальный хост. Зачем это нужно — думаю, понятно каждому: избавляемся от работы со скриптами через принудительно долгий http://localhost/mySite — переходим к просто http://mySite/.

Далее привожу краткий мануал, как сделать это в домашних условиях (даже мануалом стыдно назвать-то :-) ).


Все задуманное реализуется редактированием двух файлов:

  • /etc/apache2/sites-available/default — список виртуальных хостов на вебсервере.
  • /etc/hosts — список хостов, известных нашей машине.

Условимся, что у вас есть отдельный диск на машине, примонтированный как /work. В нем создаем папку www. Таким образом, обращение к http://localhost/ будет обрабатывать скрипты из директории /work/www.

Таким образом имеем default-файл следующего вида:

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /work/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /work/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory „/usr/lib/cgi-bin“>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
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
Alias /doc/ "/usr/share/doc/
"
<Directory „/usr/share/doc/“>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>

А сейчас создадим новую директорию в /work/www. Назовем ее, скажем, testsite. Снова откроем  /etc/apache2/sites-available/default.

Добавим в него следующие строки:

<VirtualHost *>
ServerName autodesk
DocumentRoot /work/www/testsite
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /work/www/testsite>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Сохраним файл, перезапустим apache2 (достаточно в консоли выполнить команду apache2 -k restart). Откроем файл /etc/hosts и впишем в него строку

 127.0.1.1  testsite

Открываем браузер и запрашиваем страницу http://testsite/ . Наслаждаемся результатами проделанной работы либо пишем в комментах чего не получилось ;)

1 комментарий на “Создание виртуальных хостов Apache2 (Ubuntu Linux)”

  1. rOOse высказал:

    Встретился бы этот пост 3-4 дня назад))) Только вчера мучался с этим делом. Хотелось чтобы файлы этого виртуального хоста располагались в моей домашней папке, однако не получилось. Пришлось создавать там же где уже были файлы localhost кажется в usr/www. Кстати я обошелся лишь редактированием файла vhosts.conf, там же и localhost прописал, а из httpd.conf его убрал.

    Писал что-то наподобие этого:

    Listen 127.0.0.2:80

    DocumentRoot /usr/www/testsite

    ServerName testsite.ru

    ServerAlias testsite.ru www.testsite.ru

    ErrorLog path to errorlog

    CustomLog path to customlog

    Вот так насколько я сейчас помню.) Незнаю правда правильно ли я все сделал, но работает.