Magento Geliştirme Kurulumu


23

Bu soru, kalkınma ortamının kurulmasına yöneliktir. Bazı özel gereksinimlerim var:

  1. Çözümümü Linux, Windows ve Mac OS altında kullanabilmek istiyorum, çünkü ekibimizin insanları bu işletim sistemlerini kullanıyor (örneğin, ön uç geliştiriciler Windows / Mac kullanıyor, arka uç geliştiriciler çoğunlukla Linux kullanıyor)
  2. Modman kullanmam gerekiyor
  3. Besteci kullanmam gerekiyor
  4. Github'ı ve özel Git depolarımı kullanmam gerekiyor
  5. Netbeans veya PHP Storm gibi uygun bir IDE'ye ihtiyacım var
  6. Çok iyi performans istiyorum

Geçerli kurulumum, Virtualbox içindeki sanallaştırılmış bir Ubuntu görüntüsüdür. Her üç işletim sistemi Virtualbox'ı çalıştırabilir, bu nedenle 1) - 5) noktalarının tümü tatmin edicidir.

Ancak şu anda 6 ile tamamen memnun değilim. Bu özellikle çözümü Ubuntu 12.04 içinden çalıştırırken geçerlidir. Virtualbox, Windows 7 altında çok daha kararlı ve duyarlı görünüyor. Ancak, ekibimizdeki birçok kişi Linux kullanıyor, bu yüzden çözümü geliştirmek istiyorum.

VMWare'de veya belki docker.io'da karşılaştırılabilir bir kurulumu olan var mı ve daha istikrarlı çalışıp çalışmadığını bildirebilir mi? Veya başka karşılaştırılabilir çözümleri / fikirleri olan var mı?


güzel soru! biz de benzer bir kurulum üzerinde çalışıyoruz ancak henüz normal iş akışımıza koymadık. cevapları bekliyorum.
Anna Völkl

sadece hızlı bir fikir: VM'de VM olmadan çalışmak ve VM'de çalışan her şeyi doğrudan kurmak mümkün olmaz mıydı? veya bir proje için bir VM kullanıyor musunuz?
Anna Völkl

VM'yi başsız mı yoksa bir GUI ile mi kullanıyorsunuz? Peki VM Image dosya sistemini ana bilgisayar sistemi ile nasıl senkronize ediyorsunuz? Paylaşılan Klasörler? Samba? (IDE'nin VM'de değil ana bilgisayarda çalıştığını farz ediyorum). Bu büyük bir fark yaratabilir.
Vinai

@ AnnaVölkl evet, mümkün olurdu, ancak bazı avantajları imha edecekti. Örneğin, temel görüntüyü her güncellediğinizde, tüm Linux kullanıcılarının değişiklikleri manuel olarak güncellemeleri gerekecektir. Ayrıca, kutunuzu bir bilgisayardan diğerine götürmek istiyorsanız (örneğin, evde veya başka yerlerde çalışın), işler çok daha zordur.
mpaepper,

1
Anna'nın dediği gibi: Biz de böyle bir şeyle çalışıyoruz. VM görüntülerini oluşturmak için Vagrant kullanıyoruz ve bu oldukça iyi çalışıyor. Dediğiniz gibi, performans (paylaşılan klasörlerdeki dosya G / Ç'nin hızı ile ilgili olarak) geçiş yapmadan önce üzerinde çalışmamız gereken en önemli şey. Linux ana bilgisayar sistemleri için NFS paylaşımları yardımcı olabilir. En büyük sorunumuz, geliştiricilerimizin çoğunun Windows ana bilgisayar sistemlerini kullanmasıdır ve bağlantının tersine Windows performansı hiç de iyi değildir. Bunu şimdi farklı insanlardan duydum, sadece biz değiliz.
Matthias Zeis

Yanıtlar:


8

Php üzerinde serseri, git ve bazı derlemeler kullanırım. Serseri makine veritabanı ve web sunucusu çalıştırmak, git uzantılarımdaki değişiklikleri izlemek için yerel olarak kullanılan ve /var/wwwserseri makinemde dizini güncellemek için kullanılan komut dosyasını (aslında bir ortam oluşturmam gereken her yerde kullandı) oluşturdu.

Phing

Muhtemelen en ilginç kısmı benim için modman + besteci gibi çalışan phing. Derleme, kurulum ve yükleme dahil olmak üzere tanımlanmış az sayıda hedefi vardır.

İnşa dahili web sunucusu hedef indir (build config belirtilen) magento belli sürümü ve yapı bir dizine açın. Sonra dosyalar için izinleri ayarlayan diğer hedefleri çalıştırın ve önbelleği temizleyin. Sonra kaynak dizindeki tüm dosyalara sembolik bağlantılar oluşturur. Sonuç olarak, tüm dosyaları derleme dizinimde kullanıma hazır hale getiriyorum. Magento çekirdek dosyaları zaten inşa dizininde ise indirmeyi atlar ve sadece sembolik linkleri güncellerler, ben de bu siteyi her zaman sembolik linkleri güncellemem gereken ortamı yeniden inşa etmek için kullanırım. Serseri bir makine için kaynak dizin /vagrant/src(paylaşımlı klasör) içinde ve inşa dizinidir /var/www.

Yüklemek belli magento sürümü için hedef indirme ve ithalat veritabanı dökümü. Ardından kurulum hedefini çalıştırın.

Kurulum hedefi sadece tüm ayarlarla bir local.xml dosyası oluşturun.

Şirketimde birim testi ve CI araçlarını kullanıyoruz, bu nedenle magento ortamı oluşturmak için bu yolla uzantılarımızı farklı magento sürümlerinde test etmemize ve kurmadan ve kurmadan çalıştırmamıza izin veriyor.

Serseri makinede yapı erişimini basitleştiren bir "kısayol" oluşturdum. Mesela projeyi yeniden inşa etmek için sadece vagrant ssh -c magebuildyazmaya ihtiyacım var ve bu otomatik olarak /vagrantdizinde phing çalıştırıyor .

Sonra bu komutu PHPStorm IDE'mdeki bazı tuş kombinasyonlarına atadım ve şimdi IDE'mde Alt + B tuşlarına basarak projeyi yeniden oluşturabilirim. Ama sembolik bağlantılar kullandığımdan beri bu gerçekten çok sık değil.

serseri

Serseri için bir kutu, Ubuntu 12.04 ile kendi kutumda var, aslında tüm yazılımlar önceden yüklenmiş + kısayol ve bazı yapılandırmalarla birlikte standart olarak kesin 12.04. Serseri dosyaya sadece port yönlendirme ayarlarını, xDebug kullanabilmek için özel ağ ve hükümlere kısayol oluşturmak için koydum.

GYTE

Git build.xmlphing ve sadece uzantılarımı takip ediyorum Vagrantfile. Böylece bir çevre oluşturmak isteyen herkes depoyu klonlayabilir ve sersem yukarı koşabilir. Sonra VM'i çalışmaya hazır hale getirecek. Bütün bu işlem 1-2 dakika sürer. Yerel olarak proje oluşturmak istiyorsanız (VM kullanmadan) çalıştırabilirsiniz phing build install.


2

Ş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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.