Benzer siteleri döküm olmadan benzersiz bir profilden nasıl dağıtabilirim / yönetebilirim?


15

Ben "sevmiyorum klonlama ima web sitesi" çözümleri damping bir veritabanı ve başka ortamda bu dökümü ithal. Bu , aynı web sitesinin birkaç örneğini dağıtmanın gerçek bir dünya yolu gibi görünmüyor (evreleme / prod / dev / etc).

D7 ile genellikle özel profiller kullandık ve bu profillerden web siteleri yüklemek için drush kullandık (ve belki de daha sonraki site senkronizasyonları için özellikler kullanıyoruz). Bu bize yeni kurulumlar sağladı, test içeriği yok, ancak önemli ayarları paylaştı. Örneğin migrate ile ortak içerik senkronizasyonu yapılır.

Aynı yükleme profillerini paylaşan birkaç D8 örneğini yönetmeye çalıştım. Nihai hedefin site yapılandırmalarını paylaşmak ve senkronize etmek olduğu yer. Ve her kurulumun farklı bir site UUID'si var. system.site uuidYapılandırma değişkenini yükleme zamanında zorlamada başarılı olamıyorum (elbette değeri daha sonra değiştirebilirim, ama bana göre bu çok geç ve tüm nesneler zaten ilk senkronizasyonu kabus yapan farklı UUID'lerle oluşturuldu. , bazı varsayılan içeriklerin silinmesi gerektiği veya kaldırılamadığı için senkronizasyonu kilitleyen varsayılan dil vb.).

Bu UUID'yi zorlamak için $config['system.site']['uuid'], içinde bir değere sahip oluşturulan bir settings.php dosyasını kullanmayı denedim , büyük başarısız oldu (ayar, site kurulumundan sonra bile tamamen yok sayıldı).

Ayrıca , özellikle bu çözümü başka bir yükleme profiliyle karıştırmanın yolunu tam olarak anlamadığım yapılandırma yükleyici profiline de baktım .

Soru şu: Bir yükleme profilinden yeni siteleri dağıtmanın en iyi yolu nedir:

  • "web sitelerini klonlama" ve site oluşturmada SQL dökümlerini manipüle etmeden ( klonlanan siteler sorusundaki gibi ).
  • yalnızca dışa aktarılan yapılandırmayı ve kodu kullanarak yeni ve temiz bir yüklemeyle (geliştiricilerin içerik çöpleri olmadan)
  • hem kurulum yapılandırma varsayılanlarını hem de sonraki senkronizasyonları yönetebilir

Yanıtlar:


3

Özellikler UUID sorununun atlanmasına yardımcı olabilir. Hala buggy, bu da işlemi tamamen otomatikleştirmemizi engelliyor, ancak en azından yapılandırmayı manuel olarak değiştirebilir ve koruyabiliriz.

Özellikler hala modüller oluşturur, yapılandırmayı verilen özellikler modülünün config / install dizinine aktarır. Bu, özelliği yüklediğinizde alınacaktır ve özelliklerinizin dışa aktarılması değiştikçe site yapılandırmanızı (eski drush özelliklerinin geri döndürülmesine benzer şekilde) güncellemeye devam edebilirsiniz.

Yapılandırmayı doğrudan drush yoluyla da içe aktarabilir , yapılandırma klasöründe olmayan yapılandırmayı geçersiz kılmaktan kaçınmak için --partial bayrağı kullandığınızdan emin olun . --Source komutunu kullanarak özel bir yapılandırma klasörü konumu da tanımlayabilirsiniz, böylece böyle bir şey yapabilirsiniz drush cim --partial --source=docroot/modules/features/myfeature/config/install.


Tamam, iyi anlarsam, soime key özellikleri üzerindeki web sitesi yapılandırmalarını senkronize etmek için özelliği kullanırsınız . Klonlanan web sitelerinin tam yapılandırma senkronizasyonuna izin vermeden.
16:56, regilero

2
Kesinlikle. Bizim için tam yapılandırma senkronizasyonu ile ilgili temel sorun, yöneticilerin değiştirebileceği tek bir ayarın olması yeterlidir ve artık senkronize edemezsiniz, çünkü bu değişikliklerini geri alır. Özellik alanlarına bölmek, a) bir yapılandırma kümesini (kısmen, ne olduğunu anladığımız için) korumamıza ve b) özelliklerin geri kalanında ve yapılandırmalarını nasıl yönettiğimizde esnek kalmamızı sağlar.
Balazs Dianiska

Tamam, bu kesin bir cevap değil ama sana ödül vereceğim. Birisi daha sonra güncellenmiş bir cevap eklemek isterse (işler ilerledikçe) belki de bunun için başka bir ödül tekrar açarım.
regilero

1

Başka seçenek:

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23

1

@Ivan Jaros ipucuna dayanarak, bir profil yükledikten sonra belirli yapılandırma seçeneklerini ayarlayabilirsiniz. Açıkçası, bu sadece kurulumda çalışır ve bir site zaten kurulduktan sonra değil.

Profilinizin .install dosyasına, varsayılan yapılandırma ayarlarında aşağıdakileri ekleyebilirsiniz hook_install():

\Drupal::configFactory()
  ->getEditable('system.site')
  ->set('uuid', 'this is my new uuid')
  ->save(TRUE);

Bunu yerel olarak denedim ve işe yarıyor. Ben drush csetsite UUID değiştirmek için kullanmadan yukarıdaki kodu (uygun UUID seti ile) kullanarak başka bir siteden yeni kurulmuş bir yerel siteye yapılandırma çekmek başardı .

Muhtemelen, UUID'nizi ortamınızdaki bir dosyadan veya bir ortam değişkeninden veya hizmetten alınacak şekilde ayarlayabilirsiniz ve bu nedenle, bu profilin yüklü olduğu herhangi bir sitede hepsi aynı olur.

Ben benzer bir şey yapmak için ümit settings.phpama ConfigFactorysınıf bu noktada mevcut değildir ve üzeri ayarlama sorunuzu işaret olarak $configiçinde settings.phphiçbir etkisi yoktur.

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.