Як створити віртуальний хост у WampServer
WAMPServer 3 значно полегшив цей процес!
Ви можете робити майже все, використовуючи утиліту, яка надається як частина WAMPServer.
Створіть всередині папку для розміщення вашого project.site. Це може бути в C:\wamp\www\
каталозі або в абсолютно окремій папці типу C:\websites
.
Створіть папку всередині вибраного вами місця, наприклад, C:\websites\project1\www
підc:\wamp\www\project1\www
Тепер відкрийте localhost wampmanager->localhost
і натисніть на посилання Add a Virtual Host
в розділі TOOLS на домашній сторінці.
Ви побачите таку сторінку:
Заповніть поля, як зазначено в інструкціях над кожним полем
Конфігурація віртуального хосту буде створена для вас.
Тепер потрібно перезапустити кеш DNS. Ви можете зробити це з меню wampmanager, як це right click wampmanager->Tools->Restart DNS
. Кеш DNS буде перезапущено, а потім Apache також буде зупинено та перезапущено. Коли піктограма wampmanager знову стає зеленою, все завершено.
Тепер ви повинні створити простий index.php
файл або встановити свій сайт у створену вище папку.
Якщо припустити, що ваш VH був викликаний, project.dev
ви повинні побачити це ім'я в розділі " Віртуальні хости " на домашній сторінці WAMPServer.
Ви можете запустити сайт з цього меню, або просто використовувати нове доменне ім'я в адресному рядку EG, project1.dev
і сайт слід запустити.
Старий механізм WAMPServer 2.5, або якщо ви хочете зробити все це вручну
У WampServer 2.5 і вище відбулася зміна концепції, і для цього є вагома причина!
У WampServer зараз НАСТОЛОВО рекомендується створити віртуальний хост для кожного з ваших проектів, навіть якщо ви тримаєте їх у \wamp\www\subfolder
структурі.
Документація віртуальних хостів
Приклади віртуального хосту
На домашній сторінці WampServer ( \wamp\www\index.php
) тепер очікується, що ви створили віртуальний хост для всіх своїх проектів, і тому він буде працювати належним чином, лише якщо ви це зробите.
Історія
Для того, щоб полегшити життя новачкам, які використовують WampServer для вивчення PHP Apache та MySQL, було запропоновано створити підпапки під \wamp\www\
папкою.
wamp
|
|
|
|
Потім ці вкладені папки відображатимуться як посилання на домашній сторінці WampServer у меню під назвою „Ваші проекти”, і ці посилання містять посилання на localhost/subfoldername
.
Прийнятно лише для простих навчальних посібників
Це полегшило життя абсолютно новачку і було цілком прийнятним, наприклад, для наступних підручників з вивчення PHP-кодування. Однак він ніколи не був призначений для використання при розробці справжнього веб-сайту, який згодом ви захочете скопіювати на свій розміщений сервер. Насправді, якщо ви використовували цей механізм, це часто спричиняло проблеми, оскільки конфігурація реальних сайтів не відповідала вашій конфігурації розробки.
Проблема реальної розробки веб-сайтів.
Причиною цього є, звичайно, те, що за замовчуванням налаштування DocumentRoot для wamp - це
DocumentRoot "c:/wamp/www/"
незалежно від того, як називалася ваша підпапка. Цей набір, який часто використовував PHP-код, який запитував структуру або ваш сайт, отримував різну інформацію під час запуску на вашій розробці WampServer до тієї, яку він отримав би під час запуску на активному розміщеному сервері, де конфігурація DocumentRoot вказує на папку у верхній частині веб-сайту файлова ієрархія. Цей тип коду існує у багатьох фреймворках та системах управління вмістом, наприклад, WordPress та Joomla тощо.
Наприклад
Скажімо, у нас є проект з назвою project1, який утримується wamp\www\project1
і працює неправильно якlocalhost/project1/index.php
Це те, про що повідомляється деякою з відповідних команд PHP:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Тепер, якщо ми правильно визначили цей сайт, використовуючи визначення віртуального хосту, і запустили його, оскільки http://project1
результати на сайті розробки WAMPServer збігатимуться з результатами, отриманими в реальному розміщеному середовищі.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Зараз ця різниця може здатися тривіальною спочатку, але якщо ви хочете використовувати фреймворк, такий як WordPress, або одну із CMS, наприклад Joomla, це може викликати проблеми і перетворює ваш сайт на діючий сервер.
Як створити віртуальний хост у WampServer
Насправді це повинно працювати в основному однаково для будь-якого сервера wndows Apache, з різницею лише в тому, де ви можете знайти конфігураційні файли Apache.
Щоб створити свій перший віртуальний хост в Apache, потрібно виконати 3 кроки, і лише 2, якщо ви його вже визначили.
- Створення визначень віртуального хосту
- Додайте нове доменне ім’я до файлу HOSTS.
- Розкоментуйте рядок у httpd.conf, що містить файл визначення віртуальних хостів.
Крок 1 , Створіть визначення віртуального хосту
Відредагуйте файл, httpd-hosts.conf
який називається WampServer
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Номери версій Apache можуть відрізнятися, затягніть мозок, перш ніж продовжувати)
Якщо ви редагуєте цей файл вперше, видаліть прикладний код за замовчуванням, він не корисний.
Я припускаю, що ми хочемо створити визначення для сайту під назвою project1, який живе
\wamp\www\project1
Дуже важливо, спочатку ми повинні переконатись, що localhost все ще працює, і це перше визначення VHOST, яке ми додамо до цього файлу.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Тепер ми визначаємо наш проект: і це, звичайно, ви робите для кожного свого проекту, починаючи новий.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
ПРИМІТКА. Що кожен віртуальний хост DocumentRoot
визначає як власний . Є також багато інших параметрів, які ви можете додати до визначення віртуальних хостів, перевірте документацію Apache.
Маленька сторона
Принцип роботи віртуальних хостів в Apache: Перше визначення у цьому файлі також буде веб-сайтом за замовчуванням, тому, якщо доменне ім'я, яке використовується у браузері, не відповідає жодному фактично визначеному віртуально розміщеному домену, то робить localhost першим доменом у файлі це сайт, який завантажується, якщо спроба зламати просто використовує вашу IP-адресу. Тож якщо ми гарантуємо, що безпека Apache для цього домену ЗАВЖДИ ВСТАНОВЛЕНА
Require local
будь-який випадковий злом із зовнішньої адреси отримає помилку і не потрапить у ваш ПК, але якщо ви неправильно напишете домен, вам буде показано домашню сторінку WampServer, оскільки ви знаходитесь на тому самому ПК, що і WampServer, і тому local
.
Крок 2 :
Додайте нове доменне ім’я до файлу HOSTS. Тепер нам потрібно додати доменне ім’я, яке ми використовували у визначенні віртуального хосту, до файлу HOSTS, щоб Windows знала, де його знайти. Це схоже на створення запису DNS A, але в цьому випадку це видно лише на цьому конкретному ПК.
Редагувати C:\windows\system32\drivers\etc\hosts
Файл не має розширення і повинен залишатися таким. Слідкуйте за блокнотом, оскільки він може спробувати додати .txt
розширення, якщо у вас немає кращого редактора. Я пропоную вам завантажити Notepad ++, його безкоштовний і дуже хороший редактор.
Крім того, це захищений файл, тому ви повинні редагувати його з правами адміністратора, тому запустіть свій редактор, використовуючи опцію меню Запуск від імені адміністратора .
Файл хостів повинен виглядати так, як тільки ви завершите ці редагування
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Зверніть увагу, що тут ви повинні мати визначення адреси зворотної петлі IPV4, 127.0.0.1
а також адресу зворотної петлі IPV6, ::1
оскільки Apache тепер знає IPV6, і браузер буде використовувати IPV4 або IPV6 або обидва. Я не уявляю, як він вирішує, який використовувати, але він може використовувати будь-який, якщо у вас увімкнено стек IPV6, і більшість віконних ОС роблять з XP SP3.
Тепер ми повинні сказати Windows, щоб оновити кеш свого доменного імені, тому знову запустіть командне вікно, використовуючи опцію меню « Запуск від імені адміністратора », і виконайте наступне.
net stop dnscache
net start dnscache
Це змушує Windows очистити кеш свого імені домену та перезавантажити його, при перезавантаженні він перечитає файл HOSTS, щоб тепер він знав про домен project1
.
Крок 3 : Розкоментуйте рядок у httpd.conf, який містить файл визначення віртуальних хостів.
Відредагуйте httpd.conf, скористайтеся меню wampmanager.exe, щоб переконатися, що ви відредагували правильний файл.
Знайдіть цей рядок у httpd.conf
І просто видаліть, #
щоб розкоментувати цей рядок.
Щоб активувати цю зміну у вас під управлінням Apache, ми повинні зупинити та перезапустити службу Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Тепер, якщо піктограма WAMP у системному треї знову не стає ЗЕЛЕНОЮ, це означає, що ви, мабуть, зробили щось не так у \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
файлі.
Якщо так, то тут є корисний механізм, щоб з’ясувати, що не так. Він використовує функцію Apache exe (httpd.exe) для перевірки своїх конфігураційних файлів та повідомлення про помилки за іменами файлів та номерами рядків.
Запустіть командне вікно.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Тож виправте помилки та повторіть повторне тестування, поки не отримаєте результат
Syntax OK
Тепер є ще одна річ.
Насправді в системі меню wampmanager є 2 нові пункти меню. Той, що називається "Мої проекти", який увімкнено за замовчуванням. І другий, який називається «Мої віртуальні хости» , який за замовчуванням не активований.
У розділі "Мої проекти" буде перелічено будь-який підкаталог каталогу \ wamp \ www та надано посилання для запуску сайту в цьому підкаталозі. Як я вже говорив раніше, він запускає "project1", а не "localhost / project1", тому, щоб зв’язок працював, ми повинні створити визначення віртуального хосту, щоб це посилання фактично запустило цей сайт у вашому браузері, без визначення віртуального хосту, швидше за все, запустити веб-пошук за назвою сайту як ключовим словом або просто повернути умову не знайдений сайт.
Пункт меню "Мої віртуальні господарі" дещо інший. Він здійснює пошук у файлі, який використовується для визначення віртуальних хостів (до нього ми дійдемо за хвилину), і створює посилання на меню для кожного знайденого параметра ServerName і створює пункт меню для кожного з них. Це може здатися трохи заплутаним, оскільки коли ми створюємо визначення віртуального хосту для підкаталогів папки \ wamp \ www, деякі елементи з'являться як в меню "Мої проекти", так і в меню "Мої віртуальні хости".
Як увімкнути це інше меню "Мої віртуальні хости"?
- Зробіть резервну копію файлу \ wamp \ wampmanager.tpl, на випадок помилки, це дуже важливий файл.
- Відредагуйте файл \ wamp \ wampmanager.tpl
- Знайдіть цей параметр
;WAMPPROJECTSUBMENU
у розділі "[Menu.Left]".
- Додайте цей новий параметр
;WAMPVHOSTSUBMENU
до або після ;WAMPPROJECTSUBMENU
параметра.
- Збережіть файл.
- Тепер клацніть правою кнопкою миші піктограму wampmanager та виберіть «Оновити». Якщо це не додає меню, "вийдіть" і перезапустіть wampmanager.
Велика примітка
Нове меню з’явиться, лише якщо у вас вже визначені деякі віртуальні хости! Інакше ви не побачите різниці, доки не визначите VHOST.
Тепер, якщо взяти це до логічного розширення
Тепер ви можете повністю перемістити код веб-сайту за межі \wamp\
структури папок, просто змінивши параметр DocumentRoot у визначенні VHOST. Так, наприклад, ви можете зробити це:
Створіть папку на вампі-диску або будь-якому іншому диску (остерігайтеся мережевого диска, вони дещо складніші)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Тепер ви копіюєте код свого сайту в, або починаєте створювати його в \websites\example.com\www
папці та визначаєте свій VHOST таким чином:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Потім додайте цей новий домен розробки до файлу HOSTS:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
ПРИМІТКА. Не годиться використовувати ServerName або ServerAlias, що збігається з вашим активним доменним іменем, оскільки якби ми використовували example.com як ServerName, це означало б, що ми більше не зможемо дістатись із цього реального веб-сайту з цього ПК, як би спрямовував example.com на 127.0.0.1, тобто цей ПК, а не в Інтернет.
ТАКОЖ: Зверніть увагу, що я дозволив доступ до цього веб-сайту з Інтернету через визначення VHOST, ця зміна стосуватиметься лише цього веб-сайту, а також жодного іншого. Дуже корисно для того, щоб дозволити клієнту переглядати ваші зміни протягом години або близько того, не копіюючи їх на реальний сервер. Це означає, що нам потрібно відредагувати цей файл вручну, щоб увімкнути та вимкнути цей доступ, а не використовувати пункт меню Помістити в Інтернет / Офлайн на wampmanager.
Також я додав деякі модифікації до конфігурації PHP, знову ж таки, що стосуватиметься лише цього одного сайту. Дуже корисно при обслуговуванні веб-сайту з певними вимогами, на відміну від усіх інших веб-сайтів, які ви підтримуєте. Я гадаю, ми можемо припустити з використаних параметрів, що в ньому десь є давно запущена сторінка, і вона написана дуже погано, і вона не працюватиме з помилками, що відображаються у браузері, не роблячи жахливого безладу на цій сторінці. Повірте, такі сайти існують, і люди все ще хочуть, щоб вони погано підтримувались . Але це означає, що нам потрібно змінити ці параметри лише для цього конкретного сайту, а не глобально для всіх віртуальних сайтів, що працюють на WampServer.