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
dan develop
(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 mengabaikan wp-config.php
, dan menyimpan versi pementasan dan produksi sebagai file dengan nama yang berbeda. Kemudian pada setiap server, saya symlink misalnya wp-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!