Jadi saya harus dapat memiliki dev / tahap / iterasi produksi (lebih dari server terpisah) untuk situs WordPress, saya biasanya menggunakan git tetapi ini jelas tidak akan bekerja dengan situs WordPress karena ketergantungan pada database untuk utama konfigurasi ... well, hampir semuanya.
Jadi pertanyaan saya adalah bagaimana kalian melakukannya? Saya punya Google cepat dan melihat ada beberapa plugin, apakah ini satu-satunya cara? Mana yang paling baik melakukan pekerjaan dalam hal kemudahan penggunaan, kecepatan, keandalan, dll.?
svn
version-control
staging
deployment
Rob Vermeer
sumber
sumber
Jawaban:
Saya memiliki pengaturan yang sangat saya banggakan, dan itu bekerja dengan sangat baik untuk tim saya.
Struktur Umum
Saya menyimpan seluruh instalasi di bawah git. Semua perubahan, baik itu pembaruan sistem, menambah / memperbarui plugin, menambahkan / memperbarui tema, melalui alur kerja yang sama. Perubahan dapat dibatalkan pada saat itu juga. Saya memiliki server penyebaran (desktop P4 lama) yang menjalankan gitosis tetapi Anda bisa dengan mudah menggunakan github atau gitolite . Dalam git, saya memiliki dua cabang "khusus",
master
dandevelop
(dijelaskan lebih lanjut di bawah). Server produksi dan pementasan saya berbasis cloud.Lingkungan Pengembangan
Setiap pengembang menjalankan server pengembangan mereka sendiri di mesin mereka sendiri. Dalam hal database, membutuhkan data langsung hampir tidak pernah menjadi masalah. Kami terutama menggunakan data uji unit tema . Kalau tidak, ekspor dan impor mencakup sebagian besar hal. Jika DB piece sangat penting, Anda bisa mengatur replikasi atau menyiapkan sesuatu untuk sinkronisasi on-demand. Ketika saya awalnya menyiapkan struktur ini, saya pikir ini akan sangat penting jadi saya mulai menulis seperangkat alat untuk melakukan ini, tetapi saya terkejut mereka benar-benar tidak perlu. (catatan: karena mereka tidak diperlukan, saya tidak pernah memoles mereka, jadi ada bug misalnya akan mengganti domain dalam data serial).
Lingkungan Pementasan
Ketika komit didorong dari
develop
cabang ke gitosis, mereka dapat secara otomatis dikerahkan ke server pementasan kami. Database pementasan adalah budak dari basis data produksi.Lingkungan produksi
Ketika komit didorong ke gitosis di
master
cabang, itu secara otomatis dikerahkan ke server produksi.Masalah wp-config.php
Anda ingin
wp-config.php
menjadi unik dari server ke server, tetapi Anda juga ingin tetap di bawah kontrol versi. Solusi saya adalah menggunakan.gitignore
untuk mengabaikanwp-config.php
, dan menyimpan versi pementasan dan produksi sebagai file dengan nama yang berbeda. Kemudian pada setiap server, saya symlink misalnyawp-config.php -> wp-config-production.php
. Setiap pengguna kemudian menyimpan DB mereka sendiri dengan kredensial mereka sendiri, dengan pengaturan wp-config.php mereka sendiri (tidak terlacak).Catatan lain
Saya menggunakan Rackspace Cloud , yang fenomenal dan murah. Dengan itu saya dapat menjaga server pementasan dan produksi saya identik. Saya juga sedang menulis plugin saat ini yang menggunakan API mereka untuk memungkinkan saya untuk mengontrol layanan saya langsung dari dalam WordPress, itu luar biasa.
Direktori cache, direktori unggahan file, dll., Semuanya ditambahkan ke .gitignore. Jika Anda mau, Anda dapat mengatur tugas cron untuk secara rutin memeriksa unggahan dan mendorongnya ke gitosis, tetapi itu sepertinya tidak pernah perlu bagi saya.
Struktur master / mengembangkan diatur untuk sebagian meniru model percabangan Vincent Driessen . Saya juga menggunakan ekstensi git-nya git-flow dan saya akan sangat menyarankan itu juga.
Saya memiliki 10 atau lebih pengembang yang mengerjakan struktur ini selama lebih dari satu tahun sekarang dan merupakan impian untuk bekerja dengannya. Andal, aman, cepat, fungsional, dan gesit, Anda tidak bisa meminta lebih banyak lagi!
sumber
Pertama, saya pikir ini penting untuk mempertimbangkan apa yang akan Anda Kontrol Versi. Saya akan merekomendasikan untuk tidak meletakkan seluruh direktori WP di bawah VC. Saya pikir paling masuk akal untuk meletakkan wp-content / themes / YourThemeName di bawah VC. Untuk situs besar dengan jumlah plugin kompleks yang tinggi saya bisa melihat case untuk menyertakan wp-content / plugins juga. Jika Anda benar-benar harus melakukannya, Anda dapat memasukkan wp-content / upload. Jawaban di bawah ini akan sedikit berubah, tergantung pada apa yang Anda kontrol versi.
Karena itu, inilah yang saya gunakan:
Lokal: Mengatur tumpukan LAMP pada mesin Anda. Gunakan URL yang sama dengan situs pengembangan Anda. Gunakan entri file VirtualHosts dan .host untuk mensimulasikan lingkungan pengembangan dari sudut pandang URL. Jika Anda hanya ingin mengubah tema, pertimbangkan untuk menggunakan SSHFS untuk menautkan ke wp-content / plugins, wp-content / upload. Pertimbangkan untuk menggunakan basis data pada instalasi pengembangan proyek Anda kecuali Anda benar-benar melakukan pekerjaan berat.
Pengembangan: Periksa salinan Repo Anda yang berfungsi di lingkungan WP Anda. Siapkan Hook POST-COMMIT di SVN untuk memperbarui repo ini di setiap komit. Ini akan tetap disinkronkan. (Anggap saja integrasi terus menerus orang miskin.)
Produksi: Lihat tag versi bernama yang mewakili kandidat akhir. Ketika Anda perlu menggunakan versi baru, alihkan tag dan perbarui repo.
sumber
Kami baru-baru ini menemukan RAMP . Catatan: ini hanya bagian dari keseluruhan proses, tetapi menyinkronkan basis data antar server mungkin adalah bagian yang paling sulit.
sumber
Saya melakukan ini dengan git dan lincah, pastikan Anda menggunakan repo pribadi.
Pilihan 1.
Satu-satunya masalah adalah config.php, yang bisa Anda katakan pada git untuk diabaikan saat ditekan atau sebelum init.
Gunakan
.gitignore
ataugit update-index --assume-unchanged config.php
(baca sedikit tentang perintah yang diasumsikan tidak berubah sebelum menggunakannya)Opsi 2.
Gunakan persyaratan dalam config.php yang memeriksa url dan menerapkan kredensial yang benar, di sepanjang baris "jika server url = dev lalu gunakan kredensial A, selain itu gunakan kredensial B", dll.
Markus menjelaskan hal ini dengan lebih baik, http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
ps. Anda juga dapat server file langsung dari repo jarak jauh daripada memiliki "file server" tradisional. (video yang sangat membosankan yang saya buat tentang ini http://www.youtube.com/watch?v=8ZEiFi4thDI )
sumber