Bagaimana saya bisa mengimpor konfigurasi di situs yang berbeda?

49

Saya memiliki kesalahan ini ketika saya mencoba mengimpor konfigurasi dari situs lain:

Konfigurasi bertahap tidak dapat diimpor, karena berasal dari situs yang berbeda dari situs ini. Anda hanya dapat menyinkronkan konfigurasi antara instance hasil kloning dari situs ini.

Saya memiliki 10 pelanggan, dan saya perlu menyinkronkan konfigurasi situs saya dengan 10 situs web yang berbeda.
Situs UUID adalah masalah untuk berbagi konfigurasi dengan situs web yang berbeda. Apakah ada solusinya?

Axel Briche
sumber
1
Jawaban lain yang menyenangkan di sini drupal.stackexchange.com/q/152584/39617
digitgopher

Jawaban:

55

Anda bisa mendapatkan UUID dengan:

drush config-get "system.site" uuid

Dan Anda bisa mengubahnya dengan

drush config-set "system.site" uuid "fjfj34-e3bb-2ab8-4d21-9100-b5etgetgd99d5"

Dengan itu Anda harus memiliki situs yang sama.

Gucho Ca
sumber
Bekerja untuk saya ... tiga tahun kemudian. Terima kasih!
mrlexington
17

Manajemen Konfigurasi hanya membolehkan konfigurasi sinkronisasi antara situs atau proyek yang sama untuk menghindari masalah mengimpor konfigurasi dari situs a.com ke b.com, untuk menyelesaikan validasi ini Drupal 8 menghasilkan UUID untuk setiap situs.

Anda mendapatkan situs Anda saat ini UUID yang menjalankan perintah berikut:

drush cget system.site

Perintah di atas kita akan memiliki output yang mirip dengan daftar berikutnya:

uuid: 236fa77c-d83e-42de-8a03-03c574c00160
name: Drupal 8
mail: user@example.com
slogan: ''
page:
  403: ''
  404: ''
  front: node
admin_compact_mode: false
weight_select_max: 100
langcode: en

Impor konfigurasi memiliki UUID yang berbeda, Anda dapat mengonfirmasi UUID dengan perintah berikut

cat sites/default/config/staging/system.site.yml

Karenanya, Anda perlu mengubah nilai Situs UUID menggunakan perintah Drush berikut:

drush cedit system.site

Perintah di atas memungkinkan Anda untuk menggunakan editor teks favorit Anda untuk mengatur hadir UUID yang sama dalam pementasan file konfigurasi.

cat sites/default/config/staging/system.site.yml

Setelah mengubah UUID dan mengubah izin, jika Anda mengunjungi lagi halaman example.com/admin/config/development/configuration Anda akan melihat semua perubahan, penghapusan, penggantian nama, dan penambahan.

sumber: http://enzolutions.com/articles/2014/08/27/understanding-configuration-management-in-drupal-8/

rpayanm
sumber
9
Benar, tetapi perlu diingat bahwa mengubah situs UUID tanpa mengubah yang lain berarti bahwa drupal akan memperlakukan setiap bidang / jenis simpul / tampilan / ... yang memiliki UUID berbeda sebagai hal yang berbeda dan pertama-tama akan menghapus yang lama dan kemudian kembali buat lagi, yang pada dasarnya akan menghapus semua konten Anda.
Berdir
Ok terima kasih, tapi itu tidak ramah pengguna untuk pengguna tanpa dedicated server dan pengetahuan linux, ada solusi untuk pengguna dasar / pemula (tanpa ssh dan baris perintah, hanya ftp server) tolong? Drush membutuhkan baris perintah dan itu tidak ramah pengguna untuk pelanggan saya.
Axel Briche
Apa yang sebenarnya terjadi jika saya mengubah situs UUID dari situs web Drupal yang ada (instalasi baru) agar sesuai dengan konfigurasi yang diekspor (dengan drush config-set system.site uuid "abcdef-...")?
GiDo
1
Perintah satu baris untuk menyalin pembaruan situs UUID. drush -y cset system.site uuid $(cat /path/to/config/system.site.yml | awk '/uuid/ { print $2 }')
ya.teck
10

Menggunakan Drupal Console

Anda dapat mencapai hal yang sama dengan Drupal Console dengan menimpa system.site- uuidkunci.

$ drupal config:override

Kemudian masukkan nama konfigurasi system.site, kunci konfigurasi uuiddan nilai yang sesuai saat diminta.

Enter configuration name [advagg.settings]:
> system.site

Enter the configuration key [uuid]:
> uuid

Enter the configuration value:
> 656165f1-1017-45a1-9bd8-f70e31cf29ab

Configuration name system.site
------------------- -------------------------------------- -------------------------------------- 
Configuration key   Original Value                         Override Value                        
------------------- -------------------------------------- -------------------------------------- 
uuid                7622bb19-5f3f-452d-82a3-c0a88241e789   656165f1-1017-45a1-9bd8-f70e31cf29ab  
------------------- -------------------------------------- -------------------------------------- 
MrUpsidown
sumber
1
Saya pikir ini harus menjadi jawaban yang diterima.
Badri
7

Anda bisa mendapatkan situs UUID tanpa akses ke situs atau database.

Jika Anda tidak memiliki akses ke situs / database asli, Anda masih dapat menyinkronkan dari file konfigurasi yang disediakan. Konfigurasi akan berisi UUID situs Anda, jadi Anda harus mengaturnya terlebih dahulu.

  1. Temukan direktori config / sync Anda: Jika dipindahkan, Anda dapat menemukan di mana itu diatur settings.php. Cari:, $config_directories['sync']yang akan mencantumkan path.

  2. Pergi ke jalur konfigurasi itu, dan cari file: system.site.yml Di file itu, cari uuid: 86b376c5-385e-4d13-bf00-e5e5443540e3(Anda akan memiliki nilai yang berbeda, jelas). Salin nilai itu.

  3. Dalam drush, atur situs Anda ke situs yang sama dengan yang baru saja kami temukan: drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3

  4. Sinkronkan konfigurasi menggunakan drush drush cim -y

  5. Jika Anda mendapatkan kesalahan, bacalah . Saya punya:

    • modul yang hilang (yang harus saya unduh dan aktifkan)
    • konten dari modul pintasan, yang harus saya hapus dulu, di:
    • admin> config> User Interfact> Shortcuts

Setelah saya melakukan itu, saya memutar kembali cim, dan semuanya bekerja seperti pesona!

Saya telah menginstal instance D8 lokal sebelum mencoba memulihkan dari konfigurasi yang disediakan.

Atomox
sumber
4

Anda dapat mengubah UUID untuk situs tujuan menggunakan drush cset dan drush cget.

Pertama-tama dapatkan sumber UUID:

$ cd ~/Sites/sourcesite <-- your drupal site root
$ drush cget system.site uuid
This will return something like:
'system.site:uuid': 86b376c5-385e-4d13-bf00-e5e5443540e3 

Ganti UUID tujuan

cd ~/Sites/destinationsite <-- your drupal site root
$ drush cset system.site uuid 86b376c5-385e-4d13-bf00-e5e5443540e3 

Sekarang kamu bisa:

  1. Arahkan ke situs tujuan di browser Anda di admin / config / development / configuration / full / import
  2. pilih arsip konfigurasi dan pilih unggah
  3. Anda akan melihat daftar semua item konfigurasi
  4. Gulir ke bawah ke bawah dan klik tombol impor semua
Selwyn Polit
sumber
0

Jika Anda mengikuti petunjuk dalam jawaban Gucho Ca, dan masih memiliki masalah, pastikan untuk memeriksa bahwa Anda memiliki izin menulis di direktori konfigurasi sinkronisasi Anda. Ini akan memberi Anda pesan kesalahan yang sama, bahkan jika uuids Anda sama, tetapi sistem Anda tidak memiliki izin menulis.

Cara yang baik untuk memeriksa adalah dengan mengklik Tab Impor bagian Sinkronisasi. Jika Anda tidak memiliki izin file yang benar, ia akan memberi tahu Anda di sana.

MikeD
sumber