Şu anda geliştirme ortamım VMWare ile Ubuntu v12.04. Tamamen VM içinde çalışıyorum, tam GUI ile çalışıyorum ve yalnızca Windows 7 olan işletim sistemimdeki dosyalarıma erişmem gerekiyorsa Ubuntu içindeki samba dosya paylaşımını kullanıyorum. VM'ye ağ oluşturmak için NAT üzerinden VM. Diğer çözümleri kullanmanın VMWare'in Paylaşılan Klasörleri gibi daha yavaş olduğu ortaya çıktı. VMWare Image ayarlarımda bunu devre dışı bıraktım. Bununla birlikte, ana makineme kolay kopya / makarna yapabilmek için VMWare araçları kullanıyorum.
Matthias Zeis'in belirttiği gibi, VM’nizle ağ / paylaşılan klasörler seçiminizi yaparken bazılarının problemli olacağına dikkat edin.
Daha önce VirtualBox kullanıcısıydım ancak VMWare'in daha kararlı olduğunu ve kabul edilebilir şekilde performans gösterdiğini tespit ettim (en azından benim için). Bununla birlikte, ihtiyaçlarınızı ve gereksinimlerinizi en iyi şekilde karşılamak için kendi testlerinizi yapardım. Vagrant VirtualBox kullanır.
IDE:
Netbeans'ı tercih ettiğim IDE olarak oldukça kapsamlı kullanıyordum ama o zamandan beri Sublime Text 2 olarak daha hafif bir çözüme ulaştım . NetBeans'ı çoğunlukla X-Debug amaçları ve daha kolay Refactoring için açacağım. Netbeans, PHPStorm, Eclipse, vb. Hepsi Java tabanlı IDE'lerdir ve kaynak açısından çok aç olabilirler.
DONANIM:
Daha fazla eklemek için, Donanım her zaman performansta kilit rol oynayacaktır (açıkçası). Geliştiricileriniz hala plakalı HDD kullanıyorsa, onlar için SSD'ye yatırım yapmak isterim. Magento çok büyük miktarda dosya / klasör içerdiğinden, geliştiricilerin performansını büyük ölçüde hızlandıracak. Geliştirme sırasında: Tüm önbellekleme kapalıyken ve SVN / GIT içindeki klasör ağacını veya IDE'nizi gezinirken. VM'nize yeterli RAM verilmesi de aynı derecede önemlidir.
Ana Makine: Samsung SSD 512GB Sürücü alanı, Win7 (64bit), 8GB RAM, i7 2.4GHz (8 çekirdekli)
VM Makinem: Samsung SSD, 30GB Sürücü alanı, Ubuntu 12.04 (32bit), 3GB RAM, i7 (4 çekirdekli).
SORULAN SORULAR:
En büyük soru, birden fazla projede hafif ve yeniden kullanılabilir bir Geliştirici VM Görüntüsü oluşturmak veya proje başına bir Görüntü oluşturmaktır. Daha önce proje bazında daha küçük VM'ler yapmaya çalışıyordum, ancak geliştirme iş akışımla devam etmek için sürekli olarak yeniden yapılandırma çok fazla bir iş haline geldi ve şimdi daha büyük bir VM kullanın ve her projeyi mümkün olduğu kadar izole tutmak için elimden gelenin en iyisini yapmaya çalıştım.
İşletim sistemi, IDE, LAMP Yığını, güncellemeler / konfigürasyonlar vb. Bakımı, proje başına birden fazla VM seçilen rota ise, bir angarya olabilir. Sonuçta daha uzun geliştirme süresi (ve yerel çevre kurulumları için faturalandırılması daha da kötü bir zaman).
Bu, yeni bir VM açıp Host donanımımı daha fazla dilimlemeye gerek kalmadan diğer proje dosyalarına hızlı bir şekilde erişebildiğim için de faydalı oldu. Dezavantajı ise ideal olarak, her bir projenin çevre ile ilgili öngörülemeyen sorunları önlemek için diğer projelerden susturulmasını istememdir (ör. Php.ini, my.cnf, httpd.conf, vs.). Şimdiye kadar, tüm projelere kolayca ulaşılabilir olma tradeoff'ı daha becerikli olduğunu kanıtladı.
Yine bu sizin gereksinimlerinize ve gereksinimlerinize kalmış, bu yüzden elden önce onları değerlendirin.
GERİ BİLDİRİM:
Bu geri bildirime yol açar. Geliştiricilerinizden mümkün olduğunca fazla girdi alın. Nihayetinde ihtiyaçlarının karşılanması ve uygun bir çözüm kurulup uygulamaya konmadan önce sorunlarının anlaşılması gerekir. Herkesin farklı iş akışları vardır ve herkes işletim sistemi içerisinde rahat bir şekilde çalışmayı tercih etmez. Temel kural, geliştiricinin işletim sistemlerini ve IDE'yi seçmelerine izin vermeleridir. Bu nedenle, hafif bir başsız linux VM bile onların ihtiyaçlarına faydalı olabilir, ancak klasörlerin Host ve VM arasında yerel ağda paylaşılması sorununu da ortaya çıkarabilir.
PORTABİLİTE:
VM Image'ımı Dropbox gibi bir şey üzerinde tutma fikrimi de kullanarak, ihtiyaç duyduğumda kolayca erişebiliyorum. Dropbox gibi hizmetler, depolananın bit biti ile karşılaştırıldığından, yalnızca değiştirdiğim bitlerin senkronize edileceği mantıklı görünüyordu. Bununla birlikte, bu, Görüntü dosyasının nasıl kaydedildiğinin içindekilerle yapılması gerektiğine inandığım ve bunun sadece VM'imin senkronize etmesi için bütün gün / gece bekleyeceğimi düşündüğüm gibi olmadığını kanıtladı.
NOTLAR:
Sanal Makineye tahsis edilen sürücü alanı büyüdükçe, Görüntü büyüyecek, Görüntüyü geliştiricilere dağıtırken bunu aklınızda bulundurun. Proje dosyalarınızı her proje için önceden yüklemek aşırı derecede olabilir ve bunu oluşturulan görüntüyü oluşturduktan sonra ayarlamak üzere her geliştiriciye bırakıyorum.
Ashley Schroder, Fooman ve Colin tarafından yapılan yorumların yanı sıra, iyi bir okuma olan eski bir makaleye sahiptir.
Umarım bu, listelenen sorun öğesine, # 6 ilişkin içgörü konusunda yardımcı olur.