Na serwerze Apache można tworzyć serwery wirtualne. Jest to o tyle przydatna opcja, że pozwala jednym serwerem opędzić kilka witryn. Ogromną zaletą jest możliwość konfigurowania przez numer portu. Oznacza to, że na jednym IP mamy możliwość opędzenia kilku serwisów. Jest to szczególnie przydatna opcja w środowisku małej firmy, w której nie ma środków na zakup dodatkowego serwera na na przykład repozytorium Mavena lub SVNa i trzeba to ruszać na czyimś kompie. W środowisku domowym ma to tą zaletę, że główne repo Mavena mam na jednym kompie, a na innych kompach pobraną tylko część. Można w ten sposób udostępniać też pliki po http w sieci domowej. Dobra tyle teorii czas na szybką praktykę.
Otwieramy plik httpd i na końcu odszukujemy:

Listing 1. Tu jest konfiguracja

#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

Kopiujemy tyle razy ile vhostów chcemy utworzyć. Odszukujemy dyrektywę Listen 80 i kopiujemy ją tyle razy ile chcemy stworzyć serwerów. Następnie ustawiamy numery portów. Warto tu pomyśleć o jakiejś nomenklaturze, u mnie wygląda to tak:

Listing 2. Porty nie mylić z portami

Listen 28080
Listen 28180

Pierwszy to serwer główny, drugi maven. Następnie w części zatytułowanej \### Section 2: 'Main’ server configuration komentujemy:

  • ServerAdmin admin@localhost
  • ServerName *:80
  • DocumentRoot „D:/workspace”
  • <Directory „D:/workspace”>
  • Options Indexes FollowSymLinks
  • AllowOverride None
  • Order allow,deny
  • Allow from all
  • </Directory>

W ten sposób wyłączamy „główny” serwer. I tak docelowo jest przerobienie go na vhost, więc nie robi nam to różnicy. Na zakończenie wracamy na koniec naszego pliku i modyfikujemy nasze vhosty:

Listing 3

NameVirtualHost *:28180
<VirtualHost *:28180>
    ServerAdmin webmaster@localhost
    DocumentRoot D:/maven/repo/
    ServerName localhost:28180
    ErrorLog D:/Apache2/Apache2/logs/error2.log
<Directory "D:/maven/repo/">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:28080>
    ServerAdmin webmaster@localhost
    DocumentRoot D:/workspace/
    ServerName localhost:21080
    ErrorLog D:/Apache2/Apache2/logs/error.log
<Directory "D:/workspace/" >
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

finito. Na localhost:28080 śmiga serwer www, a na localhost:28180 maven.