Obecnie moim środowiskiem programistycznym jest Ubuntu v12.04 z VMWare. Pracuję całkowicie na maszynie wirtualnej, z pełnym GUI i używam udostępniania plików samby w systemie Ubuntu tylko wtedy, gdy muszę dostać się do plików z mojego systemu operacyjnego hosta, którym jest Windows 7. Zwykle uzyskuję dostęp do dysku sieciowego i mapuję go za pomocą wewnętrznego adresu IP VM przez NAT do połączenia z maszyną wirtualną. Korzystanie z innych rozwiązań okazało się znacznie wolniejsze, jak na przykład foldery współdzielone VMWare. Mam to wyłączone w ustawieniach obrazu VMWare. Jednak instaluję narzędzia VMWare, aby umożliwić łatwe kopiowanie / makaron na maszynie hosta i odwrotnie.
Jak zauważył Matthias Zeis, zachowaj ostrożność przy wyborze folderów sieciowych / współdzielonych z maszyną wirtualną, ponieważ niektóre okażą się problematyczne.
Byłem poprzednim użytkownikiem VirtualBox, ale stwierdziłem, że VMWare jest bardziej stabilny i działa akceptowalnie (przynajmniej dla mnie). Wykonałbym jednak własne testy, aby jak najlepiej dostosować się do twoich potrzeb i wymagań, tj. Vagrant używa VirtualBox.
IDE:
Używałem Netbeans dość szeroko jako mojego IDE, ale od tego czasu przeszedłem do bardziej lekkiego rozwiązania, jak Sublime Text 2 . Rzadko otwieram Netbeans jako głównie do celów X-Debugowania i łatwiejszego refaktoryzacji. Netbeans, PHPStorm, Eclipse itp. To IDE oparte na Javie i mogą być bardzo wymagające zasobów.
SPRZĘT:
Aby dodać więcej, sprzęt zawsze będzie odgrywał kluczową rolę w wydajności (oczywiście). Jeśli Twoi programiści nadal korzystają z dysku twardego HDD, chciałbym zainwestować w SSD. Ponieważ Magento ma bardzo dużą liczbę plików / folderów, znacznie przyspieszy to wydajność programistów. Podczas opracowywania: Przy wyłączonym buforowaniu i Podczas przeglądania drzewa folderów w SVN / GIT lub w twoim IDE. Równie ważne jest zapewnienie maszynie wirtualnej wystarczającej ilości pamięci RAM.
My Host Machine: Samsung SSD 512 GB miejsca na dysku, Win7 (64-bitowy), 8 GB pamięci RAM, i7 2,4 GHz (8 rdzeni)
My VM Machine: Samsung SSD, 30 GB miejsca na dysku, Ubuntu 12.04 (32-bitowy), 3 GB pamięci RAM, i7 (przydzielone 4 rdzenie).
PYTANIA DO ZADANIA:
Największe pytanie dotyczy utworzenia jednego obrazu VM dla deweloperów, który jest lekki i wielokrotnego użytku w wielu projektach, lub stworzenia obrazu dla każdego projektu. Wcześniej próbowałem tworzyć mniejsze maszyny wirtualne dla poszczególnych projektów, jednak ciągła rekonfiguracja, aby dostosować się do moich prac, stała się zbyt uciążliwa. Teraz używam jednej większej maszyny wirtualnej i staram się, aby każdy projekt był jak najbardziej odizolowany.
Utrzymanie OS, IDE, stosu LAMP, aktualizacji / konfiguracji itp. Może stać się obowiązkiem, jeśli wybraną trasą jest wiele maszyn wirtualnych na projekt. Ostatecznie prowadzi to do dłuższego czasu programowania (a nawet gorszego, nieobliczalnego czasu dla konfiguracji środowiska lokalnego).
Okazało się to również pomocne, ponieważ mogłem szybko uzyskać dostęp do innych plików projektu bez konieczności otwierania nowej maszyny wirtualnej i jeszcze bardziej kroić sprzęt Hosta. Minusem jest to, że chciałbym, aby każdy projekt został wyciszony przed innymi projektami, aby zapobiec nieprzewidzianym problemom ze środowiskiem (np. Php.ini, my.cnf, httpd.conf itp.). Jak dotąd kompromis polegający na tym, że wszystkie projekty były łatwo dostępne, okazał się bardziej zaradny.
Znowu zależy to od twoich wymagań i potrzeb, więc sprawdź je wcześniej.
INFORMACJE ZWROTNE:
co prowadzi do opinii. Uzyskaj jak najwięcej informacji od programistów. Ostatecznie ich wymagania muszą zostać spełnione, a ich problemy zrozumiane, zanim możliwe będzie ustalenie i wdrożenie właściwego rozwiązania. Każdy ma inny obieg pracy i nie wszyscy czują się komfortowo pracując w systemie operacyjnym, który wybraliście na rozwój. Moją ogólną zasadą jest, aby deweloper wybrał system operacyjny i IDE, w których są najwygodniejsi i będą działać najlepiej. Tak więc nawet lekka wirtualna maszyna bez linuksa może okazać się przydatna dla ich potrzeb, ale oczywiście może wystąpić problem z udostępnianiem folderów w sieci lokalnej między hostem a maszyną wirtualną.
PRZENOŚNOŚĆ:
Zastanawiałem się również nad tym, aby zachować mój obraz VM na czymś takim jak Dropbox, aby móc łatwo uzyskać do niego dostęp w dowolnym momencie. Ponieważ usługi takie jak Dropbox porównują krok po kroku to, co jest przechowywane, logiczne wydaje się, że synchronizowane będą tylko te bity, które zmieniłem. Jednak okazało się, że tak nie jest, ponieważ uważam, że ma to związek z wewnętrznym sposobem zapisywania pliku obrazu i czekałbym cały dzień / noc tylko na synchronizację mojej maszyny wirtualnej.
UWAGI:
Im większe miejsce na dysku przydzielone maszynie wirtualnej, tym większy będzie obraz, należy o tym pamiętać przy dystrybucji obrazu do programistów. Ładowanie plików projektu z przodu na projekt może być przesadą i pozostawiłbym to każdemu programistowi, aby skonfigurował po utworzeniu obrazu.
Ashley Schroder ma nieco stary pokrewny artykuł, który jest dobrą lekturą, a także niektóre komentarze Foomana i Colina
Mam nadzieję, że to pomoże wglądu w problem z listą # 6.