Віртуальні хости Apache2 доступні з локальної мережі. Працюємо з віртуальними хостами Apache2 не бачить віртуальний хост

У цій замітці мова піде про налаштування віртуальних хостів 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 webmaster@zametki #Журнали сервера ErrorLog "c:/www.Zametki/logs/error.log" CustomLog "c:/www.Zametki/log /access.log" common #коренева папка DocumentRoot "c:/www.Zametki/htdocs" <Directory "c:/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 admin@localhost </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

Кілька сайтів, то 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на абсолютний шлях до домашньої директорії сайту. Перезапустіть веб-сервер.

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

Під час розробки одним хостом не обійдешся. На одному можна розробляти, на іншому тестувати, а на третьому ще один проект.

Плюс до всього, в Apache2 файли сайту за замовчуванням зберігаються в /var/www, у мене ж вони будуть знаходитися в моїй домашній папці, /home/goodigy/sites.

Apache2 може визначати хости за ip-адресами, за доменними іменами та портами.

Ми будемо використовувати другий варіант, тобто визначення хостів за доменними іменами.

В Apache2, встановленому в Ubuntu 16.04 та Ubuntu 14.04, для цього вже багато чого готове.

В папці /etc/apache2/sites-availableзберігатимуться всі конфігураційні файли віртуального хоста.
Потім ми його просто включатимемо і вимикатимемо по потребі.
Один файл там уже є, на основі його ми й зробимо свій.

Скопіюємо під ім'ям example(Наш хост буде називатися example, і в браузері стане доступний за посиланням http://example)

Sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.conf

У попередніх версіях apache2 (до версії 2.4) не використовувалися розширення файлів.conf. У нових версіях (з версії 2.4) це спричинить помилку.

Тепер треба відредагувати, створений, файл

Sudo nano /etc/apache2/sites-available/example.conf

Файл наводимо до такого вигляду:

ServerName example DocumentRoot /home/goodigy/sites/example AllowOverride All Require all granted ErrorLog /home/goodigy/sites/example/error.log CustomLog /home/goodigy/sites/example/access.log combined

Роз'яснення налаштувань:

  • ServerName example- Вказівка ​​доменного імені за яким визначатиметься хост.
  • DocumentRoot /home/goodigy/sites/example- Прив'язує папку до хоста.

  • Options Indexes FollowSymlinks
    AllowOverride All
    Require all granted
    - це налаштування папки,
  • Options Indexes FollowSymlinks- якщо немає індексного файлу (index.html, index.php), показувати список файлів зручно на локальному сервері.
  • AllowOverride All- дозволяє перевизначати настройки htaccess.
  • Require all granted- Доступ дозволений всім.
  • ErrorLog- вказує розташування файлу з логом помилок, я їх зберігаю у папці із сайтом.
  • CustomLog- вказує розташування файлу з логом доступу, я їх зберігаю у папці із сайтом.

Зберігаємо.
Створюємо папки, вказані у конфігураційному файлі

Mkdir /home/goodigy/sites mkdir /home/goodigy/sites/example

Включаємо сайт

Sudo a2ensite example.conf

І відключаємо той, який за умовчанням

Sudo a2dissite 000-default.conf

Перезапускаємо Apache2

Sudo nano /etc/hosts

Виглядає він приблизно так

127.0.0.1 localhost 127.0.1.1 googidy-comp # Натисніть на лінії, які можуть бути недоступними для IPv6 capable hosts::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff0 ff02::2 ip6-allrouters

Туди треба додати вказівку на наш домен example

127.0.0.1 localhost 127.0.1.1 igy-nout 127.0.0.1 example # Натисніть, щоб виконати зв'язок для IPv6 capable hosts::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip 1 ip6-allnodes ff02::2 ip6-allrouters

Зберігаємо.
Все тепер за адресою http://example доступний наш новий хост. У браузері має відобразитися папка з файлами, оскільки там немає індексного файлу.



gastroguru 2017