вівторок, 8 липня 2008 р.

Віртуальний веб-хостинг з Apache 2

Віртуальний хостинг дозволяє вер-серверам хостити більше, ніж один веб-сайт на одній машині. Саме так працюють веб-хостинги.


У даному ЯКЦЕ я спробую пояснити, як хостити на на одній машині
кілька сайтів, і отримувати до них доступ не лише за адресою типу
http://localhost/web-site, але й за будь яким, прив’язаним до низ
доменним ім’ям, наприклад, http://www.my-web-site.org.ua/.



Встановлення apache2


 sudo apt-get install apache2-common apache2-utils


Налаштування


Відкриємо основний конфіґураційний файл, /etc/apache2/apache2.conf. Пошук за словом virtual приведе нас до наступного рядка:


/etc/apache2/sites-enabled/

Він означає, що коли ми запустимо apache, він прочитає файли у теці /etc/apache2/sites-enabled/. Давайте переглянемо її вміст:


 cd /etc/apache2/sites-enabled/
   ls -l

total 0

lrwxrwxrwx 1 root root 36 2008-01-07 17:01 000-default -> /etc/apache2/sites-available/default


Щож, це лише посилання на на файл у теці /etc/apache2/sites-enabled/. Ви мали б замислитися над тим, що тут робить посилання. Власне, такий підхід дозволяє вам:

1. мати простий конфіґураційний файл;

2. змінювати або створювати нові хости редагуванням/створенням файлів у /etc/apache2/sites-available;

3. не потрібно перезапускати веб-сервер після блокування одного хосту,
оскільки, для цього достатньо просто видалити посилання у теці /etc/apache2/sites-enabled/ на файл у теці /etc/apache2/sites-available/.


Тепер припустимо, що ви бажаєте прив’язати доменне ім’я
my-web-site.org.ua до конкретного веб-сайту на вашій машині, який
розміщується у теці /var/www/my-web-site/.


Для цього, перше за все, необхідно створити новий в /etc/apache2/sites-available, наприклад, my-web-site.conf:


 sudo vim my-web-site.conf


І додати до нього наступні рядки:




ServerAdmin webmaster@localhost

ServerAlias www.my-web-site.org.ua

DocumentRoot /var/www/my-web-site/

#якщо бажаєте використовувати awstats

ScriptAlias /awstats/ /usr/lib/cgi-bin/

#вказуємо власний файл журналу для даного хосту

CustomLog /var/log/apache2/my-web-site.org.ua-access.log combined


Ну ось, ми створили новий віртуальний хост, але він й досі не є
активним/дозволеним. Для цього, як сказано вище, нам всього лиш
потрібно додати посилання на файл /etc/apache2/sites-available/my-web-site.conf. Для цього:


 cd /etc/apache2/sites-enabled/
 
sudo ln -s /etc/apache2/sites-available/my-web-site.conf my-web-site.conf


Тепер apache готовий до перезапуску, однак, спершу ми повинні
повідомити Linux про те, щоб вона шукала хости з адресами
my-web-site.org та www.my-web-site.org.ua не в тенетах, а на локальній
машині. Для цього потрібно відредагувати файл /etc/hosts наступним чином:


127.0.0.1 localhost.localdomain localhost dev.example.com www.dev.example.com

Тепер apache можна сміливо перезапустити:


 sudo /etc/init.d/apache2 reload


Для тесту відкрийте свій оглядач тенет (сподіваюся, це не Internet
Explorer ;)), і наберіть адресу http://www.my-web-site.org.ua.


Чому Debian рулить


Зрозуміло, що, якщо ви хостите на одній машині велику кількість
віртуальних веб-хостів, вам здасться морокною робота по їхньому
тимчасовому блокуванню та розблокуванню, тому в Дебіені для цього є дві
прості, але дуже зручні утилітки.


Для того, що заблокувати віртуальний хост:


 sudo a2ensite mysiteavailable-site


І для його розблокування:


 sudo a2dissite mysiteavailable-site


Де mymysiteavailable-site — ім’я віртуального хосту, яке відповідає імені файлу у теці /etc/apache2/sites-available/, наприклад, my-web-site.conf


Оригінал статті http://www.debian-administration.org.ua/articles/virtual_hosting_using_apache2/

Немає коментарів: