Apache2 віртуальні хости. Працюємо з віртуальними хостами

Доброго часу доби дорогий читач блогу "WEB програмування від А до Я". Сьогодні ми трохи відійдемо від web програмування та поговоримо про інструменти web розробника. А точніше ми зупинимося на virtualhost для apache2 . Багато розробників роблять та підтримують кілька проектів. Так, наприклад, у мене є проект на Joomla, інший проект на WordPress, а також є кілька тестових проектів, на яких я відточую майстерність. І тут виникає питання: "А як на одній машині розгорнути кілька хостів?" Далі я постараюся найбільш зрозуміло відповісти на це питання.
Невелике зауваження моєї робочої машині стоїть операційна система Ubuntu, сервер apache2. Тому і налаштування virtualhost я наводитиму для цієї зв'язки. Але різниця між конфігурацією virtualhost на ubuntu ні чим не відрізнятиметься від конфігурації virtualhost на Windows або будь-якої іншої операційної системи. Одна відмінність - це розташування конфігураційних файлів для virtualhost. А тепер давайте приступимо...

Відразу хочу відзначити, що apache2 у Вас вже встановлено. У Ubuntu apache встановлюється з репозиторію. Для Windows існують пакети Denver та XAMPP.
Тепер розберемося з поняттям virtualhost. Virtualhost – це розміщення кількох хостів на одній машині.

Конфігураційні файли apache2 в ubuntu знаходяться в /etc/apache2
Файл apache2.conf – це основний файл конфігурації.
А віртуальні хости знаходяться у папці /etc/apache2/sites-available
Для кожного віртуального хоста в цій папці є конфігураційний файл.
Але це є актуальним для ubuntu. Для інших операційних систем налаштування virtualhost міститься в самому конфігураційному файлі apache2 apache2.conf в розділі .
Будь-який опис віртуального хоста починається з і закінчується. Це обов'язково!!!
Також virtualhost ви можете прив'язати до певної ip-адреси та порту. Це робиться так:

:> налаштування virtualhost

або прив'язати один virtualhost до кількох ip-адрес:

:> налаштування virtualhost

Давайте наведемо приклад діючого virtualhost:

ServerAdmin [email protected] ServerName kohana ServerAlias ​​kohana DocumentRoot /var/www/kohana ScriptAlias ​​/cgi-bin/ /usr/lib/cgi-bin/ ErrorLog /var/www/kohana/error.log # Можливі значення включають: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/www/kohana/access.log combined Alias ​​/doc/ "/usr/share/doc/"

І розберемо кожен рядок:

  1. — цей тег позначає, що далі слідуватимуть налаштування віртуального хоста. Віртуальний хост спрацьовуватиме при зверненні на будь-яку адресу порту 80.
  2. ServerAdmin — директива містить електронну адресу адміністратора даного хоста і буде відображатися в повідомленнях про помилку. У нашому випадку це [email protected]
  3. ServerName — ця директива визначає ім'я хоста та порт, яким сервер ідентифікує себе. Це необхідно для створення URL. Так, наприклад, у Вас є хост first.example.com, а сервер має ще назву www.example.com і Ви хочете, щоб веб-сервер визначав Ваш хост і за цим ім'ям, тоді в цій директиві маємо прописати ServerName www.example .com
  4. ServerAlias ​​- ця директива встановлює альтернативні імена хостів.
  5. DocumentRoot - директива встановлює каталог, де знаходяться файли для обробки apache2. Тобто. у даному каталозі зберігаються Ваші файли сайту.
  6. у цій директиві ми можемо прописати різні правила для каталогу. Ця директива повинна закриватися тегом.. Так, наприклад, ми прописуємо правила для каталогу home:
AllowOverride FileInfo

Також на шляху до каталогу ми можемо застосовувати і регулярні вирази.
Тепер давайте розглянемо які правила ми можемо прописати у цій директиві

  • AllowOverride цей параметр може містити такі значення: None - тоді файл.htaccess буде повністю ігноруватися, All - тоді в.htaccess допускаються всі директорії.
  • Options – встановлює особливості сервера для цього каталогу. Може приймати такі значення: None - тоді жодна з опцій не допускається, All - допускаються всі опції крім MultiViews, ExecCGI - дозволяє виконання CGI скриптів, FollowSymLinks -сервер слідуватиме за символічними зв'язками, Includes - дозволяється Server-Site-Includes (SSI) , IncludesNOEXEC - дозволяється SSI, але забороняється команди #exec і #include CGI скриптів, Indexes - якщо за посиланням в каталозі нічого не знайдено, то сервер поверне зміст каталогу, MultiViews - дозволяє MultiViews (дія MultiViews полягає в наступному користувачі в адресному рядку<каталог_1>/<каталог_2>і якщо раптом<каталог_2>не існує, то сервер шукає в<каталог_1>файл<каталог_2>.*), SymLinksIfOwnerMatch — сервер наслідуватиме лише ті символічні зв'язки, для яких цільовий файл або каталог мають той же ідентифікатор користувача що і зв'язок.
  • Order - цією директивою ми встановлюємо порядок перевірки, тобто. спочатку перевіряємо на заборону і якщо все у нас проходить, то дозволяємо
  • Deny - у цій директиві ми вказуємо доступ до сервера на основі хоста або ip-адреси. У цій директиві ми перераховуємо заборонені хости
  • allow — у цій директиві ми вказуємо доступ до сервера, перераховуємо дозволені хости.
  1. ErrorLog — у цій директиві ми вказуємо шлях до файлу логів.
  2. LogLevel — у цій директиві ми вказуємо рівень повідомлень, які будуть записуватись у лог-файл. Існують такі рівні:
  • emerg – надзвичайні ситуації – система непридатна для використання.
  • alert - дій повинні бути вжиті негайно.
  • crit - критична умова.
  • error – виникнення помилки.
  • warn - попередження.
  • notice – нормальний стан.
  • info - інформація.
  • debug — debug повідомлення
  1. CustomLog — директива, в якій вказуємо шлях до файлу логів, де реєструються запити до сервера.

Фуф, з конфігураційним файлом для virtualhost ми розібралися.
Тепер створимо віртуальний хост. Для цього в Ubuntu в папці /etc/apache2/sites-available/ створюємо файл з назвою нашого хоста, наприклад test. І поміщаємо туди наступний код:

ServerAdmin [email protected] ServerName test ServerAlias ​​test DocumentRoot /var/www/test Options FollowSymLinks AllowOverride All Опції Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all ScriptAlias ​​/cgi-bin/usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/www/test/error.log # Можливі значення включають: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/www/test/access.log combined Alias ​​/doc/ "/usr/share/doc/" Опції Indexes MultiViews FollowSymLinks AllowOverride None Order deny

Тепер у папці /var/www/ створюємо папку test (тут і будуть файли нашого virtualhost)
Ми створили кофігурацію для нашого хоста. Залишилось увімкнути цей віртуальний хост. Для цього вводимо команду:

Sudo a2ensite test

Перезавантажити сам apache:

Sudo /etc/init.d apache2 restart

І всі наші virtualhost працює.
Давайте у файлі /etc/hosts додамо рядок 127.0.0.1 test
Тепер, ввівши в браузері адресу test, ми потрапляємо на virtualhost на нашому локальному сервері.
На цьому налаштування virtualhost на apache2 завершено. Якщо у Вас виникли питання, то пишіть у коментарях я обов'язково на них відповім.
І не забувайте стежити за оновленнями на моєму блозі, передплативши

Кілька сайтів, то Apache для цього надає можливість налаштування віртуальних хостів (virtual hosts). Віртуальні хости бувають двох видів: name-based virtual hosts, тобто прив'язані до доменного імені, і IP-based virtual hosts, тобто прив'язані до IP-адреси. Віртуальні хости першого типу використовують різні імена для однієї IP-адреси, а другого типу – використовують для кожного сайту окрему IP-адресу. Створення віртуальних хостів в Apache необхідні, якщо на сервері є кілька сайтів, а їх налаштування необхідне для коректного відображення всіх сайтів.

Найбільш поширеним є використання віртуальних хостів на базі імен (name-based virtual hosts), прив'язаних до однієї IP-адреси. Таким чином можна зберігати безліч сайтів на одному IP.

Найпростішим способом додавання та наступного налаштування віртуальних хостів Apache є редагування конфігураційного файлу веб-сервера, який має різні назви та розташування залежно від операційної системи:

У Red-Hat/CentOS/Fedora:

/etc/httpd/conf/httpd.conf

Debian/Ubuntu:

/etc/apache2/apache2.conf

Другим способом налаштування є використання власних .confфайлів, які повинні розміщуватись по дорозі:

У Red-Hat/CentOS/Fedora:

/etc/httpd/conf.d/filename.conf,

Debian/Ubuntu:

/etc/apache2/conf.d/filename.conf.

Як правило, у конфігураційному файлі httpd.confабо apache2.confрозділ управління віртуальними хостами розташовується наприкінці. Для додавання віртуального хоста потрібно буде відкрити цей файл та розкоментувати в ньому (прибрати # ) директиву NameVirtualHost *:80(Аргумент * позначає "всі імена хостів"). Якщо використовуватиметься спосіб розміщення конфігурації в conf.d, то зазначену директиву не потрібно розкоментувати, а слід визначити її в самому створюваному файлі.

Після NameVirtualHostслідує блок VirtualHost *:80. Подібні блоки є конфігурацією ваших віртуальних хостів. Виглядає все це приблизно так:

NameVirtualHost *:80 AllowOverride All Options All ServerAdmin [email protected] DocumentRoot /var/www/site1.ru ServerName site1.ru ServerAlias ​​www.site1.ru ErrorLog logs/site1.ru-error_log CustomLog logs/site1.ru-access_log common ServerAdmin [email protected] DocumentRoot /var/www/site2.ru ServerName site2.ru ServerAlias ​​www.site2.ru ErrorLog logs/site2.ru-error_log CustomLog logs/site2.ru-access_log common

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

Розглянемо детальніше, що відповідає кожна зазначена вище директива.

1. Директива ServerAdminвказує електронну адресу адміністратора сервера, на яку надходять усі повідомлення з хоста щодо його адміністрування.

2. Директива DocumentRootвказує кореневу директорію з файлами сайту, які мають видаватися веб-сервером клієнту (браузеру).

3. Директива Server Nameвизначає ім'я хоста, на запит якого повинні будуть видаватися файли, розташовані в DocumentRoot.

4. Директива ServerAliasслужить завдання альтернативних імен хоста (аліасів, псевдонімів), куди він отзывается.

5. Директива ErrorLogзадає файли протоколів помилок для кожного хоста, а CustomLog– файли протоколів для решти, крім помилок.

До блоків із віртуалхостами, як ви помітили, є ще запис:

AllowOverride All

У тегах полягає перелік директив (параметрів), які будуть застосовуватися до конкретної директорії, яка вказується у тезі, що відкриває. У прикладі вище – це var/www/. Вказана директива AllowOverrideвказує, чи використовувати файли .htaccessі якщо так, то які глобальні директиви веб-сервера можна перевизначати в таких файлах. У наведеному вище прикладі значення AllowOverrideвстановлено в All, що дозволяє обробляти файли.htaccess і всі вказані директиви. Існують і інші можливі значення:

AuthConfig- дозволяє використовувати директиви авторизації (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require і т.д.).

FileInfo- дозволяє використовувати директиви, що керують типами документів (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority і т.д.).

Indexes— дозволяє використовувати директиви для керування індексацією каталогів (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName і т.д.).

Limit- дозволяє використовувати директиви управління доступом (allow, deny та order).

Options- дозволяє використовувати директиви, за допомогою яких можна керувати специфічними особливостями каталогу (Options та XBitHack).

Це одна з багатьох можливих директив, з якими ви можете ознайомитись на сайті розробників.

Після збереження змін у файлі необхідно перевірити нові настройки помилок. Для перевірки можна використовувати такі команди:

Apachectl configtest apachectl -S apachectl -d

Якщо отримано повідомлення “ Syntax OK”, отже, помилок немає і можна перезавантажувати веб-сервер, щоб застосували зміни. Зробити це можна за допомогою наступних команд:

Red-Hat/CentOS/Fedora:

Service httpd restart

/etc/init.d/ httpd restart

Debian/Ubuntu:

Service apache2 restart

/etc/init.d/apache2 restart

Далі ви можете мати справу з наступною проблемою. При надходженні запиту Apache проходить по всьому списку віртуальних хостів у пошуках відповідного, і якщо не знаходить відповідності, видає перший по порядку хост. Щоб усунути цю неприємність, фахівці вигадали так звану секцію-заглушку, яку слід вставити перед першою секцією. VirtualHostреальний сайт. Виглядає вона приблизно так:

ServerName default DocumentRoot /var/www/default

Таким чином, всі неправильні запити будуть надсилатися шляхом var/www/default, де можна створити індексну сторінку, яка повідомлятиме про неправильний запит.

Також, Apache за замовчуванням не має доступу до ваших домашніх директорій, а лише до директорії /var/www. Якщо ви використовуєте на своєму сервері SElinux, то для надання Apache доступу до домашніх директорій використовуйте такі команди:

Setsebool -P httpd_enable_homedirs 1

Setsebool -P apache2_enable_homedirs 1

Для того, щоб Apache мав доступ до певної директорії, наприклад, до /home/mydirслід використовувати команду:

Chcon -R -t httpd_sys_content_t /home/mydir

Chcon -R -t apache2_sys_content_t /home/mydir

При вимкненому SELinuxдля надання Apache доступу до тієї чи іншої домашньої директорії сайту вам потрібно буде вручну відредагувати його конфігураційний файл ( /etc/httpd/conf/httpd.confв CentOS/Fedoraабо /etc/apache2/apache2.confв Debian/Ubuntu).

Відкривши конфігураційний файл веб-сервера для редагування, знайдіть рядок DocumentRoot(при використанні редактора nano її можна знайти за допомогою комбінації клавіш Ctrl+W). Замініть значення в лапках /var/www/htmlна абсолютний шлях до домашньої директорії сайту (наприклад, /home/username/site.com). Збережіть зміни та вийдіть із меню редактора ( Ctrl+Oі Ctrl+X). Перезапустіть Apache.

Якщо у вас на VPS встановлена ​​ОС Debian/Ubuntu, то редагувати рядок DocumentRootнеобхідно у файлі /etc/apache2/sites-available/default. Відкрийте його для редагування та замініть стандартне значення /var/wwwна абсолютний шлях до домашньої директорії сайту. Перезапустіть веб-сервер.

На цьому базове налаштування віртуальних хостів закінчено.

Кілька сайтів, то Apache для цього надає можливість налаштування віртуальних хостів (virtual hosts). Віртуальні хости бувають двох видів: name-based virtual hosts, тобто прив'язані до доменного імені, і IP-based virtual hosts, тобто прив'язані до IP-адреси. Віртуальні хости першого типу використовують різні імена для однієї IP-адреси, а другого типу – використовують для кожного сайту окрему IP-адресу. Створення віртуальних хостів в Apache необхідні, якщо на сервері є кілька сайтів, а їх налаштування необхідне для коректного відображення всіх сайтів.

Найбільш поширеним є використання віртуальних хостів на базі імен (name-based virtual hosts), прив'язаних до однієї IP-адреси. Таким чином можна зберігати безліч сайтів на одному IP.

Найпростішим способом додавання та наступного налаштування віртуальних хостів Apache є редагування конфігураційного файлу веб-сервера, який має різні назви та розташування залежно від операційної системи:

У Red-Hat/CentOS/Fedora:

/etc/httpd/conf/httpd.conf

Debian/Ubuntu:

/etc/apache2/apache2.conf

Другим способом налаштування є використання власних .confфайлів, які повинні розміщуватись по дорозі:

У Red-Hat/CentOS/Fedora:

/etc/httpd/conf.d/filename.conf,

Debian/Ubuntu:

/etc/apache2/conf.d/filename.conf.

Як правило, у конфігураційному файлі httpd.confабо apache2.confрозділ управління віртуальними хостами розташовується наприкінці. Для додавання віртуального хоста потрібно буде відкрити цей файл та розкоментувати в ньому (прибрати # ) директиву NameVirtualHost *:80(Аргумент * позначає "всі імена хостів"). Якщо використовуватиметься спосіб розміщення конфігурації в conf.d, то зазначену директиву не потрібно розкоментувати, а слід визначити її в самому створюваному файлі.

Після NameVirtualHostслідує блок VirtualHost *:80. Подібні блоки є конфігурацією ваших віртуальних хостів. Виглядає все це приблизно так:

NameVirtualHost *:80 AllowOverride All Options All ServerAdmin [email protected] DocumentRoot /var/www/site1.ru ServerName site1.ru ServerAlias ​​www.site1.ru ErrorLog logs/site1.ru-error_log CustomLog logs/site1.ru-access_log common ServerAdmin [email protected] DocumentRoot /var/www/site2.ru ServerName site2.ru ServerAlias ​​www.site2.ru ErrorLog logs/site2.ru-error_log CustomLog logs/site2.ru-access_log common

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

Розглянемо детальніше, що відповідає кожна зазначена вище директива.

1. Директива ServerAdminвказує електронну адресу адміністратора сервера, на яку надходять усі повідомлення з хоста щодо його адміністрування.

2. Директива DocumentRootвказує кореневу директорію з файлами сайту, які мають видаватися веб-сервером клієнту (браузеру).

3. Директива Server Nameвизначає ім'я хоста, на запит якого повинні будуть видаватися файли, розташовані в DocumentRoot.

4. Директива ServerAliasслужить завдання альтернативних імен хоста (аліасів, псевдонімів), куди він отзывается.

5. Директива ErrorLogзадає файли протоколів помилок для кожного хоста, а CustomLog– файли протоколів для решти, крім помилок.

До блоків із віртуалхостами, як ви помітили, є ще запис:

AllowOverride All

У тегах полягає перелік директив (параметрів), які будуть застосовуватися до конкретної директорії, яка вказується у тезі, що відкриває. У прикладі вище – це var/www/. Вказана директива AllowOverrideвказує, чи використовувати файли .htaccessі якщо так, то які глобальні директиви веб-сервера можна перевизначати в таких файлах. У наведеному вище прикладі значення AllowOverrideвстановлено в All, що дозволяє обробляти файли.htaccess і всі вказані директиви. Існують і інші можливі значення:

AuthConfig- дозволяє використовувати директиви авторизації (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require і т.д.).

FileInfo- дозволяє використовувати директиви, що керують типами документів (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority і т.д.).

Indexes— дозволяє використовувати директиви для керування індексацією каталогів (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName і т.д.).

Limit- дозволяє використовувати директиви управління доступом (allow, deny та order).

Options- дозволяє використовувати директиви, за допомогою яких можна керувати специфічними особливостями каталогу (Options та XBitHack).

Це одна з багатьох можливих директив, з якими ви можете ознайомитись на сайті розробників.

Після збереження змін у файлі необхідно перевірити нові настройки помилок. Для перевірки можна використовувати такі команди:

Apachectl configtest apachectl -S apachectl -d

Якщо отримано повідомлення “ Syntax OK”, отже, помилок немає і можна перезавантажувати веб-сервер, щоб застосували зміни. Зробити це можна за допомогою наступних команд:

Red-Hat/CentOS/Fedora:

Service httpd restart

/etc/init.d/ httpd restart

Debian/Ubuntu:

Service apache2 restart

/etc/init.d/apache2 restart

Далі ви можете мати справу з наступною проблемою. При надходженні запиту Apache проходить по всьому списку віртуальних хостів у пошуках відповідного, і якщо не знаходить відповідності, видає перший по порядку хост. Щоб усунути цю неприємність, фахівці вигадали так звану секцію-заглушку, яку слід вставити перед першою секцією. VirtualHostреальний сайт. Виглядає вона приблизно так:

ServerName default DocumentRoot /var/www/default

Таким чином, всі неправильні запити будуть надсилатися шляхом var/www/default, де можна створити індексну сторінку, яка повідомлятиме про неправильний запит.

Також, Apache за замовчуванням не має доступу до ваших домашніх директорій, а лише до директорії /var/www. Якщо ви використовуєте на своєму сервері SElinux, то для надання Apache доступу до домашніх директорій використовуйте такі команди:

Setsebool -P httpd_enable_homedirs 1

Setsebool -P apache2_enable_homedirs 1

Для того, щоб Apache мав доступ до певної директорії, наприклад, до /home/mydirслід використовувати команду:

Chcon -R -t httpd_sys_content_t /home/mydir

Chcon -R -t apache2_sys_content_t /home/mydir

При вимкненому SELinuxдля надання Apache доступу до тієї чи іншої домашньої директорії сайту вам потрібно буде вручну відредагувати його конфігураційний файл ( /etc/httpd/conf/httpd.confв CentOS/Fedoraабо /etc/apache2/apache2.confв Debian/Ubuntu).

Відкривши конфігураційний файл веб-сервера для редагування, знайдіть рядок DocumentRoot(при використанні редактора nano її можна знайти за допомогою комбінації клавіш Ctrl+W). Замініть значення в лапках /var/www/htmlна абсолютний шлях до домашньої директорії сайту (наприклад, /home/username/site.com). Збережіть зміни та вийдіть із меню редактора ( Ctrl+Oі Ctrl+X). Перезапустіть Apache.

Якщо у вас на VPS встановлена ​​ОС Debian/Ubuntu, то редагувати рядок DocumentRootнеобхідно у файлі /etc/apache2/sites-available/default. Відкрийте його для редагування та замініть стандартне значення /var/wwwна абсолютний шлях до домашньої директорії сайту. Перезапустіть веб-сервер.

На цьому базове налаштування віртуальних хостів закінчено.

У цій замітці мова піде про налаштування віртуальних хостів Apacheпід Windows. Я розповім, що таке віртуальні хости, і для чого вони використовуються. Детальні ілюстрації додаються.

Віртуальний хостинг. Основні поняття.

Отже, спочатку потрібно розібратися, що таке віртуальний хостинг:

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

Тобто. у вас на комп'ютері може бути кілька сайтів, доступних за різними іменами.

Віртуальні хостибувають 2-х видів:

  • віртуальні хости, засновані на імені ( name-based);
  • віртуальні хости, засновані на IP адресі комп'ютера ( ip-based).

Ми будемо використовувати перший варіант – name-based віртуальні хости.

Налаштування віртуальних хостів Apache.

Щоб налаштувати віртуальні хости, ми повинні дописати кілька рядків тексту до конфігураційного файлу Apache. Почитати про те, де знайти цей файл і про опис його синтаксису можна в замітці про налаштування PHP як модуля Apache.

Відкриваємо цей файл у блокноті. Шукаємо та видаляємо коментар спочатку рядка, як показано нижче:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Цей рядок підключає параметри, описані у файлі conf/extra/httpd-vhosts.conf.

Синтаксис для створення name-based віртуального хоста:


DocumentRoot шлях до сайту
ServerName назва сайту

У файлі vhosts є приклади. Вони нам не потрібні. Просто видаляємо їх та замінюємо тест на наступний:

#
# Virtual Hosts
#
# Тут можна детальніше почитати про тонке налаштування віртуальних хостів
#
#

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

# Тут прописуємо шлях до файлів сайту (DocumentRoot) та ім'я хоста (ServerName)

DocumentRoot з:/www/test
ServerName test

Тепер створіть на диску C: папку wwwі в ній папку test. Зверніть увагу, що у Windows використовуються зворотні слеші, а конфігураційному файлі прямі /.

Тепер необхідно перезавантажити Apache , щоб налаштування набули чинності.

Наступним кроком ми повинні повідомити Windows про створені віртуальні хости. Для цього знайдіть файл C:/Windows/system32/drivers/etc/hosts. Відкриваємо його за допомогою звичайного блокнота і дописуємо туди наступний рядок:

127.0.0.1 – це IP-адреса вашого ком'ютера. Цим рядком ми повідомили Windows, що на цій IP адресі знаходиться сайт test.

Якщо ви створите, наприклад, ще один віртуальний хост, то дописуємо ще один рядок:

127.0.0.1 ім'я вашого віртуального хоста

Тепер потрібно перевірити, чи правильно налаштування. Для цього створимо у папці з:/www/testфайл index.phpі напишемо там такий код:

Пишемо у браузері URL http://test. Якщо ви все зробили правильно, то побачите щось на кшталт:

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

У попередній статті ми розібралися як встановити apache. Тепер давайте розберемо, навіщо створюють на apache віртуальний хост і як проводиться налаштування віртуальних хостів apache windows.

І так давайте розберемося навіщо нам потрібний віртуальний хост. Після встановлення apache ми можемо до нього звертатися, набравши в браузері localhost. А хотілося б, щоб ми могли тримати на сервері кілька сайтів і звертатися до них по окремому url. Для цього має бути зроблено на apache налаштування віртуальних хостів. Для початку створимо приклад на диску С папку "www.Zametki". У папці С: Zametki створимо три папки conf, htdocs, logs, Errors . У папці conf створимо файл zametki.conf. Відкриємо файл С:\www.Zametki\conf\zametki.conf і опишемо наш віртуальний хост:

#Віртуальний хост zametki <VirtualHost *:80> #Налаштування сервера ServerName www.zametki ServerAlias ​​zametki ServerAdmin [email protected]#Журнали сервера ErrorLog "c:/www.Zametki/logs/error.log" CustomLog "c:/www.Zametki/logs/access.log" common #коренева папка DocumentRoot "c:/www.Zametki/htdocs" <Directory " з:/www.Zametki/htdocs"> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory> </VirtualHost>

Зберігаємо файл zametki.conf. Тепер нам залишилося підключити його до основного конфігураційного файлу сервера httpd.conf. Він знаходиться за адресою C:\Program Files\Apache Software Foundation\Apache2.2\conf. Відкриваємо його і для початку дописуємо в самий низ файлу:

NameVirtualHost *:80 <VirtualHost *:80> ServerName localhost ServerAdmin [email protected]</VirtualHost>

Ми створили віртуальний хост за промовчанням. Тепер підключимо створений нами хост. Пишемо в той же файл у самий низ документа:

# www.zametki Include "c:/www.Zametki/conf/zametki.conf"

Тепер нам залишилося створити запис про наш хост у файлі hosts за адресою C:WINDOWSsystem32driversetc. Це буде заміна сервера DNS.

//запис за замовчуванням виндовс 127.0.0.1 localhost //наш запис 127.0.0.1 zametki www.zametki

Створення віртуальних папок Apache

За створення віртуальних тек у нас відповідає директива Alias. Створимо папку для зберігання файлів з помилками Apache. Додамо у файл zametki.conf у директиву <VirtualHost> … </VirtualHost> нашого віртуального хоста наступне:

# Папка з повідомленнями про помилки //призначаємо аліас(псевдонім) для папки Alias ​​/err/ "c:/www.Zametki/Errors/" <Directory "c:/www.Zametki/Errors/"> Options Indexes FollowSymLinks AllowOverride All Order deny ,allow Allow from all </Directory>

Створення своїх сторінок з помилками Apache

За повідомлення про помилки відповідає директива ErrorDocument. Створимо в папці c:/www.Zametki/Errors/ файл наприклад 404.html. Це буде наша html сторінка, що виводиться при помилці сервера 404. До файлу zametki.conf додамо наступні рядки:

# Повідомлення про помилки ErrorDocument 404 /err/404.html

Схожі статті