Создание виртуальных хостов 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/ . Наслаждаемся результатами проделанной работы либо пишем в комментах чего не получилось
Март 27, 2008 в 15:26
Встретился бы этот пост 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
ErrorLog path to errorlog
CustomLog path to customlog
Вот так насколько я сейчас помню.) Незнаю правда правильно ли я все сделал, но работает.