Apache a VirtualBoxban

Leírom ide magamnak, mert mindig elfelejtem az ilyen dolgokat:

Csináltam egy hasznos kis VirtualBox image-et ( X nélküli, alap telepítésű Debian Lenny) arra a célra, hogy ne a desktop gépemen kelljen Apache-ot futtatnom a honlap fejlesztéshez. Két virtuális Ethernet kártyát állítottam be benne:

  • Az egyik automatikus indítású Host-only interfész statikus IP címmel. Így csak elindítom a virtuális gépet ha kell a szerver, ha pedig már nem kell, akkor leállítom és kész. Csak a host tudja elérni, és a guest is csak a host-ot látja, kellemes dolog. A használathoz be sem kell jelentkezni a guest-be, megy minden magától. A leállításhoz sem kell bejelentkezni, elég egy Host+H.
  • A másik NAT-olt interfész DHCP-vel, de ez manuális indítású, alapból nem megy. Ha a guest-en update-et akarok futtatni, vagy csomagot telepíteni, csak bejelentkezem, ifup eth1, és kilát a netre.

A hoston levő ~/Munka/www/ mappát permanens megosztott mappaként a guest indításkor automatikusan felcsatolja a /var/www/ helyre. Így a fájlokat a host-on közvetlenül, natív sebességgel szerkeszthetem a home könyvtáramban, aztán a böngészőben a http://lenny-web/ címen nem közvetlenül töltöm be, hanem a szerveren keresztül - PHP-hez muszáj. Ha viszont csak statikus weblapokat csinálok, akkor nem is kell a virtuális gép. Amúgy van egy Windows-os virtuális gép is, szintén beállított Host-only interfésszel, így a host gépen levő dinamikus weblapokat a http://lenny-web/ címen a Linux guesten keresztül a Windows-os virtuális gépen is ugyanúgy meg tudom nézni IE7 alól, ha kell. :)

Gondolkodtam rajta, hogy a MySQL adatbázisok könyvtárát is a host gépről adjam-e, de erről letettem, mert annak az adminisztrációjához még annyira sem értek, mint az Apache-hoz, és nem tudom melyik könyvtárakra van szükség az adatok kinyeréséhez esetleges probléma esetén. Talán majd egyszer...

Amiért ez a bejegyzés született: rengeteg hajtépésbe került, míg rájöttem, hogy az Apache konfigban be kell állítani az EnableSendfile Off opciót, különben sokszor nem veszi észre a rendszer hogy a fájl megváltozott, és még fél óra és huszonöt újratöltés után sem a legfrissebb változat jön a szerverről. Akkor sem veszi észre, ha minden cache-t kikapcsolok, és akkor sem, ha a guest-be bejelentkezve újraindítom a szervert. Egyes leírások szerint az EnableMMAP Off opció is kell - nekem e nélkül is megjavult, de utólag azért ezt is beírtam a konfigba.

Hozzászólások

bár nem értem miért jó egy pár gigás image, mint egy 30 megás apache a gépeden;D

Az egyik oka az, hogy így jobban rendben tudom tartani a gépem. Így sem webszervert, sem adatbázis szervert nem kell telepítenem. Bátran bizgerálhatom a beállításokat a guest-ben, ha már teljesen tönkretettem, akkor egy gombnyomással vissza tudom állítani a helyes állapotra. Ugyanígy ha valami csomagot kell összeállítanom, vagy forráskódból telepíthető programot készíteni, akkor is egyszerűbb esetben (pl. Python3) chroot+debootstrap-pal csinálom, bonyolultabb esetben VirtualBox-ban. Némely X-es program fordításához 30-40 library dev változata is kell, amik aztán csak fölöslegesen lennének a gépen.

A másik ok, hogy nem értek sem az Apache, sem a MySQL adminisztrációjához (az még messze nem elég, hogy működőképes állapotba tudom hozni ha kell). Gondolom így te is kétszer meggondolnád, hogy a munkához használt éles gépedre feltedd bármelyiket. :)

Amúgy az image fájl 1.5GiB, és 128MiB memóriát adok neki.

Az etc mappa git verziokezelo ala helyezese csodakra kepes. Egyebkent meg, maximum az apache meg a mysql konfigjait lehet nagyon eltolni, de ezek azert olyan programok, amik nem formazzak le a winyodat vagy eszik meg a macskadat.

En akkor csinalok ilyen merenyleteket, ha tenyleg nagyon sok mindent kell valtoztatni, olyant is, amit nem tudok a host gepen egyszeruen, peldaul total eltero ruby verziot kell felraknom, vagy olyan konfig valtoztatasok kellenek, melyek a host gep mukodeset is befolyasolnak.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Bookmark ;)

Ez okozott már nekem is problémát, csak nem jártam eléggé utána. :)

Ill. a Drupalban hiába kapcsoltam ki mindenféle cache-t, még mindig nem volt tökéletes...

Legközelebb megpróbálom ezt az opciót, köszi.