Dualboot, apache i mysql

Dualboot, apache i mysql

Chyba każdy używający Linuksa na codzień ma czasem potrzebę uruchomienia evil Windowsa. Niektórzy nawet na tym evil Windowsie muszą na codzień pracować. Mój pech polega na tym, że pod Windowsem mam te bardziej zaawansowane programy, z których korzystam podczas pracy, a serwer www pod pingwinem, i pod pingwinem wykonuję większość pracy z samym kodem.

W tej notce chcę pokazać, jak rozwiązać problem z koniecznością posiadania osobno 2 kopii plików roboczych – pod win i lin. Mój opis to raczej luźna koncepcja niż dokładny tutorial. Odradzam stosowanie się do niego osobom niedoświadczonym, bo można przypadkiem uszkodzić sobie ważne dane. Tekst prezentuje ideę, na którą wpadłem podczas kombinowania z dwoma systemami i którą wdrożyłem z sukcesem. Nie oznacza to jednak, że to rozwiązanie sprawdzi się w Twoim przypadku!

Najwygodniejszym dla mnie rozwiązaniem jest emulowanie systemu z Redmond za pomocą wine. Dzięki temu można odpalić MS Office’a (tak, używam tego pod linuksem, zamiast OOo, które jest wolne i niewygodne). Można nawet odpalić FlashDevelop (choć sypie błędami, to da się w tym pisać kod) jak i Flasha (z ósemką pracowałem, ale trial się skończył i poszła w powietrze). O tym, że Photoshop śmiga pod wine, przez szacunek dla czytelników nie wspominam już nawet. :]

Innym sposobem pogodzenia tych 2 systemów jest wirtualizacja. Niestety mój komputer nie wspiera wirtualizacji sprzętowej, a VirtualBox z XP jest strasznie wolny.

Przestawienie się na wolne programy byłoby łatwiejsze, gdyby nie problem mojego Archlinuxa z javą – Netbeans robi kernel panic, a Eclipse znika w kilka chwil po załadowaniu.

Do pisania kodu najczęściej używam prostego kate i mc, jednak czasami potrzebne jest jakieś bardziej rozbudowane środowisko programistyczne. Wszystko fajnie, tylko co zrobić, gdy nasze pliki wiszą sobie na lokalnym apache’u, a dane są w lokalnym mysql’u? Możemy przenieść się na windows, a dostęp do danych zapewnić dzięki wirtualizacji.

W Sieci jest dobry tutorial[1] opisujący jak za pomocą coLinuksa podmontować pod windowsem partycję w ext, reiserfs czy xfs, jednak chcę go uzupełnić o część dotyczącą współdzielenia plików dla serwera www.

Mamy 2,5 możliwości. Pierwsza to zainstalownie potrzebnych programów pod coLinuxem, co każdy szanujący się użytkownik systemu z pingwinem w logo potrafić powinien. Tak więc pozostanie jedynie ustawić odpowiednie adresy plików i katalogów w /etc/my.conf i /etc/httpd/conf/httpd.conf. Podpowiem, że dla mysql’a ścieżka zapisana jest w zmiennej datadir. Miejsce w którym apache szuka plików określone jest w tagu Directory, chociaż do samodzielnego edytowania tego pliku warto zasięgnąć porady dokumentacji. Dzięki temu na naszym coLinuksie mamy Sambę udostępniającą dostęp do właściwych plików dla IDE, serwer www i serwer bazy danych. To rozwiązanie jest łatwe i proste, choć jego wydajność nie powala – odczyt i zapis danych będą odbywać się po sambie, przez co będą wolniejsze niż być powinny, ale coś za coś – pod linuxem zamiast samby spowalniaczem byłby ntfs-3g gdyby pliki trzymać na windowsowej partycji.

Alternatywne rozwiązanie wobec powyższego to trzymanie na windowsie serwera www i bazy danych natywnie, a nie w coLinux. To rozwiązanie też możemy rozbić na 2 warianty, bo obok Apache’a możemy wgrać jeszcze windowsowe IIS.

Przy takim podejściu spędzimy więcej czasu na konfiguracji, bo trzeba odpowiednio ustawić serwer www (dla IISa wymaga to więcej klikania niż dla Apache’a) i mysql’a. O ile konfiguracja serwera www tak, aby za DocumentRoot uznawał podpięty dysk sieciowy nie jest trudna, to odpowiednie skonfigurowanie MySQLa, by korzystał z linuksowych plików danych jest trudne. Mnie się to nie udało. Wujek Google podpowiada że teoretycznie jest to możliwe, jednak nie znalazłem opisu, jak to zrobić. Znalazłem za to potwierdzenie, że tego się zrobić nie da[2].

Jak więc sobie z tym poradzić? Odważni powinni kombinować dalej, ja natomiast bazę danych powierzę coLinuksowi i pod Linuxem w /etc/hosts ustawię dla nazwy mt3ocoLinux, takiej jak hostname mojego coLinuxa – 127.0.0.1 dzięki czemu wywołania spod Windows trafią do coLinuxa, a spod Archlinuxa – do lokalnego MySQLa. Wiem, trochę to pogmatwane 🙂

Tak więc, krótko podsumowując:
Na Windows:

  • Apache i/lub IIS
  • Środowisko Programistyczne
  • IE6/7/8 ?
  • Flash? Photoshop? Co komu potrzeba?
  • coLinux

Mamy zainstalowanego coLinuxa, który:

  • Samba dająca dostęp do danych spod Windows
  • natywny MySQL korzystający z bazy z Linuxa

Pod Linuxem:

  • natywny Apache
  • natywny MySQL
  • IDE, kupa przeglądarek itp

Dzięki temu możemy pracować z tymi samymi plikami spod zarówno windowsa jak i linuxa, ograniczając bloat maszyn wirtualnych.

W wersji bardziej rozbudowanej, jako wisienkę na torcie dla programistów PHPowych można dorzucić Zend Server do obu tych konfiguracji. Nie jest to głupie rozwiąznie, zwłaszcza że Zend Server CE jest dostępny bezpłatnie, przy wsparciu przez community.

Ps. To jest moja pierwsza notka, więc proszę o wyrozumiałość 🙂

Linki: [1] Jak uzyskać dostęp do partycji xfs/reiserfs/ext pod windowsem dzięki colinux
http://jakilinux.org/aplikacje/konsola/ext3-reiserfs-i-xfs-w-windows-dzieki-colinux/ http://polishlinux.org/linux/ext3-reiserfs-xfs-in-windows-thanks-to-colinux/

[2] Dyskusja na forum MySQLa dotycząca utrzymywnia jednej kopii plików dla 2 wersji MySQLa, jednej linuksowej i jednej windowsowej
http://forums.mysql.com/read.php?11,239124,239124#msg-239124