web-gelistirme-sc.com

Yeni içerik kaybetmeden sitenin geliştirme kopyasından canlı siteye yapılan değişiklikleri nasıl birleştiririm?

Bir sitenin geliştirme kopyası üzerinde yapılan çalışmaları canlı prodüksiyon kopyasına birleştirmek için en iyi prosedür nedir? Çoğu zaman, en yeni özelliklerde geliştirme başladığından beri siteye birçok yeni içerik eklenmiştir. Ve bir siteye yapılan çoğu ekleme veritabanı değişikliklerini içerecektir. Yeni dosyaları kopyalamak kolaydır, ama veritabanı ne olacak? Üretim sitesini en son güncellediğinizden beri eklenen yeni içeriği kaybetmeden değişikliklerinizi mevcut üretim veritabanıyla nasıl birleştirirsiniz? Bu konuda yardımcı olan herhangi bir modül var mı?

40
Chaulky

İçerik sitesindeki içerik türleri, görünümler ve yapı değişiklikleri için veritabanını koda aktarmak için Features ifadesine bakın.

İçerik taşıma için birçok seçenek vardır, ancak tek bir sağlam çözüm yoktur. Bunun bir örneği Dağıtım paketi .

16
budda

Burada temel olarak iki düşünce okulunu benimsedim (3. düşünce okulu, veritabanı farkları yapma, tartışmayacağım çünkü karmaşıklık oldukça yüksek).

1) Üretim veritabanını bırakarak ve geliştirme veritabanının mysqldump'ını içe aktararak dağıtın. İsteğe bağlı olarak, SQL dökümünde dev URL'ye başvuran sabit kodlu mutlak bağlantılarda önceden regex find/replace komutunu çalıştırın. Dev db'yi prod'a aktardıktan sonra, prod için dev'den farklı olan ayarları değiştirmek için SQL deyimlerini (genellikle komut dosyası aracılığıyla) otomatik olarak çalıştırın (örneğin, değişken tablosunda, ihtiyacınız olan harici sistemlere bağlanmak için bazı bağlantı ayarları var. dev sürümü yerine prod harici sistemlerde noktaya değiştirin).

2) Yönetici ayarları için budda tarafından belirtildiği gibi Özellikler modülünü kullanın ve Düğüm Dışa AktarmaTümünü Sil modülüyle birlikte içerik dışa/içe aktarma modülü. Yani iş akışı:

  1. düğümleri/özellikleri dosyalara vermek için node_export ve özellikleri kullanın
  2. İsteğe bağlı (ve umarım) sürüm kontrolü
  3. Ürün sistemine dosya yükle
  4. Özellikleri yüklemek için drush veya admin arayüzünü kullanın
  5. Almak istediğiniz türdeki tüm düğümleri silmek için drush all-admin veya admin arayüzünü kullanın
  6. Düğmeleri dışa aktardığınız düğümler dosyasından içe aktarmak için drush ne-import veya admin arabirimini kullanın.

Bir not, içeriğin yalnızca bir yöne gittiği standart bir iş akışını benimsemenizi şiddetle tavsiye ederim. Ya Dev -> Prod veya Prod -> Dev (Bunu tercih ederim).

Bunu yaptım ve bunu oldukça iyi sonuçlarla bazı büyük sistemlerde yapıyorum, ancak her zaman bu Apple'ı dilimlemenin birçok yolu olacak, hangisinin sizin için en uygun olduğunu seçin.

2
coderintherye

SQL dosyasında canlı site kopya ve geliştirme kopya veritabanlarını dökümü (her iki döküm için aynı parametreleri ve ayarları kullanın).
Ardından, küçük bir karşılaştırma aracı kullanarak her iki SQL dosyasını da karşılaştırın ExamDiff . Dosya renk farklılıklarını farklı renklerle yan yana görüntüler. Farklılıklara da doğrudan atlayabilirsiniz (kaydırma yapmadan). Farkları inceleyin ve canlı sitenin SQL dosyasına satır ekleyin/düzenleyin. Bu dosyada geliştirme ortamının mutlak yolu/URL'si olmadığından emin olun. Bitti! Canlı site için veritabanını geri yükleme zamanı.
Hayatınızı kolaylaştırın: İlk adımda, sadece değişen tabloları boşaltın. Örneğin, geliştirme kopyasında ayrı bir tabloyu hedefleyen bir modül düzenlediyseniz, yalnızca bu tabloyu boşaltın. Belirli bir tablodan emin değilseniz, tüm veritabanı dökümü iyidir.

1
user931