Magento / Besteci / Dağıtımı Yönetme


18

Yani, hackathon Magento Composer yükleyicisini kullanmaktan zevk alıyorum, ancak başkalarının bir dağıtım hizmetiyle ilgili olarak nasıl kullandığını anlamak için uğraşıyorum. Şu anda DeployHQ kullanıyorum ve evet, repo için bir güncelleme olduğunda besteciyi dağıtmak ve çalıştırmak için ayarlayabilirim, ancak bu benim için anlamlı değil.

Yapımımın içine eklemek istediğim tüm paketlerin sadece json dosyasını içeren ana besteci depom, yalnızca listeye yeni bir paket eklediğimde güncellenir.

Temamı veya özel uzantıyı (json dosyasında belirtilen) güncellediğimde, dağıtım hizmetimi güncellemek için "kanca" yok. Bu yüzden sunucumda oturum açmam ve besteciyi manuel olarak çalıştırmam gerekiyor.

Peki diğerleri bunu nasıl yönetiyor? Besteciyi yalnızca yerel olarak çalıştırmalı ve satıcı klasörünü repoma dahil etmeli miyim?

Herhangi bir cevap büyük mutluluk duyacağız.


4
Bu soruyu konu dışı olarak kapatmak için oy veriyorum çünkü Composer ile ilgili.
mbalparda

1
Merhaba, özellikle, Magento'nun besteci ile kullanılması ve daha özel olarak Magento hackathon işlevselliği ile ilgilidir. Sanırım bu üzüntüye biraz erken gelmişsin!
JamesAllwood

Açıklamak gerçekten karmaşık, ama deneyeceğim: Bu sorunun Magento ile ilgili olmadığını düşündüğünüzden ve böyle olduğunu düşündüğünüzde, Kapalı konu olarak işaretledim. Eğer bir moderatör veya diğer 4 üye kapatılması gerektiğine karar verirse olacaktır. Değilse, açık kalacaktır. Soruyu konu dışı olarak işaretlediğinizde mesaj otomatiktir. Ve kesinlikle konu dışı çünkü ana konu besteci, Magento'ya bağlı, ancak başka bir yazılım kurulumuna uygulanabilir ve bence Magento SE'de değil, sunucular / dağıtımlarla ilgili bir siteye ait olabilir.
mbalparda

1
Çocuklar, bu soru 2 oy aldı ve bir favori. Elbette birisinin bu soruyu cevaplamasına izin vermek hiçbir zarar veremez mi? Bu Magento toplumda başkalarının YARDIMCI OLACAK
JamesAllwood

@JamesAllwood Bununla nasıl gittin?
jharrison.au

Yanıtlar:


13

Ajansımızda, tüm Magento sitelerimizi dağıtmak için Composer'ı kullanmamıza izin veren bir yapı kurdum. Bu, sorduğunuz soru için biraz abartılı olabilir, ancak yine de yapıya temel bir bakış:

Havuz yapısı

Aşağıda, 'üst' havuzun klasör yapısı verilmiştir. Besteci JSON ve kilit dosyalarını ve dağıtım için gerekli diğer yapılandırmayı içerir.

- code
   - magento
- deployment
- environmental
   - local
       - local.xml
       - robots.txt
   - staging
       - local.xml
       - robots.txt
   - production
       - local.xml
       - robots.txt
- provisioning
- public
   - index.php
- vendor
- composer.json
- composer.lock
  • İstemciye özgü tüm özelleştirmeler, Composer kullanılarak yüklenen ayrı bir "özelleştirmeler" modülünde depolanır
  • Magento çekirdeği Git alt modülü ( code/magento) olarak dahil edilmiştir
  • Özel index.phpve medya ve hatalar gibi diğer klasörler, Magento kökünün dışındaki ortak bir klasörün içinde bulunur
  • Ortama özgü dosyalar (local.xml, robots.txt, vb.) Dağıtım işlemi sırasında Magento kök dizinine bağlanır
  • Vendor klasörü Git dışında tutulur, ancak composer.lock dosyası eklenir.

yayılma

  • Birden çok uygulama sunucusuna ve ortamına (hazırlama / üretim) izin veren Capsitrano kullanarak konuşlandırıyoruz
  • Capistrano, kod tabanının tamamını sunucuda yeni bir klasörde oluşturur ve webroot symlink'ini en sonunda değiştirir, yani web siteniz için kesinti olmaz.
  • Capistrano composer install, yapım sırasında çalışır ve tüm modülleri Magento alt modülüne dağıtır.

Bu hala sürekli bir entegrasyon kurulumu değil ama Magento siteleri için iyi çalışıyor. Kurulumunuza özgü daha fazla öneri almak isterseniz bana mesaj göndermekten çekinmeyin.


1
bu ve eski cevap, ama umarım cevap verebilirsin. 1 Üretim local.xml dosyasının depolanması bir güvenlik sorunu değil mi? 2 Veritabanını hangi aşamada ve nasıl içe aktarıyorsunuz?
MployBy

5

Başka bir yöntem, composer.json dosyanızda şöyle görünen magento hackathons kopya dağıtım stratejisini kullanmaktır:

"extra": {
    "magento-root-dir": "./",
    "magento-deploystrategy": "copy",
    "magento-force": true
}

Yukarıdaki yöntemi kullanarak, yüklü dosyaları satıcıdan asıl yüklemeye kopyalar, Git'te taahhüt edilmesine ve herhangi bir besteci yüklemesine gerek kalmadan normal şekilde dağıtılmasına izin verir.

Canlı bir dağıtım yapmak üzereyken üçüncü taraf depolardan çekmenin büyük bir hayranı değilim ve ağınız için bir tür proxy önbelleğiniz yoksa üçüncü taraf depolara bağımlı olmak biraz riskli .

Bu makaleyi okuyun ve size farklı bir bakış açısı kazandıracak: http://www.letscodejavascript.com/v3/blog/2014/03/the_npm_debacle

Temel olarak, NPM düştü (bir çeşit ..) ve herkesin inşa sistemleri (kritik dağıtımlar için!) Çalışmayı bıraktı çünkü doğrudan NPM'ye bağlıydılar. (NPM aslında Javascript için Packagist gibidir, ancak NPM aslında dosyayı barındırır ve Packagist sadece modüllerin Github depolarını işaret eder - yanlışsam beni düzelt)

edit: sadece kırmızı fschmengler yanıt .. Bu onun 1 yaklaşım bir ayrıntı


4

Composer'ın bir dağıtım aracı değil, bir geliştirme aracı olduğunu anlamak önemlidir.

Tüm bağımlılıklarla bir dağıtımın nasıl hazırlanacağı farklı yaklaşımlar vardır:

  • tedarikçi dizinini (veya bestecinin kaynakları yüklediği her yerde) proje havuzuna gönderme
  • composer installfarklı hedef sistemlere tekrarlanabilir bir şekilde dağıtabileceğiniz ve sonuçla birlikte bir arşiv oluşturan bir derleme sunucusu kullanın
    • composer installsunucuda çalışıyor ve @ jharrison.au tarafından önerildiği gibi sembolik bağlantıları değiştiriyor.

Kenara Yani, ben her modül için besteci kullanarak tavsiye ve sadece tutmuyorum composer.jsonvecomposer.lock proje depoda. Bu aşırıya kaçıyor ve gelişmeyi gereksiz yere karmaşık hale getiriyor. Birkaç projede yeniden kullanılan kod için mükemmel bir mantıklıdır, ancak projeye özel kodu neden ayrı depolara koydunuz?

Mevcut proje yapım şöyle görünüyor ( AOE'nin alternatif besteci kurucularını kullanarak ):

  • srcprojeye özgü tüm modülleri içerir. Composer, buraya diğer tüm Magento modüllerini de kurar
  • .modmanbağlantıların srco ModMan kolayca sembolik bağlantılarını işleyebilir böylece
  • wwwwebroot. Besteci Magento çekirdeğini buraya kurar

Bu şekilde depoya harici modüller ekliyorum. Bunu yapmamayı tercih ederseniz, şu şekilde ayarlayın:

  • srcprojeye özgü tüm modülleri içerir. .modmanModman simgeleri oluşturacak şekilde bunları dahil etmek için şunu kullanın:modman link
  • .modmaniçinde .gitignore. Besteci Magento modüllerini buraya kurar
  • wwwwebroot. Besteci Magento çekirdeğini buraya kurar
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.