Devel modülünün üretim ortamlarına kurulması nasıl önlenir


26

Yeni Drupal 8 Configuration Manager programını kullanarak Devel modülünü belirli ortamlara kurmasını nasıl önleyebilirim? Bildiğim kadarıyla, yerel cihazıma kurmak, bir dahaki sefere yapılandırmayı dışa aktardığımda ve diğer ortamlarıma (dev, test, prod) aktardığımda, otomatik olarak etkinleştirilecektir.


Kullanmak drushkabul edilebilir mi? Geçen gün öğrendim drush config-export --skip-modules=devel. Sarhoş olmadan benzer bir şey olabilir, ama bilmiyorum.
mradcliffe

Bu yüzden her konfigürasyonu verdiğimde bunu yapmak zorunda kalacağım? Daha iyi bir yol olmalı: |
cambraca

Belki .gitignore'nize bazı config dosyaları ekleyebilirsiniz.
digitaldonkey


2
Bence bu soru geçmişe bakıldığında çok geniş. Muhtemelen birçok iyi cevap vardır, çünkü site için geliştirme ve geliştirme sürecinin ne olduğuna bağlıdır.
mradcliffe

Yanıtlar:


18

Yöntem: Drush

  • Drush, yapılandırmayı senkronize ederken etkin uzantı durumlarını görmezden gelebilir.

    drush cex --skip-modules=devel

    drush cim --skip-modules=devel

  • İle Drush CMI araçları size görmezden yapılandırmanın listesiyle çalışabilir.

    drush cexy --ignore-list=/path/to/config-ignore.yml

    drush cimy --delete-list=/path/to/config-ignore.yml

Yöntem: Modüller

  • Yapmanıza olanak sağlayan Configuration Split modülünü kullanabilirsiniz:

    1. Bazı konfigürasyonları özel klasöre böl
    2. Kara liste yapılandırması
    3. Bir yapılandırma kümesini yoksay
    4. Yapılandırma varlıkları tarafından yapılandırıldı
  • Yapılandırma Salt okunur mod modülü

    Bu modül, Drupal admin UI aracılığıyla yapılan konfigürasyon değişikliklerini kilitlemeye izin verir. Bu, örneğin yapılandırma değişikliklerinin üretim ortamında değil, yalnızca hazırlama veya yerel ortamlarda yapılması gereken senaryolarda faydalı olabilir.

    $settings['config_readonly'] = TRUE;

  • Diğer bir modül ise, konfigürasyonu çevre bazında geçersiz kılmanıza izin veren Ortam Yapılandırmasıdır .


2
Devel modülü için tüm kütüphane bağımlılıklarını üretim sunucularımda bulundurmaktan gerçekten hoşlanmıyorum, bu yüzden kullanarak besteciye ekliyorum composer require --dev drupal/devel. Eklenen bonus, besteci kurulumunun daha hızlı olması ve eşyaların daha hızlı dağıtılmasını sağlamasıdır.
Duncanmoo


6

Güncelleme : Aşağıda açıklanan özellik son zamanlarda https://www.drupal.org/project/config_split/issues/2926505


Dağıtım işleminizde sarhoş kullanıyorsanız, aşağıdakileri yapabilirsiniz:

Sizinle drushrc.phpaynı dizinde bir dosya oluşturun settings.php(örneğin docroot/sites/default:) ve şunu yazın:

$drush_ignore_modules = array(
  'devel',
  'webprofiler',
  'devel_generate',
  'kint',
  'yaml_editor',
);

$command_specific['config-export']['skip-modules'] = $drush_ignore_modules;
$command_specific['config-import']['skip-modules'] = $drush_ignore_modules;

Bu , işlem sırasında modülleri atlamak için drush cex/ drush cimkomutlarını değiştirebileceğiniz anlamına gelir .

Drush 8'de Konfigürasyon Modülü Filtresini Kullanma hakkında daha fazla bilgi edinebilirsiniz .


5

drush cex --skip-modulesBu konuda açıklandığı gibi config_split lehine kaldırıldı, bu nedenle drush'a dayalı çözümler benim için işe yaramadı.

Config_exclude modülünü kullanarak Duncanmoo çözümünü temel alan çözüm

1. Besteci gerektiren --dev kullanarak config_exclude komutunu kurun ve yapılandırın

$ composer require --dev drupal/config_exclude
$ drush en config_exclude -y
$ nano sites/default/setting.php

settings.php dosyasının yerel ortamınızda kullanılmasına izin verin

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

Config_exclude ayarlarını yerel dosyaya ekle

$ nano sites/default/setting.local.php

işte bazı örnek ayarlar

$settings['config_exclude_modules'] = [
    'devel', 
    'config_exclude',
    'config_filter',
    ...
    'stage_file_proxy',
];

NOTE1 : config_filter config_exclude bağımlılığıdır, böylece üretime ihtiyacınız yoksa yukarıdakileri hariç tutabilirsiniz.

NOT2: Bu settings.local.phpbir gereklilik değildir. VCS'niz tarafından kontrol edilip edilmediğine bağlıdır.

2. Besteci gerektirir --dev

Tamamen geliştirme amaçlı olan bir modülü etkinleştirirken --dev bayrağını kullanın:

$ composer require --dev drupal/devel

Bu, bağımlılıkların composer.json dosyasına request-dev altında eklenmesiyle sonuçlanır:

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^1.0@RC"
    }
}

Yani siteyi dev modülleriniz OLMADAN kurarsanız, şunları kullanırsınız:

$ composer install --no-dev

NOT: Evreleme ve eşya ortamlarınızda her zaman yapmanız gerekenler - no-dev

3. normalde kullandığınız gibi drush cex kullanın

$ drush cex 

dışlanan modül ayarlarından hiçbirini dışa aktarmayacak

NOT: Yukarıdaki komutu çalıştırdıktan sonra core.extension ayarlarının değiştirildiğini fark ettim ancak karşılık gelen .yml sabit diske asla yazılmadı (onaylandıktan sonra bile will be deleted and replaced with the active config), bu yüzden işlenecek bir şey yok, sanırım internal'leri config_exclude modülü


Yukarıdaki önerileri izleyerek @GiorgosK ile çok benzer bir deneyim yaşadım. Bu çözüm benim için mükemmel çalıştı ve iyi düşünülmüş tavsiyeler içeriyor. Ayrıca core.extension'ın yanlış negatiflerini fark ettim ama git durumunun değişmediği için gerçekten her şey yolunda. Thanks
vrwired

2

Drupal 8.3.x için ilginç bir sorun var: Geliştirme modüllerinin config-export dışına çıkmasına izin ver . Genel fikir birliği, Configuration Split'in şu anda en iyi çözüm olduğu yönünde .

Swentel tarafından yapılan yorum :

Config_split'in nasıl çalıştığını kısaca belgelemek istedim: config split config öğesi, kara listeye ne yazdığını tanımlayarak, modülleri ve / veya config nesnelerini kara listeye almanızı sağlar. Devel olan kanonik örnek, zaten ilginç bir kullanım durumuna sahiptir: bu, devel'i kara listeye aldığınızda, bağımlılık olmadığından menü yapılandırma dosyasının kaldırılmayacağı system.menu.devel ile birlikte gelir. Bu önemli bir sorun olmasa da, config split tek tek seçmenize izin verir, böylece ortamdan kaldırılır.

Geerlingguy tarafından yapılan yorum :

Ortama özgü konfigürasyonu yönetmek için birkaç farklı yöntem denedim ve config_split doğru kullanılabilirliği, şimdiye kadarki en iyi ek yük bakiyesini vurdu gibi görünüyor. Basit ve hafiftir, ancak yalnızca belirli ortamlarda belirli yapılandırmaları işaretlememe (ve kullanmaya devam etmeme) izin veriyor.


2

Yapılandırma Bölünmüş , bazıları için uygun bir çözüm olabilir.

Drupal 8 yapılandırma yönetimi, tüm site yapılandırma kümesini içe ve dışa aktarırken en iyi şekilde çalışır. Bununla birlikte, bazen geliştiriciler, CM'nin sağlamlığından vazgeçmeyi ve geliştirme makinelerinde etkin bir süper konfigürasyon kümesine sahip olmayı ve sadece bir alt kümeyi konuşlandırmayı severler. Bunun kurallı örneği, devel modülünün etkin hale getirilmesi veya geliştirme ortamında birkaç blok yerleşimi veya görünümünün olması ve daha sonra bunları dağıtılacak yapılandırma kümesine vermemesi, ancak yine de geliştirme yapılandırmasını iş arkadaşlarıyla paylaşabilmesidir.

https://www.drupal.org/project/config_split


Config split için +1, bunu daima Devel ve Field UI ve Views UI gibi diğer modüllerin prod olarak devre dışı bırakılmasını sağlamak için kullanırım. Config bölmesini kullanarak Modülleri devre dışı bırak bölümüne bakın .
leymannx

2

Bunu yapmanın güzel bir yolu var, burada rahatlık için besteciye adayan dev modüllerinizle sona erersiniz ve bu modüllerin config'i config dışa aktarmanıza eklenmez (2 bölüm vardır):

1. Besteci gerektirir --dev Tamamen geliştirme amaçlı olan bir modülü etkinleştirirken --dev işaretini kullanın:

$ composer require --dev drupal/devel

Bu, bağımlılıkların composer.json dosyasına request-dev altında eklenmesiyle sonuçlanır:

...
    "require-dev": {
        "drupal/twig_xdebug": "^1.0",
        "drupal/devel": "^1.0@RC"
    }
}

Yani siteyi dev modülleriniz OLMADAN kurarsanız,

$ composer install --no-dev

Not: Evreleme ve eşya ortamlarınızda her zaman yapmanız gerekenler - no-dev

2. config_split modülünü kullanın

Yapılandırma ayrık modülü, bir ortamda etkinleştirilebilen ya da devre dışı bırakılabilen bir yapılandırma ihracat grupları oluşturmanıza olanak sağlar.

Aslında 3 bölmem var:

  1. Ana site config (her yerde etkin; geliştirme ve evreleme ve üretim)
  2. Evreleme config (dev ve evreleme etkin) - yeniden yönlendirilen e-posta modülünü içerir
  3. Dev config - devel, kint ... içerir, ancak dev.

1
Gerçekten de dev bağımlılıklarını bu şekilde kullanmamalısın. Bunlar kod üretim gibi araçlara gerek duymadan üretime girmenize gerek kalmayacak. Etkinleştirilmişlerse ve Drupal modülün kurulmasını bekliyorsa ve kod orada değilse, bu durum sitenin dengesizliğine yol açabilir. Drupal / Composer, dev bir bağımlılıksa, dosya sisteminde olmayan bir dosyayı yine de yüklemeye çalışabilir.
Frank Robert Anderson,

@ FrankRobertAnderson daha iyi bir çözüm önermiyor musunuz? Üretim sunucumda devel modül veya bağımlı kütüphaneler istemiyorum, ne öneriyorsunuz?
Duncanmoo

Drupal bunun için gerçekten iyi bir seçenek sunmuyor. Planın korkunç değil, ama dikkatli olmazsan sorunlara yol açacak. Planınla ilgili meselem config_split, sitenizin dayandığı pim haline geldi. OP'de bir soru bile olmayan, bağımlılık meselesi olmasaydı, ben size oy veririm.
Frank Robert Anderson,

1

Hepsini tek seferde yapmak için küçük bir senaryo yazdım.

#!/bin/bash

drush pm-uninstall devel -y
drush pm-uninstall field_ui -y
drush pm-uninstall field_name_prefix_remove -y

drush config-export

drush en devel -y
drush en field_ui -y
drush en field_name_prefix_remove -y

1

Ayrıca Config Ignore modülünü de görebilirsiniz .

Bu modül, istediğiniz konfigürasyonu yerinde tutmanıza izin veren bir araçtır.

Diyelim ki, dışa aktarma klasöründeki yapılandırma ne olursa olsun, canlı sitenizdeki system.site yapılandırmasının (bu sitelerin adını, sloganını, e-postayı, vb. İçeren) dokunulmadan kalmasını istiyorsunuz.

Ya da belki konfigürasyonu her içe aktardığınızda devel.settings değişikliklerini yapmaktan yoruldunuz mu?


Config Ignore modülü bu durumda uygun değildir. Modül sayfasından: core.extension yapılandırmasını yok saymayın, çünkü yeni modülleri yapılandırma içe aktarmasıyla etkinleştirmenize engel olur. Ortama özel modüller için Config Split modülünü kullanın.
bmunslow

1

Bunun için bir dağıtım geçersiz kılma modülünü kullanabilirsiniz. Ayrıntılı açıklama için aşağıdaki bağlantıyı okuyun:

http://dcycleproject.org/blog/46/continuous-deployment-drupal-style

Ancak , bunu yapmanın en iyi yolu, modülün yerel olarak devre dışı bırakılması ve ardından yapılandırmanın dışa aktarılmasıdır.

Drupal, yapılandırma ayarlarını geçersiz kılmak için bir yol sağlar settings.php, ancak modülleri devre dışı bırakmak / etkinleştirmek için geçerli değildir.

Kimden default.settings.php:

/**
 * Configuration overrides.
 *  * To globally override specific configuration values for this site,
 * set them here. 
 * 
 *
 * blah..blah...blah
 *
 *  
 * There are particular configuration values that are risky to override. For
 * example, overriding the list of installed modules in 'core.extension' is not
 * supported as module install or uninstall has not occurred. Other examples
 * include field storage configuration, because it has effects on database
 * structure, and 'core.menu.static_menu_link_overrides' since this is cached in
 * a way that is not config override aware. Also, note that changing
 * configuration values in settings.php will not fire any of the configuration
 * change events.
 */
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.