Виртуални хостове в XAMPP

За начало малко пояснения. XAMPP е нещо супер удобно за програмисти. С XAMPP на собствения си компютър инсталираш WEB сървър, MYSQL сървър, имаш поддръжката на PHP и още много други неща. Когато писах този сайт, а и все още ползвам XAMPP и тъй като пиша едновременно няколко сайта ми се налага да направя няколко виртуални сайта. Това не са истински домейни с реални IP-та, а просто на локалния компютър. Може би стана прекалено оплитащо затова по време на работата ще се изясни всичко. И така задачата е: 1. Да имитираме два домейна на локалния компютър. 2. Когато се обърнем към домейните през браузър да се отварят два различни сайта. 3. Всички локални настройки да не влияят на свързаността към Интернет.


Дефинираме локални домейни


Искам когато съм на локалния си компютър и избера през браузъра или когато тествам през шела да ми отговарят локални домейни tachko.local и tlan.local. За целта с NotePad като Administrator редактирам файла C:\Windows\System32\drivers\etc\hosts


# Най-отдолу добавям следното 127.0.0.1 tachko.local 127.0.0.1 tlan.local


И сега в терминала ако напишем следното:

ping tachko.local Pinging tachko.local [127.0.0.1] with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Ping statistics for 127.0.0.1: Packets: Sent = 3, Received = 3, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms


По същия начин ще се държи и домейна tlan.local. С това първата задача я изпълнихме.


За втората задача ще се занимаем с XAMPP и по конкретно с частта Apache. За да се дефинират два различни хоста на едно място се ползват така наречените виртуални хостове. Те се описват чрез конфигурационен файл. Пак с NotePad отваряме файла C:\xampp\apache\conf\extra\httpd-vhosts.conf. Тука не е задължително да отворим файла като администратор. Вътре слагаме следното:

# Най-отдолу слагаме: <VirtualHost *:80> ServerAdmin tachko@tachko.com DocumentRoot "D:\Clouds\OneDrive\WWW\tlan.net" ServerName tlan.local ErrorLog "logs/tlan.local-error.log" CustomLog "logs/tlan.local-access.log" common <Directory "D:\Clouds\OneDrive\WWW\tlan.net"> Require all granted </Directory> </VirtualHost> <VirtualHost *:80> ServerAdmin tachko@tachko.com DocumentRoot "D:\Clouds\OneDrive\WWW\tachko.com" ServerName tachko.local ErrorLog "logs/tachko.local-error.log" CustomLog "logs/tachko.local-access.log" common <Directory "D:\Clouds\OneDrive\WWW\tachko.com"> Require all granted </Directory> <</VirtualHost>


Малко пояснение: със ServerName и името на домейна, дефинирахме в две секции два виртуални хоста tlan.local и tachko.local. с DocumentRoot дефинирахме къде ще се разположат файловете на двата виртуални хоста. В случая на файловете които пиша за сайта ще се намират на две различни места в D:\Clouds\OneDrive\WWW\tlan.net за единия сайт и в D:\Clouds\OneDrive\WWW\tachko.com за другия сайт. Съответно в секциите Directory пък указвам какви права ще има Apache върху папките. По-подробно работата на Apache я бях описал в секция Linux > Debian > Debian 9 > Apache


За да влезнат в сила промените трябва Apache да се спре и пусне наново.


По третата точка от задачите, ако не са правени други промени по мрежовите настройки всичко трябва да работи с Интернет без проблеми. С това завършваме тази кратка тематика, но толкова полезна в реалността.