GIT ve dağıtım stratejisi Magento2 projeleri


92

Magento 1 ile GIT deposuna giren, komutları çalıştıran modman deploy-allve vardizinin yazılabilir olduğundan emin olan bir dağıtım aracı kullandım . Çünkü .gitignoreben bunu iyi işe yarayan bir tane kullandım .

Peki ya Magento 2 ?

En iyi gitignore hangi işe yarar, projenizi nasıl dağıtırsınız ve konuşlandırmadan önce ve sonra hangi komutu çalıştırmanız gerekir? Topluluktan bazı görüşler duymak için sabırsızlanıyorum.

Soru bir süre açık kalacak


İyi bir soru @sander Mangel
Amit Bera

1
Tanım gereği buna kanonik bir cevap verilemez, bu nedenle büyük olasılıkla çok geniş ve sitenin soru-cevap niteliği için uygun değil. Muhtemelen meta olmalı. Ama bunu zaten biliyorsun. Bu, ödül sona erene kadar izin vereceğimi söyledi.
philwinkle,

@ philwinkle geniş olabilir, ancak görünüşe göre 3 cevap verildiğinden çok geniş değil. Burada tartışıldığı gibi: meta.magento.stackexchange.com/questions/745/… Meta, MageSE ile ilgili sorular için kullanılmalıdır, rastgele yazılar / sorular için değil. insanlar soruya ilgi duyuyorlar ve bence geçerli bir soru, hepsi çok özel değil.
Sander Mangel

İki şey: Birincisi, Sander Meta konusunda haklıdır - yalnızca SE platformu ile ilgili sorular için kullanılmalıdır, çünkü Magento SE ile ilgilidir (Not: Meta'yı bu kuralı güçlendirecek kadar iyi bir şekilde yeterince iyi değildik). İkincisi, bir sorunun "ilgilenen" bir çok insanın bir sorunun kanonik olarak cevaplanıp cevaplanamayacağına ilgisi yoktur (ve bu nedenle bir sorunun StackExchange formatına uygunluğu ile). Kesinlikle sinir bozucu (buna kendim karşı geldim). Bu Q / A iş parçacığının nereye gittiğini görmeye meyilliyim. Belki de bir A sadece "haklı" olmak için yeterince iyi ifade edilebilir ...
15'teki göstergeler

@benmarks bu ödül için yanlış sebep veya konuyu seçtim, arkasındaki motivasyonum bunun için tam bir cevap yazmak için zaman ayıran kişiyi ödüllendirmekti. Eğer bu konu buraya ait değilse, kopyalayacağım ve hala değere sahip olduğumu düşündüğüm için yazarları alacakları çevrimiçi bir yere göndereceğim. Silmeden önce lütfen beni haberdar et
Sander Mangel

Yanıtlar:


56

Aşağıdaki adımlar, üretim için değil, özel modül geliştirme ortamının nasıl kurulacağını açıklar.

Proje başlatma

  1. Ekle repo.magento.com kimlik ve github erişim belirteci için auth.json besteci ana dizininde
  2. Aşağıdaki komutu kullanarak proje oluşturun:

    composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .

  3. Bu .gitignore'u alın ve proje kökünüze koyun. Hemen hemen tüm temel dosya / dizin zaten köküne eklenir .gitignore, ancak aynı zamanda şu 2 eklemek için iyidir /updateve /phpserver(sadece .gitignore bu 2 satırları ekleyin)

  4. Proje kökünde yeni git deposunu başlat
  5. Tüm takip edilmemiş dosyaları git ve ekle
  6. Modüllerinizi her zamanki gibi geliştirin (altına yerleştirin app/code/VendorName/ModuleName), artık git deponuzda yalnızca özel kodunuz olacak

Magento kurulumu

  1. Tüm dosya sistemi izinlerinin resmi kılavuzda belirtildiği şekilde ayarlandığından emin olun.
  2. Magento'yu komut satırı kullanarak kurun, örneğin:

    ${project_root}/bin/magento setup:install \ --db-host=localhost \ --db-name=magento \ --db-user=root \ --backend-frontname=admin \ --base-url=http://base.url.goes.here/ \ --language=en_US \ --timezone=America/Chicago \ --currency=USD \ --admin-lastname=Admin \ --admin-firstname=Admin \ --admin-email=admin@example.com \ --admin-user=admin \ --admin-password=123123q \ --cleanup-database \ --use-rewrites=1

  3. Dizin oluşturucuları cron job'u etkinleştirin, örneğin Ubuntu'da:

    echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -

  4. Magento defaultmodda çalışacak ve tüm eksik içerik ilk istek üzerine otomatik olarak oluşturulacaktır. Dolayısıyla derleyici veya statik içerik dağıtımı çalıştırmaya gerek yok
  5. [isteğe bağlı] PHP Storm kullanıyorsanız, XSD desteğini etkinleştirmek için aşağıdaki komutu çalıştırın:

    bin/magento dev:urn-catalog:generate .idea/misc.xml


Merhaba Alex. Proje başlatma aşaması 3 - biraz genişletebilir misiniz? Bu alt dizini kök dizinine elle kopyalamanız gerektiğini buldunuz mu? (Düzgün çalışmayan bir şey olup olmadığını merak ediyorum - o adımı beklemiyordum.)
Alan Kent

@AlanKent şu anda Magento ile ilgili tüm dosyaları indirdi vendor, bunlara magento2-baseyeni bir proje için sadece bir iskelet dahil . Bu adımın neden besteci tarafından otomatik olarak yapılması için yapılandırılmadığından emin değil, anlamaya çalışacaktır. .gitignoreBaşka bir depodan kopyalamaya gelince , bu adımın nasıl ortadan kaldırılacağı / basitleştirileceği tartışılmıştır.
Alex Paliarush

3. adım gerekli değildir. Dosyaların / klasörlerin birleştirilmesi 2. adımda yapılır.
Maddy

@Maddy'ye teşekkürler. @AlanKent, magento2-baseköke kopyalamak artık gerekli değil (sadece doğrulandı), yakın zamanda düzeltilmiş gibi görünüyor. Bu adımı yanıttan kaldırıldı.
Alex Paliarush

1) tüm kodlarımı repoya koydum, önceden kaydedilmemiş ve her şey, bu repodan çıkınca ve sadece yönetici penceresi ve db kimlik bilgileri için ayarları değiştirdiğimde, her şey düzgün çalışacak mı? 2) itme sırasında var / ve pub / klasörü dışlamayı unuttuğum için, onları tamamen silebilirim, böylece uzaktaki depoda silebilirler, yeniden yenilenecekler mi? Teşekkürler.
Lachezar Raychev

25

Başlatma ve Kurulum için Alex'in adımlarını, adımların çoğuna verdiği cevabı izleyin, sadece önerebileceğim farklılıklar:

Git yapılandırması

Aşağıdaki dosyaları Git deponuzda yalnızca saklayın:

  • composer.json
  • composer.lock
  • Uygulama / etc / Config.php

Projeniz için özel kod, ayrıca besteci dahil ettiğiniz ayrı modülleri kullanın. Bu besteci aracılığıyla yönetmek, dağıtmak istediğiniz belirli bir sürümü / sürümü kilitleyebildiğiniz için daha kolaydır. Bu aynı zamanda iç ve dış modüller için aynı yaklaşımı kullanmaya zorlar.

yayılma

Geliştirme sırasında ortamınızdaki modülleri (dev / test) şu komutla güncelleyin:

composer update

Bu, composer.lock dosyasını o kurulumda kurulu sürümlerle güncelleyecektir.

Kademelendirme / üretim öncesi / üretimde, aynı ayarları aşağıdaki komutla oluşturabilir / kurabilirsiniz:

git pull
composer install

Bu, üretimde yayınlanmadan önce yapılan testlerin, geliştirildiği gibi aynı modül sürümleriyle yapılmasını sağlamak için dev / test'te kullanılan tüm aynı modülleri kuracaktır.

Yüklemeden sonra aşağıdaki komutları çalıştırın:

bin/magento setup:upgrade
bin/magento setup:di:compile (or setup:di:compile-multi-tenant)
bin/magento setup:static-content:deploy

Bu, veritabanını günceller (şema ve veri yükseltme), DI yapılandırmasını oluşturur ve tüm statik görünüm dosyalarını dağıtır.


Belki fikstür üretmek yerine örnek verileri kullanmak mantıklı olabilir? Armatürler sadece en kritik modülleri dolduruyor ve sadece performans testi için faydalı görünüyor.
Alex Paliarush

Teşekkürler, üretimde bir site kullanırken gerekmediği için bu kısmı çıkarınız.
Vladimir Kerkhoff

Bu benim de kullandığım yaklaşımı çok yakından takip ediyor. Bu aynı zamanda Magento 1 ile de iyi çalışıyor (daha az karmaşık bir yapım süreci ile). Bestecinin işini yapmasına izin verin, benim deneyimlerime göre çok iyi bir şekilde konuşlandırdı. git içindeki küçük ayak izlerini takip etmeyin.
Aepod

Bu yükleme 'entegratör' yoluna benziyor. Vendor / magento / * içindeki repoları ekler. Hiçbir kod app / code / .. ve diğer dizinlerde bulunmayacak. .Zip arşivinde olduğu gibi Magento 2 çekirdek direktörlerim nasıl olurdu? Besteci aracılığıyla bir modül (diğer git repo) eklemek ve otomatik olarak app / code / ... ile sonuçlanmak mümkün müdür?
gizlemek

4
riskli, besteci bir dağıtım aracı değildir. üretimde çalışırken besteci yüklemesinde bir şey başarısız olursa ...
Claudiu Creanga

3

Re .gitignore, 2.2 sonrası resmi Magento cevabı "config.php gitmeye gidiyor, env.php yok" olacak.

Dahili geliştirme ve müşteri sitelerine daha fazla yaklaşmak için Mediawiki'ninki gibi besteci eklentilerine bakıyoruz. Hala araştırıyor, henüz kesin değil.

Besteci "Yol" veri havuzu türünü, ../othergitrepo/app/code/*/*modülleri almak için bir yolla kullanmaktan oldukça hoşlandım , ancak Unison veya benzerini kullanan dev ortamlarla iyi çalışmayan sembolik bağlar kullanıyor.


3

ayrı bir derleme-sunucu / süreç içermeyen farklı bir yaklaşım kullanıyoruz , yerel olarak üretimde geliştiriyoruz

daha sonra üretim için gerekli tüm dosyaları taahhüt ediyoruz . daha sonra değişiklikleri sadece sunucuya dağıtıyoruz ve upgrade komutunu çalıştırıyoruz.

Geliştirme için uygun olan ancak aynı zamanda üretim modunda çalışan bir sürüme ulaşmak zor kısımdı ve hala mükemmel değil ama şimdi çalışan bir tarif aldık.

Bunun nedeni, hangi kodun üretime gireceği üzerinde% 100 kontrol sahibi olmak istememizdir. magento2 bir ton kod ürettiğinden, tüm etkileri anlayabilmek ve üretimde olduğu gibi hata ayıklayabilmek için yerel olarak çalıştırmalıyız.

Bunun pek çok insanın yapmasını önermediğinin farkında değilim, ama bizim için en iyi sonucu veriyor.

ön-kurulum adımları

Bu komut dosyalarının çalışması için mağazanızı env.php adresindeki prodüksiyon moduna getirin ve temanızı ayarlayın dev/tools/grunt/configs/themes.js. (aşağıdaki adımlar uyumlu bir oyun defterine konuldu)

  1. silmek var/cache
  2. silmek var/view_preprocessed
  3. sil pub/static/*(.htaccess'i silmeyin)
  4. silmek var/composer_home
  5. Çalıştırmak php bin/magento cache:flush
  6. Çalıştırmak php bin/magento setup:static-content:deploy %your_languages%
  7. gerçekte kullanmadığınız tüm temaları / dilleri pub / static / frontend'den sil
  8. daha az sayıda dosyanın basılı kopyalarını pub/static/frontend
  9. Çalıştırmak php bin/magento dev:source-theme:deploy --locale="%your_language%" --theme="%your_theme%" css/styles-m css/styles-l css/email css/email-inline
  10. isteğe bağlı: 9. adımda oluşturulan mutlak sembolik bağları göreceli olanlara dönüştürmek için bir bash betiği kullanıyoruz
  11. Çalıştırmak grunt less:your_theme

arka uç / di-kurulum adımları

  1. silmek var/cache
  2. silmek var/generation
  3. silmek var/composer_home
  4. silmek var/di
  5. Çalıştırmak php bin/magento cache:flush
  6. Çalıştırmak php bin/magento setup:di:compile

Bu @ greenone83 için teşekkürler, bu benim arka uçumu ön uç parçası olarak oluşturmama rağmen temelde benimsediğim yaklaşım. ASLA kurulum kullanmam: di: compile bulduğum gibi derle Anlamadığım bir şey neden setup: static-content: deploy oluşturulan / kod içinde dosyalar oluşturur (konum gönderinizden değiştirildi)? Üretilen tüm kodları silersem, sitem üretim modundayken siteye göz attığımda bu dosyaların otomatik olarak oluşturulduğunu öğrendim.
PedroKTFC

2

Bu dosyaları da
görmezden
gelmelisiniz
/app/etc/config.php /app/etc/env.php /.idea/workspace.xml // phpstorm


2
Config.php dosyasını görmezden gelirseniz, başka bir ortama bastıktan sonra tekrar yeni uzantıyı etkinleştirmeniz gerekir, bu nedenle onu depoya eklemek daha iyidir.
Vladimir Kerkhoff
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.