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

  • Hmmmm

    Niie rozumiem, dlaczego nie chcesz zainstalowac apache/sql na Windows? Nie smiga jakos rewelacyjnie ale dziala i zawsze wieksza wygoda niz ciagle rebooty / wirtualizacje / kombinowanie iitd?

    Osobiscie mam inne rozwiazanie – wszystko na stacjonarnym z Debianem, a co nie dziala (np. IE 7/8) na laptopie 😉

  • Ja tam osobiście nie rozumiem, po co Ci ten Windows? Jest kilka środowisk programistycznych na Linuksa, a co do OO, to weź sobie zainstaluj nowszą wersję, od 3ki, mocno zoptymalizowali szybkość działania.

    A jeśli już chcesz współdzielić pliki, to przecież możesz mieć partycję NTFS, albo nawet FAT – z tym to na pewno nie będzie problemów.

  • @Hmmmm:

    Eclipse mi wywala się tuż po załadowaniu, Netbeans robi kernel panic. Aptana wywala się podobnie, jak Eclipse. W ogóle java się sypie i nie jestem w stanie znaleźć przyczyny. Z tych opartych na QT nie ma dobrego IDE do PHP. A środowisk opartych o GTK nie tykam, nie moja opcja.

    Przeciwko apachowi nic nie mam, siedzi sobie na windowsie obok IISa. Za to MySQL robi problem, gdy chcę współdzielić jedną bazę pomiędzy dwoma systemami. Przy próbie utworzenia plików na dysku sieciowym zgłasza że nie może znaleźć ścieżki, przy próbie wgrania plików linuksowych też robi problem. Link [2] dotyczy tego tematu.

    Stąd – sql jest na coLinux, a serwer www natywnie pod windowsem.

    Chciałbym móc tak zrobić, ale mój podstawowy komputer to jest laptop i nie mam gdzie postawić tych 3 wersji IE osobno…

    Konfiguracja taka, jak opisałem w notce umożliwia pracę bez ciągłych rebootów.

    @Sigvatr:

    Windows mi po trzy wersje IE, po Visual Studio, po Flasha, po Photoshopa. Czy ostatecznie po javę.

    FAT nie zdaje egzaminu, chociażby nie obsługuje dowiązań symbolicznych.

    Windows jest mi potrzebny do javy, do Visual Studio i innych programów Microsoftu oraz Adobe, na uczelnię, do IE.

  • Rozwiązanie trochę masochistyczne bo eclipse, netbeans, aptana i pewnie niezły procent aplikacji os jest dostępne na windę i maka. Jeżeli na czymś pracuję to nie ma dla mnie znaczenia na jakim systemie działają moje narzędzia. Najważniejsze, że działają na jednym systemie.

  • > Chyba każdy używający Linuksa na codzień ma czasem potrzebę uruchomienia evil Windowsa.

    stopped reading right there

  • "Niestety mój komputer nie wspiera wirtualizacji sprzętowej, a VirtualBox z XP jest strasznie wolny."

    Tu się zdziwiłem, bo jestem ostatnio pod wrażeniem szybkości działania xp na VirtualBoxie 3.0.4 przy procku core duo 1.6 bez wsparcia dla wirtualizacji i 1Gb ram-u. Fakt, że nie odpalam w tym środowisku pożeraczy ramu ale jak by dołożyć jeszcze jednogigową kostkę to chyba przyzwoicie zachowywałyby się nawet taki aplikacje.

  • felek

    "Niestety mój komputer nie wspiera wirtualizacji sprzętowej, a VirtualBox z XP jest strasznie wolny."

    Wirtualizacja w przypadku VirtualBoksa jest zbędna, a w zasadzie nie zalecana nawet przez samych developerów. Na stronie virtualboksa można znaleźć informację że system z włączoną wirtualizacją będzie działał wolniej. Potwierdzają to też testy użytkowników które można znaleźć w sieci.

  • Drugi komputer + KVM, ewentualnie do tego drugi monitor i Synergy. pliki po sshfs (Dokan) albo prostym ftp.

    Lepsze to niż chrzanienie się z dualbootem albo wirtualizacją. Wadą jest brak przenośności (nie mogę zabrać Windowsa razem z laptopem), zaletą jest wszystko inne.

  • "Chyba każdy używający Linuksa na codzień ma czasem potrzebę uruchomienia evil Windowsa." – ale w pracy też się liczy? Bo jeśli nie, to ja się nie kwalifikuję. Dobrze że zacząłeś od "chyba" 🙂

  • D4, moim zdaniem posiadanie *osobnego* kompa do windy to jest zdecydowane przegięcie. Wystarczy 2GB RAM i ikspek pod VirtualBoksem śmiga aż miło, bez żadnych kombinacji, nawet, gdy procek nie wspiera wirtualizacji. Sprawdzone.

  • flegmatyk, a teraz odpal na nim Photoshopa

  • Odpalałem VisualStudio 2008, bo tylko jego potrzebowałem.

  • No to powiem ci tylko, że się nie da. Poza tym ja i tak 95% czasu siedzę na moim Eee PC 😉

  • Możliwe, że nie da rady, zwłaszcza na komputerku pokroju Eee 😛 Aczkolwiek stawianie obok drugiego kompa tylko do tego celu jest moim zdaniem kompletnym przekombinowaniem.

  • On ogólnie robi też czasem za serwer, sprzęt do VMów, storage na pliki i sprzęt do podłączania konsolki do gier (pisałem o tym u siebie). Ale chyba niebezpiecznie schodzimy coraz dalej od tematu wpisu 😉

  • qrd

    XP wolny pod VirtualBoxem ? Dziwne , u mnie zasuwa az iskry lecą … (laptop, Core 2 @ 1.6 ghz i 2 gig ram)

  • mt3o

    @D4rky: Rozwiązanie stosowałem przez kilka miesięcy. Przestałem, bo wygodniej się leży na łóżku z laptopem, niż siedzy przy stole przed dwoma kompami. No i wymaga jeszcze porządnego połączenia tych 2 kompów, bo synergy potrafi rwać.

    @flegmatyk:

    Rację ma D4rky. Odpal Photoshopa, albo lepiej: Photoshop Lightroom. VBox zarżnie procesor. Visual Studio chodzi całkiem przyjemnie, ale NetBeans już przymula przy większych projektach (podczas skanowania katalogu od joomli szczególnie)

    @qrd: core2, to wiele wyjaśnia. Sprzętowe wsparcie dla wirtualizacji. I pytanie, co na nim jeszcze odpalasz – worda, czy lightroom.