Saya sedang mencari ide alur kerja yang ramping dan efisien untuk bekerja dengan Wordpress.
- Ingin memiliki lingkungan git di server saya sendiri secara internal, tidak menggunakan Github untuk menangani repo.
- Pembuatan subdomain secara otomatis pada pembuatan cabang git (development.domain.com, ryan.development.domain.com) - Mungkin beberapa kait skrip shell akan ideal untuk ini.
- Phing PHP / Shell script Penanganan migrasi db (sesuatu seperti ini http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) untuk menangani penggantian basis data serial setelah mendorong
Operasi mungkin akan berjalan seperti ini:
- mendapatkan versi wordpress terbaru saat ini dan cabang keluar, nama cabang mendapat entri subdomain (branchdevelopment.domain.com)
- submodule tema yang Anda inginkan jika tersedia (saya ingin membuat git repo saya sendiri untuk ini, karena saya menggunakan tesis saya ingin memiliki setup git repo tesis kosong untuk mengambil dari internal pada server yang sudah dibuat)
- checkout dan lakukan perubahan, ulasan klien, setelah didorong untuk aktif, skrip database kemudian akan secara otomatis mengubah nilai url berseri dari localhost (atau subdomain) ke url langsung
Apakah ini mungkin? Saya pernah mendengar Capistrano juga bagus untuk digunakan dengan ini tetapi tidak yakin bagaimana Capistrano sepenuhnya bekerja.
Saya menjalankan sekitar 200 situs di server saya sendiri dan ingin mulai mengimplementasikan situs-situs ini ke dalam lingkungan alur kerja git yang kuat sehingga saya dapat merampingkan pekerjaan saya dengan lebih baik. Sampai sekarang, pada dasarnya saya mengunduh gambar situs dan mengerjakannya secara lokal lalu mengunggah perubahan kembali ke server. Ini sangat membosankan di zaman sekarang ini.
Apakah ada yang punya solusi mengenai jenis alur kerja ini / saya telah bekerja dengan ini di masa lalu? Jika demikian, beberapa sumber / jawaban akan sangat dihargai.
Jawaban:
Pertanyaan Umum dijawab
Hal pertama yang saya lakukan adalah memeriksa komposer dan cara kerjanya dengan WordPress , yang merupakan proyek oleh Andrey "@Rarst" Savchenko .
Ini adalah sesuatu yang di luar jangkauan untuk situs ini. Entah meminta bantuan di StackOverflow atau bertanya di hoster Anda. Beberapa hosters tidak mengizinkan untuk mengedit entri ini sendiri.
Saya akan menyiapkan instalasi multisite / jaringan. Ini memungkinkan untuk mengelola semua tabel dengan mudah, menjaga pengguna di tempat sentral, dll.
WP Gear - sebuah proyek oleh Robert "@Wyck" Ellison - memiliki daftar skrip build alternatif. Termasuk WordPhing yang ditulis sendiri. @TomJNowells /Interconnect.it naskah sejauh ini tidak ada dalam daftar itu.
Pertanyaan Operasi dijawab
Tidak yakin mengapa seseorang ingin melakukan ini: Subdomain untuk setiap cabang. Ketika Anda melihat repositori WordPress GitHub yang disinkronkan dan daftar cabang , maka Anda akan melihat bahwa setiap cabang diberi nama
X.Y-branch
. Jadi subdomain Anda akan dinamai misalnya3.6-branch
. Saya tidak yakin apakah subdomain diizinkan untuk memulai dengan angka (seharusnya, tetapi tanyakan pada hoster Anda) dan kemudian ada masalah bahwa Anda akan mendapatkan sub-subdomain yang diberi nama6-branch
, yang memiliki sub-subdomain yang bernama3
dan satu lagi bernama2
. Dan tebak memasangkan cabang versi 2- dan 3 di subdomain bukan hal yang ingin Anda capai.Singkatnya: Hanya
checkout 3.6-branch
jika Anda perlu berganti cabang.Thomas "@toscho" Scholz telah menulis plugin yang bagus yang memungkinkan kami menggunakan subdomain untuk menangani tema di luar direktori WordPress. Anda dapat menemukannya di jawaban ini serta dalam satu ini . Bahkan pembaruan otomatis akan berfungsi untuk tema sejak WP 3.6.
Anda dapat melakukan hal yang sama untuk MU-Plugins dan Plugins hanya dengan mengatur konstanta berikut dalam
wp-config.php
file Anda :Sekarang cukup letakkan semua plugin dan tema Anda di bawah kontrol versi dan dorong ke server Anda. Anda dapat dengan mudah menyediakan semuanya menggunakan plugins mu atau plugins default yang mengaktifkan jaringan.
Jika skrip / plugin Toms tidak membantu Anda sejauh ini, maka diberitahukan bahwa ia menerima permintaan tarik di GitHub .
sumber
Tidak ada waktu untuk menulis jawaban fitur lengkap (saya tahu agak lumpuh) tetapi mungkin layak untuk dibagikan (saya mungkin mengedit ini karena saya juga merencanakan posting blog di sini):
Saya mengkloning Wordpress dari Github (Anda bahkan dapat melakukan ini untuk source tree dari sini: tierra / wordpress )
Saya kemudian menggunakannya sebagai melalui gabungan subtree di repo situs saya sendiri (saya bahkan menabrak bug di git tapi solusinya ada di sini: -X subtree = ... ).
Itu berarti Anda dapat memiliki beberapa setup WP berbasis trunk / versi yang Anda dapat sepenuhnya hack termasuk. tema dan plugin.
Karena ini adalah satu repositori independen (lokal), Anda dapat mendorong ini melalui ssh ke repositori lain, misalnya satu:
Ini diuraikan dalam Alur kerja Git yang berfokus pada web (Nov 2008; oleh Joe Maller) .
Jika Anda memiliki pengalih konfigurasi yang memilih beton
wp-config.php
berdasarkan sistem yang sedang berjalan, Anda bahkan dapat mengonfigurasi semua host secara terpusat (pengembangan, siaran langsung, pentas, teman, ...) di dalam repo.Perubahan hulu di WP yang Anda lakukan hanya mengambil dan menggabungkan subtree.
Plugin yang baru saja Anda perbarui dan komit.
Penempatan adalah hal yang sederhana
$ git push remote
.Jalankan backup harian pada host jarak jauh untuk git repos, database dan file yang diunggah dan ini murah, ramah pengembang dan fleksibel. Ini berfungsi baik untuk pengaturan pengembang tunggal maupun untuk tim kecil karena semua orang dapat checkout dari repro telanjang di remote.
Ada beberapa peringatan:
git accept-theirs
dangit accept-theirs
sangat membantu jika ada perubahan garis dasar yang saling bertentangan, Anda jelas tahu mana yang Anda sukai. Anda menemukan di sini: Alat sederhana untuk 'menerima milik mereka' atau 'menerima milik saya' pada seluruh file menggunakan gitSekarang dengan daftar periksa Anda dan pengaturan seperti diuraikan di atas:
Github hanya menangani repo hulu di sini (Wordpress), bukan milik Anda sendiri.
Pengaturan sebagaimana diuraikan adalah pendekatan modular dengan satu repo per situs. Ini dapat menangani sebanyak mungkin host pengembangan yang Anda inginkan, mungkin sama-sama berfungsi baik dengan instalasi multi-situs untuk menangani beberapa domain, tetapi itu akan dihitung sebagai satu pengaturan wordpress dalam pendekatan ini.
Ini tidak diperlukan di sini karena hanya kode di bawah kontrol versi, database independen antara pengembangan (, pementasan) dan produksi sebagaimana mestinya.
Anda mungkin sedang mencari skrip instal yang melakukan migrasi domain dengan benar, tetapi bahkan dengan kode yang lebih baik (yang tersedia) yang berhubungan dengan pencarian dan penggantian data serial, dalam pengaturan ini biasanya tidak diperlukan karena Anda hanya mendorong perubahan untuk hidup , untuk kasus uji, Anda dapat dengan cepat membuat konten dalam database pengembangan, yang biasanya merupakan masalah terkecil (dari pengalaman praktis saya, pengalaman Anda mungkin berbeda, tetapi saya juga menyarankan untuk menyimpan topik terkait migrasi-database seperti pada pertanyaan tentang itu) miliki di sini di situs - tetapi tanyakan kepada mereka).
Saya tidak bisa membayangkan bagaimana situs tersebut akan berada di bawah lingkungan alur kerja string git. Mungkin skrip konfigurasi dan data konfigurasi yang Anda kelola di sini akan disimpan di bawah kontrol versi git. Itu bisa masuk akal. Kalau tidak, dengan banyaknya situs saya pikir tidak masuk akal sama sekali untuk menyimpan semuanya dalam satu git repo. Mungkin bukan salah satu dari itu karena apa yang saya uraikan di atas adalah untuk situs yang Anda kembangkan (termasuk kode inti WP), bukan hanya untuk tugas pemasangan. Jadi, Anda mungkin perlu pertama-tama membuat sendiri beberapa peta kecil dari 200 situs tersebut dan bagaimana mereka berinteraksi satu sama lain dan dari paket mana (WP core, Plugins, Themes) situs-situs tersebut terdiri. Hal pertama yang bisa dilakukan adalah membuat spreadsheet / matriks dan memasukkan semua situs.
Anda kemudian dapat menyimpannya sebagai CSV, meletakkannya di bawah kontrol versi dan membuat skrip penerapan melakukan pekerjaan berdasarkan file itu.
Dan jika saya telah mempelajari sesuatu dengan tugas otomatis: Ikuti filosofi Unix, gunakan alat yang ada dan berfungsi dengan baik (lebih baik menghabiskan setengah hari membaca tentang beberapa perintah kemudian mencoba mencari alternatif karena untuk sebagian besar pekerjaan, masalahnya adalah dipecahkan) dan fokus pada alat baris perintah. Mereka yang paling kuat.
sumber