Saya melakukan pengembangan pada satu kotak dan menggunakan yang kedua untuk produksi. Saat ini saya hanya membuang database dan kemudian mencari ganti untuk perubahan URL; kemudian salin file dan impor SQL baru.
Apakah ada cara yang lebih baik untuk melakukan ini?
customization
deployment
production
staging
Ryan Gibbons
sumber
sumber
Jawaban:
@ Insanity5902 : Penempatan situs WordPress dari satu kotak ke kotak lainnya telah menjadi PITA sejak hari pertama saya mulai bekerja dengan WordPress. (Sejujurnya itu adalah PITA dengan Drupal selama 2 tahun sebelum saya mulai dengan WordPress sehingga masalahnya tentu tidak hanya dengan WordPress.)
Itu mengganggu saya bahwa setiap kali saya harus memindahkan situs saya harus menghabiskan banyak upaya duplikat dan itu membuat saya dari penggelaran untuk menguji sesering yang saya inginkan. Jadi sekitar 4-6 bulan yang lalu saya mulai bekerja pada sebuah plugin untuk menyelesaikan masalah migrasi hosting dan saya menyebutkan ide-ide saya di forum WP Tavern .
Maju cepat untuk hari ini dan saya sudah cukup berhasil dan saya dengan mudah menyebutnya " WP Migrasi Webhosts ." Meskipun plugin ini masih sangat banyak beta (mungkin bahkan alpha) diberikan pertanyaan Anda, saya pikir saya siap untuk membiarkan orang mulai menggedor itu.
Kasus penggunaan yang dibayangkan adalah:
Anda dapat mengunduh plugin dari situs web saya dan unzip ke direktori plugins Anda (jika Anda tidak tahu bagaimana melakukan ini maka plugin ini bukan untuk Anda karena memerlukan seseorang yang tahu apa yang mereka lakukan untuk menggunakannya.) Saya akan jaga plugin ini online sampai saya merilisnya ke WordPress.org dan setelah itu Anda harus mencarinya di sana.
Untuk menggunakannya Anda mengambil pendekatan yang berbeda dalam Anda
wp-config.php
yang normal dengan komentar dari empat (4) mendefinisikanDB_NAME
,DB_USER
,DB_PASSWORD
danDB_HOST
dan malah mendaftarkan default untuk webhosts dan kemudian mendaftar info tentang masing-masing hosting sendiri. Inilah yangwp-config.php
terlihat seperti segmen tersebut (perhatikan bagian pertama adalah kode yang tidak dibutuhkan yang dikomentari dan juga perhatikan bahwa saya mengatur file host saya di mesin lokal saya dengan.dev
domain tingkat atas yang tidak dapat dirutekan untuk membuat pengembangan sehari-hari lebih mudah. Di Mac, VirtualHostX membuat ini mudah):Semoga ini (sebagian besar) cukup jelas. Saya mencoba untuk membuat kode sebersih yang saya bisa tapi sayangnya itu memerlukan dua
require_once()
baris samar sebelum dan sesudah blok kode pendaftaran hosting karena tidak ada cara bagi saya untuk " menghubungkan " WordPress sebelumwp-config.php
dipanggil.Setelah memperbarui, Anda
wp-config.php
cukup menggunakan pintasan URLwp-migrate-webhosts
untuk membuka layar admin seperti:Di atas akan membawa Anda ke layar admin seperti berikut yang memiliki sedikit adil deskripsi teks dan memungkinkan Anda untuk bermigrasi DARI salah satu domain hosting lain dengan satu klik setelah memilih domain untuk bermigrasi dari ( Catatan : contoh ini menunjukkan akan BAWAH dari test / tahap / server hidup untuk pembangunan daerah tapi yakinlah itu dapat bermigrasi ke setiap domain di mana itu terjadi berada. ini juga berarti plugin akan menjadi besar untuk mengambil situs hidup yang ada dan cepat mendapatkan lingkungan pengembangan lokal yang bekerja! ):
Jika tidak jelas " migrasi " dalam konteks ini berarti memperbarui semua referensi dalam database saat ini agar sesuai untuk hosting yang saat ini didefinisikan (dan " saat ini " diendus dengan memeriksa
$_SERVER['SERVER_NAME']
.)Yang keren tentang plugin ini adalah mengimplementasikan beberapa migrasi dasar tetapi siapa pun dapat mengaitkannya dan melakukan migrasi mereka sendiri . Misalnya, jika Anda menambahkan plugin galeri yang menyimpan path lengkap ke gambar dalam database, Anda bisa mengaitkan
migrate_webhosts
tindakan yang akan melewati " dari " webhost dan " ke " webhost masing-masing sebagai array metadata dan Anda akan diizinkan untuk melakukan apa pun yang perlu Anda lakukan dalam database menggunakan SQL atau fungsi API WordPress yang berlaku untuk melakukan migrasi. Ya, ada di antara kita yang bisa melakukan ini tanpa plugin, tetapi tanpa plugin saya menemukan bahwa menulis semua kode yang dibutuhkan lebih banyak upaya daripada nilainya. Dengan plugin ini, lebih mudah untuk menulis kait kecil ini dan menyelesaikannya.Anda juga dapat menemukan migrasi saya gagal dalam kasus tepi yang belum saya uji dan mungkin Anda dapat membantu saya meningkatkan plugin? Siapa pun yang ingin dapat mengirim email kepada saya melalui akun gmail saya (alias saya adalah "mikeschinkel.")
Juga, plugin dirancang untuk menerima mendefinisikan pengguna metadata hosting selain yang mengakui seperti
database
,user
,password
,host
,domain
dll Contoh sempurna mungkingooglemaps_apikey
di mana Anda dapat menyimpan kunci API yang berbeda untuk setiap domain yang Google Map Anda kebutuhan Plugin untuk beroperasi dengan benar (siapa di antara Anda yang telah menggunakan plugin Google Maps belum menyebarkan aplikasi ke server langsung dan lupa mengubah kode ke kunci API yang benar? Ayo, jujur ... :) Dengan plugin ini, sebuahgooglemaps_apikey
elemen dalam array register_webhost () Anda dan custommigrate_webhosts
hook kecil Anda dapat secara efektif menghilangkannya sebagai masalah!Nah itu saja. Saya meluncurkan plugin ini di sini di Pertukaran Jawab WordPress karena pertanyaan @ Insanity5902 yang memicunya. Beri tahu saya jika ini membantu, di sini jika perlu, atau melalui email jika tidak.
PS Jika Anda memutuskan untuk menggunakan ini, ingat ini alfa / beta dan itu artinya akan berubah jadi bersiaplah untuk beberapa operasi kecil jika Anda ingin menggunakannya sekarang dan kemudian gunakan versi yang dirilis setelah dikalahkan oleh banyak tangan.
PPS Apa tujuan saya dengan ini? Saya senang melihat ini bermigrasi ke inti WordPress sehingga semua orang akan memiliki akses ke sana. Tetapi sebelum itu bahkan dapat dianggap banyak orang harus tertarik menggunakannya untuk memastikan itu benar-benar memecahkan lebih banyak masalah maka berpotensi menciptakan. Jadi, jika Anda menyukai ide itu maka gunakanlah dan bantu saya mendapatkan momentum dengannya untuk akhirnya dimasukkan ke dalam inti WordPress.
sumber
Jika memungkinkan, saya mengatur
WP_HOME
danWP_SITEURL
masukwp-config.php
. Ini, dikombinasikan dengan dump basis data dan impor, adalah solusi paling sederhana dari semua yang saya kenal.http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php
sumber
Retas favorit saya; tambahkan pengaturan ke Anda
/etc/hosts
untuk membuat titik produksi domain ke kotak pengembangan Anda, tepat di mesin Anda. Untuk menyebarkan ke produksi Anda rsync semua file dan mendorong database.Risiko strategi ini jelas; Anda mungkin membingungkan lingkungan pengembangan Anda dengan lingkungan produksi Anda.
Ini masih merupakan perbaikan yang mudah.
sumber
Saya menginginkan sesuatu yang serupa ketika saya bermigrasi ke WP beberapa bulan lalu, jadi saya menulis skrip shell yang cukup sederhana yang menggunakan rsync dan mysqldump melalui ssh:
http://snarfed.org/sync_wordpress
Ini tidak canggih atau berbasis web, tapi saya senang dengan itu.
sumber
WP Engine adalah layanan baru yang menawarkan "Pementasan Sekali Klik":
Sepertinya cara yang sangat mudah untuk dengan cepat beralih dari pengembangan ke produksi, terutama dengan situs yang sudah ada.
sumber
Duplikator Plugin: Ini adalah plugin yang telah saya kerjakan. Saat ini masih dalam versi beta tetapi menyelesaikan pekerjaan untuk sebagian besar situs. Saat ini ditargetkan pada pemasangan WordPress yang lebih kecil. http://wordpress.org/extend/plugins/duplicator/
Sumber daya: Sumber daya tambahan untuk plugin dapat ditemukan di sini: http://lifeinthegrid.com/duplicator/
Komunitas: Beri tahu kami tentang kesuksesan Anda atau masalah apa pun yang mungkin Anda hadapi! Dalam upaya untuk lebih mudah mengelola berbagai utas, harap kirim masalah ke forum plugin WordPress.org. Tolong jangan memposting data logging dari plugin ke forum online. Data logging dapat dikirimkan ke situs dukungan kami.
sumber
Anda mungkin melihat produk dari iThemes, yang disebut BackUpBuddy . Saya hanya menggunakannya dua kali, setiap kali memiliki satu atau dua halangan, tetapi secara keseluruhan terlihat menjanjikan.
sumber
Saya pribadi menangani masalah ini dengan proyek saya di Github, yang disebut Autopress . Saya belum memiliki solusi yang sempurna, tetapi saya semakin dekat, terutama dengan plugin wpstage dari orang-orang wpengine.
sumber
Ini terlihat menjanjikan. Kami sedang mengerjakan beberapa skrip untuk menangani migrasi beberapa data, misalnya opsi-wp, mengubah jalur di db, penyalinan melalui media.
Masalah yang saya miliki adalah bahwa situs langsung terus tumbuh sementara yang lain sedang dalam pengembangan. Satu situs tempat kami bekerja memiliki 20 posting sehari dan lebih dari 3.000 komentar per hari. Terlalu banyak data untuk dipindahkan dengan phpmyadmin atau melalui baris perintah. Juga, memindahkan data selalu menyebabkan masalah UTF karena beberapa alasan.
Juga, sekarang sepertinya pilihan menu disimpan dalam DB, saya punya lebih banyak untuk berurusan dengan.
Saya memeriksa semua kode saya ke SVN dan menyebarkan kode melalui FTP dari server (Beanstalk). Ini tidak membuat perubahan ke DB untuk saya atau mengaktifkan plugin baru.
Rencana saya sekarang adalah membuat file manifes sementara saya mengembangkan untuk melakukan semua perubahan saya ke situs langsung.
Misalnya file akan memiliki baris yang dapat dibaca manusia
Itu akan termasuk plugin untuk mengaktifkan, opsi-wp untuk pindah, gambar untuk dipindahkan, halaman untuk dipindahkan. Kemudian plugin saya, akan mendeteksi file manifes dan membuat semua perubahan pada situs pementasan.
Setelah saya mengujinya dan yakin saya mendapatkan semuanya, saya bisa yakin itu akan berhasil pada produksi.
Plugin ini masih hanya sebuah ide, tetapi saya memiliki beberapa kode yang ditulis untuk itu.
Juga, jika Anda ingin membuat perubahan hanya URL di DB Anda, Anda dapat menggunakan SQL berikut.
ganti saja
$old$
dengan domain lama dan$new$
dengan yang barusumber
Dua proyek Google Summer of Code yang memiliki tujuan serupa:
sumber
Saya menggunakan perintah ekspor subversion untuk menginstal file WordPress (http://core.svn.wordpress.org/tags//) serta semua plugin di repositori (http://plugins.svn.wordpress.org//tags //), lalu cukup zip tema dan plugin kustom dan instal secara normal. Setelah semua itu berjalan dan berjalan tanpa konten, saya mengekspor tes DB dan melakukan pencarian / ganti untuk URL DAN filepath (disimpan untuk media) dan impor ke dalam database kosong, kemudian cukup beralih info database di wp-config .php. Biasanya saya membutuhkan waktu sekitar 10 - 20 menit.
sumber
Biasanya saya login ke phpMyadmin mengunggah database dan mengedit konten wp_options> siteurl dan wp_options> rumah ke domain yang diharapkan. Jika Anda perlu memperbarui URL dalam konten posting dan halaman Anda, Anda dapat melakukan pencarian / ganti untuk URL dan jalur media / unggah pada file .SQL sebelum mengunggah. Ini pekerjaan cepat.
sumber
Meskipun tidak ada kekurangan solusi yang baik di sini, dalam semangat berbagi saya pikir saya akan menambahkan skrip bash deploy saya ke tumpukan: https://github.com/jplew/SyncDB
Skrip ini berfungsi baik dengan WP-Skeleton dari Mark Jaquith, dan memanfaatkan
mysqldump
,git
danrsync
untuk menyinkronkan seluruh situs Anda — basis data, kode, dan media — dalam dua langkah mudah:sumber
Saya telah menggunakan http://wordpress.org/plugins/wp-clone-by-wp-academy/ . Ini bekerja dengan baik!
Hanya 3 langkah:
Ini menyesuaikan semua URL secara otomatis - termasuk penggantian string serial - jadi tidak ada risiko kehilangan konfigurasi widget, dll.
Satu-satunya masalah yang saya miliki adalah dengan beberapa situs web dengan basis data yang lebih besar (~ 300MB), yang menyebabkan waktu eksekusi skrip PHP selama impor cadangan situs.
sumber
Pada 2017 di sini adalah dua cara terbaik yang saya temukan untuk menangani transfer database WordPress dari pengembangan ke produksi.
WP Migrasikan DB Pro / WP Sync DB
https://wordpress.org/plugins/wp-migrate-db/
Plugin WordPress ini memungkinkan Anda mendorong, menarik, dan menyinkronkan tabel database antara instalasi WordPress. Ini jauh lebih baik daripada mencari / mengganti karena berbagai alasan karena ini:
Saya penggemar dibayar untuk pekerjaan yang saya lakukan, jadi saya sarankan Anda mendukung Tuan Brad Touesnard dan membeli salinan lisensi dari barang asli. WP Sync DB adalah tiruan dan sebagai hasilnya selalu ketinggalan. Dengan plugin ini prosesnya mati sederhana:
Pencarian & Ganti Basis Data untuk Database WordPress oleh InterconnectIT
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
Alat gratis ini bukan plugin, tetapi diinstal di direktori root Anda dari instalasi produksi WordPress Anda. Ini tidak sebagus WP Migrasi DB Pro karena memerlukan beberapa langkah manual, tetapi tetap saja ini merupakan opsi bagus yang secara konsisten berfungsi. Saat menggunakan pendekatan ini, prosesnya terlihat seperti ini:
Anda dapat menggunakan pendekatan yang lebih cepat, tetapi melibatkan downtime untuk situs produksi Anda yang menurut saya tidak dapat diterima. Itu sebabnya kami menyebutnya produksi, kan?
sumber
karena saya menjalankan situs saya di IIS (saya juga menjalankan asp.net, jadi saya perlu windows) Saya menggunakan WebPI dari Msft untuk menginstal contoh baru, kemudian saya menyalin template dan menggunakan impor / ekspor untuk mentransfer data.
Itu tidak sempurna tetapi semuanya membutuhkan waktu kurang dari satu jam.
Jelas akan menyenangkan untuk memiliki solusi satu-klik, tetapi inilah yang saya temukan paling mudah bagi saya.
sumber
Solusi pembayaran lain: kerangka kerja tema Xtreme One dirilis versi 1.2 dengan Xtreme Backup yang memungkinkan Anda untuk "mengekspor atau mengimpor pengaturan Childthemes, Layout, atau Widget Anda dengan semua pengaturan / konten sebagai file XML."
sumber
Seorang rekan kerja menemukan ini. Konsep yang menarik, meskipun tidak bekerja lintas server sepertinya. Saya masih menjelajahinya, tetapi sepertinya itu bisa bekerja baik untuk contoh pementasan
http://code.google.com/p/deploymint/
sumber
Ini mungkin belum ada ketika Anda mengajukan pertanyaan, tetapi saya telah menggunakan layanan yang disebut Blogvault selama beberapa bulan dan telah melakukan ini dengan sempurna. Saya mungkin telah melakukan lebih dari 50 migrasi (melintasi domain, sub-domain, dan host web), bukan halangan dan tidak membutuhkan waktu sama sekali.
Ini adalah layanan berbayar (per domain / bulan), tetapi tidak terlalu banyak.
sumber
RAMP adalah plugin penyebaran konten baru dari Crowd Favorite, dan terlihat sangat apik. Ini $ 250, jadi saya belum mencobanya. Mungkin hanya membayar untuk dirinya sendiri dalam jumlah waktu yang dihemat, jadi saya mempertimbangkannya.
Manfaat besar yang dimilikinya atas sebagian besar metode lain yang disebutkan, adalah bahwa ia dapat secara cerdas menggabungkan posting, komentar, dll. Ini bukan hanya mengimpor mysqldump, itu lebih seperti kontrol sumber untuk database. Misalnya, ketika menggunakan pos, itu juga akan menggunakan tag untuk pos itu, jika belum ada dalam produksi.
sumber
Biarkan saya memberikan salah satu favorit saya :-)
... dan kemudian Anda bekerja dengan cara Anda dari sana. DB_NAME, DB_USER ... table_prefix. Secara pribadi saya mengaktifkan ALTERNATE_WP_CRON di lokal (untuk menghindari beberapa peringatan yang mengganggu ), WP_DEBUG dari keduanya (jika Anda bukan pengembang) atau live-only (jika Anda), yang lain
ini_set('display_errors', '0');
untuk live juga bisa melakukan yang baik, semut terakhir, seperti yang disebutkan di atas: WP_HOME dan WP_SITEURL ke masing-masing url lokal / aktual.Cukup banyak, tidak ada yang tersisa di atas WordPress klasik 'Itu saja, berhenti mengedit!' baris...
192.168. bagian memungkinkan Anda untuk melakukan beberapa pengujian lokal (yaitu dari bantalan atau ponsel) dalam jaringan lokal Anda)
$ GLOBALS ['is_local'] dapat berguna dalam pengembangan tema Anda, juga, untuk beberapa output debug tambahan, dll ...
sumber
WP_LOCAL_DEV
konstanta untuk mencapai sesuatu yang serupaSaya telah menggunakan plugin backupbuddy untuk sementara waktu sekarang. Ini memungkinkan Anda membuat cadangan database dan semua file, mengunduhnya sebagai zip atau mengirimnya langsung ke server lain melalui FTP. URL juga menemukan dan mengganti untuk Anda. Biasanya saya membutuhkan waktu sekitar 5 menit untuk menjalani seluruh proses. Dan karena semua file di-zip, proses upload / unduh jauh lebih cepat. Dan tidak, saya tidak bekerja untuk mereka, tetapi plugin ini benar-benar membuat seluruh proses ini lebih mudah.
sumber
Alat lain yang berguna untuk menangani migrasi server untuk situs adalah WordPress CLI, artikel ini memiliki ikhtisar yang baik tentang apa yang dapat dilakukannya tetapi secara khusus bagian untuk "Pencarian dan Ganti" berguna untuk menemukan semua referensi ke url situs dev lama / dev :
Manajemen WordPress Tingkat Lanjut Dengan WP-CLI
sumber
Ini adalah cara termudah yang pernah ada: https://themes.artbees.net/docs/website-migration/
Hanya perlu dua klik. Satu untuk ekspor, satu untuk impor.
Itu mungkin dengan menggunakan plugin WP Migrasi Semua dalam satu. Tautan di atas menunjukkan cara menggunakannya.
sumber
Jika Anda mencoba mencapai sinkronisasi berkelanjutan, saya sarankan menggunakan rsync bersama dengan pekerjaan cron kustom untuk menulis ulang url atau data spesifik situs.
sumber
Setelah mengikuti jawaban ini untuk sementara waktu saya telah membuat plugin kecil saya sendiri - Pitta Migration . Alasannya adalah:
WP_HOME
danWP_SITEURL
pilihanwp_options
URL yang cocok - yang mencakup ketika plugin / tema mengabaikan inisumber
Menurut pendapat saya cara termudah yang saya ikuti adalah transfer manual .. Cukup salin folder wp-content dan file wp-config.php ke host baru. Ekspor database dari host lama dan impor dalam database baru host baru ..
Dalam database host baru, buka tabel opsi-wp dan di sana ubah URL situs dan URL Blog ke alamat host baru dari host lama. suka dari http: // localhost / wp ke http://example.com
Sekarang di file wp-config cukup ubah informasi database dan pengguna dengan info host baru.
Sekarang login ke admin-wp baru dan pergi ke pengaturan dan menyimpan permalink.
Kamu selesai. Saya pikir ini sederhana tanpa menggunakan plugin apa pun.
Saya telah mencoba berbagai jenis plugin dan semuanya memiliki banyak masalah ..
Jadi saya lebih suka transfer manual sederhana ini yang menurut saya lebih mudah.
sumber