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

В случаите, когато искаме да хостваме повече от един сайт на една физическа машина, е необходимо да използваме възможността Virtual host на Apache сървъра. Виртуалното хостване може да се осъществи като:
  • IP-базирано хостване- в този случай отделните сайтове имат различни IP адреси.
  • Виртуално хостване в зависимост от името на сайта (Име-базирано хостване)- в този случай сайтове с различни имена могат да ползват един и същ IP адрес.
Име-базираното хостване е по-лесно за осъществяване. За да разрешим виртуалното хостване, е необходимо да направим промени в конфигурационния файл httpd.conf на Apache сървъра (http://httpd.apache.org).
Работя с XAMPP версия 1.8.3-5 за операционна система Линукс. Конфигурационните файлове на XAMPP се намират в директория opt/lampp/etc.
Директорията /opt на Линукс съхранява допълнителния софтуер, инсталиран в системата, но не през package manager (в този случай това е XAMPP).
В директорията /lampp е инсталиран XAMPP (наименованието lampp идва от Linux- Apache- MySQL- PHP- Perl).
Директория /etc на XAMPP съдържа глобалните конфигурационни файлове, които оказват влияние върху работата на XAMPP за всички потребители.

Разрешаване на виртуалното хостване


За да отворим конфигурационния файл httpd.conf с текстов редактор (аз работя с Geany), в терминала въвеждаме:

sudo geany /opt/lampp/etc/httpd.conf

virtual-host-1.png

Разрешаваме виртуалното хостване като премахваме коментара пред:

Include etc/extra/httpd-vhosts.conf


Съхраняваме промените.

Създаване на домейн


Създаваме директория my.localhost в /opt/lampp/htdocs.
Преработваме хост файла на Линукс, който се намира в директорията /etc/hosts. В hosts файла се осъществява асоциирането на IP адрес с име на хоста. В терминала въвеждаме:

sudo geany /etc/hosts


Въвеждаме:

127.0.0.5   my.localhost


IP адреси от 127.0.0.0 до 127.255.255.255 са предназначени за loopback тестване. Съхраняваме файла.

Създаване на виртуален хост


В терминала въвеждаме:

sudo geany /opt/lampp/etc/extra/httpd-vhosts.conf


Във файла httpd-vhosts.conf е посочен адрес, на който можете да прочетете повече за конфигурирането на виртуален хост.
В края на файла добавяме следните редове:

<VirtualHost *:80>
     ServerAdmin webmaster@my.localhost
     DocumentRoot "/opt/lampp/htdocs/my.localhost"
     ServerName my.localhost
     ServerAlias www.my.localhost
     ErrorLog "logs/my.localhost-error_log"
     CustomLog "logs/my.localhost-access_log" common
     </VirtualHost>

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


Рестартираме сървъра:

sudo /opt/lampp/lampp restart


Създаваме текстов файл test.php:
<?php
echo "My history? <br>";
echo "Maybe it`s not interesting for you.";
?>

Съхраняваме в /opt/lampp/htdocs/my.localhost. Резултатът в браузъра ще е:

virtual-host-2.png virtual-host-3.png

Директивите <VirtualHost> и Listen


По подразбиране Apache HTTP сървърът слуша на порт 80. Ако желанието ни е да променим порта и адреса на който слуша за определен хост, е необходимо да направим промени в директивите <VirtualHost> (преработвате конфигурационния файл httpd-vhosts.conf) и Listen (преработвате конфигурационния файл httpd.conf).
Директивата Listen казва на сървъра да приеме входящите молби единствено от специфичен/и порт/ове или комбинация от адрес-порт. Ако в тази директива е определен само един порт (както е по подразбиране- порт 80), тогава сървърът слуша на този порт за всички интерфейси. Ако са вписани комбинация от IP адрес и номер на порт, сървърът ще слуша на този порт за посочения интерфейс.
Аз искам сървърът да слуша на порт 8000 за IP адрес 127.0.0.5 (поне него мога да заставя да прави каквото аз искам :)). В терминала въвеждаме:

sudo geany /opt/lampp/etc/httpd.conf

Добавяме:

Listen 127.0.0.5:8000 https

Съхраняваме промените. В терминала въвеждаме:

sudo geany /opt/lampp/etc/extra/httpd-vhosts.conf

Добавяме IP адреса на хоста и номера на порта.

<VirtualHost 127.0.0.5:8000>
     ServerAdmin webmaster@my.localhost
     DocumentRoot "/opt/lampp/htdocs/my.localhost"
     ServerName my.localhost
     ServerAlias www.my.localhost
     ErrorLog "logs/my.localhost-error_log"
     CustomLog "logs/my.localhost-access_log" common
     </VirtualHost>

Съхраняваме файла. В терминала въвеждаме:

sudo geany /etc/hosts

Добавяме:

127.0.0.5:8000 my.localhost

Съхраняваме файла. Рестартираме сървъра, за да влязат в сила промените. Крайният резултат в браузъра:

ip-port.png

За да проверите конфигурацията на виртуалния хост, в терминала въвеждате:

/opt/lampp/bin/httpd -S

Правите промени, ако е необходимо.
sign.png

Няма коментари:

Публикуване на коментар