Cara: Memindahkan Instalasi WordPress dengan Mudah dari Pengembangan ke Produksi?

199

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?

Ryan Gibbons
sumber
2
Bagi para pendatang baru dalam qeustion. 1 Tahun kemudian dan saya masih menggunakan plugin @MikeSchinkel. Dia memiliki 0,7 bahwa saya telah pindah pasangan menginstal tanpa masalah. mikeschinkel.com/downloads/wp-migrate-webhosts-0.7.zip
Ryan Gibbons
Berikut ini adalah skrip bebas plugin yang telah saya rilis yang sangat membantu proses saya. philipdowner.com/2012/01/…
Philip Downer
6
Hari ini, ada sebuah plugin bernama Duplicator: wordpress.org/extend/plugins/duplicator Ini benar-benar proses tiga langkah dan berfungsi seperti pesona. Sudah menggunakan ini beberapa kali untuk menyebarkan situs web dari lingkungan pengujian ke situs langsung.
Matthias

Jawaban:

122

@ 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:

  1. pertama pengembang menangani mengunggah semua tema dan file plugin yang diubah melalui FTP,
  2. kemudian mengunggah pengembangan database MySQL ke server pengujian secara keseluruhan dan akhirnya
  3. kemudian jalankan plugin untuk memigrasi referensi dari domain sebelumnya ke yang baru. (Plugin saya tidak mencoba untuk menyelesaikan penggabungan bidang database baru atau tabel dengan data langsung; ITU adalah masalah yang jauh lebih besar yang saya tidak yakin bagaimana cara mengatasinya.)

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.phpyang normal dengan komentar dari empat (4) mendefinisikan DB_NAME, DB_USER, DB_PASSWORDdan DB_HOSTdan malah mendaftarkan default untuk webhosts dan kemudian mendaftar info tentang masing-masing hosting sendiri. Inilah yang wp-config.phpterlihat 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 .devdomain tingkat atas yang tidak dapat dirutekan untuk membuat pengembangan sehari-hari lebih mudah. Di Mac, VirtualHostX membuat ini mudah):

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
//define('DB_NAME', 'wp30');

/** MySQL database username */
//define('DB_USER', 'wp30_anon');

/** MySQL database password */
//define('DB_PASSWORD', '12345');

/** MySQL hostname */
//define('DB_HOST', '127.0.0.1:3306');

require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php');
register_webhost_defaults(array(
 'database'  => 'example_db',
 'user'      => 'example_user',
 'password'  => '12345',
 'host'      => 'localhost',
 'sitepath'  => '',        // '' if WordPress is installed in the root
));
register_webhost('dev',array(
 'name'      => 'Example Local Development',
 'host'      => '127.0.0.1:3306',
 'domain'    => 'example.dev',
 'rootdir'   => '/Users/mikeschinkel/Sites/example/trunk',
));
register_webhost('test',array(
 'name'      => 'Example Test Server',
 'rootdir'   => '/home/example/public_html/test',
 'domain'    => 'test.example.com',
));
register_webhost('stage',array(
 'name'      => 'Example Staging Server',
 'rootdir'   => '/home/example/public_html/stage',
 'domain'    => 'stage.example.com',
));
register_webhost('live',array(
 'name'      => 'Example Live Site',
 'rootdir'   => '/home/example/public_html/',
 'password'  => '%asd59kar12*fr',
 'domain'    => 'www.example.com',
));
require_once(ABSPATH . 'wp-content/plugins/wp-migrate-webhosts/set-webhost.php');

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 sebelum wp-config.phpdipanggil.

Setelah memperbarui, Anda wp-config.phpcukup menggunakan pintasan URL wp-migrate-webhostsuntuk membuka layar admin seperti:

http://example.com/wp-migrate-webhosts

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! ):

masukkan deskripsi gambar di sini

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_webhoststindakan 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, domaindll Contoh sempurna mungkin googlemaps_apikeydi 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, sebuah googlemaps_apikeyelemen dalam array register_webhost () Anda dan custom migrate_webhostshook 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.

MikeSchinkel
sumber
Solusi yang bagus Saya punya beberapa pertanyaan 1) Apakah Anda masih perlu mendefinisikan WP_SITEURL untuk masuk ke area admin? 2) Apakah alat yang dipamerkan hanya untuk Pengguna Administrator? (tidak yakin apakah bagian Alat ditampilkan untuk non-admin)
Ryan Gibbons
Hai @ Insanity5902: 1) Tidak perlu mengatur WP_SITEURL, plugin ini cocok untuk Anda. Anda sebenarnya sedang mengaturnya saat "mendaftarkan" sebuah "domain" dan "sitepath" untuk hosting. Dalam operasi WordPress normal, WP_SITEURL diharuskan untuk diatur dalam kode atau basis data untuk memastikan tidak ada orang yang memalsukan URL dan melakukan hal-hal jahat karena pada nilai yang tidak terduga dalam $ _SERVER ['SERVER_NAME']. Plugin WP Migrate Websites menetapkan WP_SITEURL secara tidak langsung berdasarkan $ _SERVER ['SERVER_NAME'] tetapi itu HANYA akan melakukannya jika domain saat ini cocok dengan salah satu domain yang telah Anda tetapkan dalam file wp-config.php Anda, tidak ada yang lain.
MikeSchinkel
2.) Pintasan URL yang saya sebutkan sebenarnya melakukan pengalihan ke konsol admin sehingga hanya untuk orang yang masuk ke admin. Saya tidak memiliki pemeriksaan khusus untuk administrator yang hanya ada di dalamnya. Saya tidak pernah menambahkan kemampuan ke plugin tetapi akan perlu untuk sepenuhnya meneliti bagaimana dalam beberapa minggu ke depan sehingga dapat bekerja pada itu selama bulan depan. Namun plugin ini tidak merusak; HANYA dapat bermigrasi ke domain saat ini dan prosesnya berulang sehingga bahkan jika non-admin masuk benar-benar tidak ada salahnya mereka bisa lakukan dengan itu, setidaknya bukan yang bisa saya bayangkan.
MikeSchinkel
1
/ wp-migrate-webhosts menghasilkan 404, dan / wp-admin menghasilkan 'kesalahan membangun koneksi database'
Steve
5
Jadi, bagaimana keadaan plugin ini? Kelihatannya luar biasa menarik tetapi saya ingin sesuatu yang matang dan baik. Posting ini adalah satu-satunya informasi yang dapat saya temukan di sana.
Kevin C.
35

Jika memungkinkan, saya mengatur WP_HOMEdan WP_SITEURLmasuk wp-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

Annika Backstrom
sumber
1
Kapan tidak mungkin untuk mengatur ini? Ini terdengar sedikit lebih sederhana daripada mengubah hal-hal di database.
jfklein
2
@ jfklein Saya hampir selalu bekerja dengan WordPress Network, yang tidak kompatibel dengan konstanta ini.
Annika Backstrom
1
Melakukan hal yang sama. Sayangnya, tidak semua tema menghargai ini. yaitu 'Tema Repsonsive' dari ThemeID. Mencari dump / all tables untuk ' localhost ' (atau apa pun yang Anda pilih nama lokal), terutama wp_options dan membuat pencarian & penggantian sering tidak dapat dihindari.
Frank Nocke
@FranKee Saya telah membuat plugin wordpress.org/plugins/pitta-migration yang menggunakan konstanta untuk memperbarui tabel wp_options yang harus mencakup sebagian besar tema dan plugin
icc97
@ icc97: Bagus. Akan melihatnya. PS: Gambar header yang bagus, gambar situasinya.
Frank Nocke
27

Retas favorit saya; tambahkan pengaturan ke Anda /etc/hostsuntuk 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.

Wietse Venema
sumber
5
Iya! Saya sangat senang saya bukan satu-satunya orang yang memikirkan hal itu! setiap perbedaan antara dev dan prod buruk. Menghapus perbedaan itu sama sekali jauh lebih baik daripada mencoba menyelesaikannya. Dan pengaturan ini tidak bekerja sama sekali. Satu bahkan dapat melakukan pengujian pada mesin virtual dengan file host modded jika diperlukan.
Alexander Bird
2
Saya suka metode ini, tapi bagaimana Anda menangani push / pull database?
Nenotlep
Adapun risiko membingungkan dev dengan prod, saya menggunakan plugin Chrome yang menampilkan alamat IP dari halaman web. Anda akan tahu bahwa Anda menggunakan lokal ketika 127.0.0.1
kosinix
9

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.

ryan
sumber
8

WP Engine adalah layanan baru yang menawarkan "Pementasan Sekali Klik":

WPEngine memiliki fitur eksklusif yang disebut "staging." Inilah cara kerjanya: Sebelum Anda membuat perubahan menakutkan ke blog Anda, klik tombol "snapshot". Kami membuat salinan lengkap dari blog Anda dan mengaturnya di area yang terpisah dan aman. Anda dapat bermain dengan apa pun yang Anda inginkan; tidak ada yang hidup. Hanya ketika Anda siap untuk membuatnya hidup barulah Anda menyentuh situs utama Anda.

Sepertinya cara yang sangat mudah untuk dengan cepat beralih dari pengembangan ke produksi, terutama dengan situs yang sudah ada.

Travis Northcutt
sumber
3
Itu memang pilihan yang sangat bagus dan akan bagus untuk banyak orang! Tentu saja itu tidak berfungsi untuk URL yang disematkan juga tidak membantu orang yang mengembangkan secara lokal sehingga mereka dapat menggunakan IDE dengan debugger. Sekarang jika WPEngine dapat membuat interaksi yang menggabungkan penyebaran lokal juga maka itu akan benar-benar menjadi sesuatu (Technosailor, Anda mendengarkan?)
MikeSchinkel
Setuju, itu akan menjadi tambahan yang fantastis.
Travis Northcutt
Fitur snapshot hanya menyalin dari produksi ke pementasan, bukan sebaliknya. Ini bagus untuk menguji perubahan, tetapi tidak akan membantu untuk digunakan untuk produksi.
sam
2
@ Sam sebenarnya, mereka baru saja mulai meluncurkan kemampuan untuk menyalin dari pementasan ke produksi. wpengine.com/2013/04/user-portal-v2-and-staging-to-produksi
Travis Northcutt
7

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.

Cory
sumber
6

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.

MikeK
sumber
5

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.

Vid Luther
sumber
Baru saja memeriksa skrip Anda. Bagus. Jika saya mengerti menginstal WP baru di server. Pertanyaannya di sini adalah bagaimana cara bermigrasi dari pengembangan ke produksi. Bisakah ini membantu?
Sruly
17
Apakah ini? github.com/vluther/Autopress Saya sarankan untuk membuat tautan di jawaban Anda sehingga orang-orang dapat mengklik langsung!
artlung
4
@ Mike Lee: Ya, Anda dapat memilih-up komentar. Lihat, saya membenarkan komentar artlung. Cari uparrow di hover di sebelah kiri komentar.
MikeSchinkel
Saya sedang mengerjakan cara untuk menjaga semuanya dalam kontrol versi, dan kemudian mendorong dari dev ke produksi. Saya sudah bisa melakukannya tanpa masalah untuk beberapa situs, tetapi masih ada beberapa penyesuaian yang perlu saya tangani.
Vid Luther
1
Tidak yakin apakah ini masalahnya, tetapi ada plugin WP Engine yang digunakan untuk migrasi situs di seluruh host. Ini disebut Snapshot ( Tautan langsung ).
joelhaus
5

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 baru

update wp_postmeta set meta_value = replace(meta_value, '$old$' , '$new$') ;
update wp_posts set post_content = replace(post_content, '$old$' , '$new$') ;
update wp_options set option_value = replace(option_value, '$old$' , '$new$') ;
Andrew
sumber
2
Sekedar catatan, panggilan sql saya dapat menghancurkan Anda data serial. s: 14: blogs.prod.com memiliki panjang kode 14. Setelah menjalankan kode, kita sekarang memiliki s: 14: dev.prod.com yang rusak. Harus s: 12: dev.prod.com gunakan dengan hati-hati.
Andrew
4

Dua proyek Google Summer of Code yang memiliki tujuan serupa:

Jan Fabry
sumber
Tidak terlihat seperti salah satu dari proyek-proyek ini berhasil?
icc97
3

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.

John P Bloch
sumber
3

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.

Alex Costa
sumber
3

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

SyncDB adalah skrip bash deploy yang dimaksudkan untuk menghilangkan kebosanan dalam menyinkronkan versi lokal dan jarak jauh dari situs Wordpress. Ini memungkinkan pengembang yang bekerja di lingkungan lokal (mis. MAMP) dengan cepat "mendorong" atau "menarik" perubahan ke atau dari server produksi mereka dengan perintah terminal tunggal.

Skrip ini berfungsi baik dengan WP-Skeleton dari Mark Jaquith, dan memanfaatkan mysqldump, gitdan rsyncuntuk menyinkronkan seluruh situs Anda — basis data, kode, dan media — dalam dua langkah mudah:

./syncdb
git push hub master
JP Lew
sumber
3

Saya telah menggunakan http://wordpress.org/plugins/wp-clone-by-wp-academy/ . Ini bekerja dengan baik!

Hanya 3 langkah:

  1. Instal plugin di kedua situs.
  2. Gunakan plugin untuk menghasilkan cadangan di situs lama.
  3. Ambil URL cadangan yang diberikannya dan tancapkan ke halaman plugin di situs baru, tekan go, dan migrasi Anda selesai hanya dalam beberapa detik!

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.

jmotes
sumber
3

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:

  • Mengekspor database Anda sebagai dump data MySQL (seperti phpMyAdmin)
  • Apakah menemukan dan mengganti URL dan jalur file
  • Menangani data serial
  • Memungkinkan Anda menyimpannya di komputer Anda sebagai file SQL

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:

  1. Instal / aktifkan plugin di localhost dan lingkungan produksi Anda
  2. Konfigurasikan transfer push dari server hosting / pengembangan lokal Anda ke produksi Anda
  3. Isi aturan untuk tabel mana yang akan ditransfer, dan tentukan menemukan dan mengganti aturan yang harus dijalankan
  4. Itu dia!

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:

  1. Cadangkan basis data lokal Anda, ini mutlak diperlukan karena kami akan segera mengimpornya kembali
  2. Tambahkan skrip ke folder di direktori root instal Anda
  3. Jalankan temukan dan ganti pada database Anda
  4. Ekspor database Anda dan simpan untuk lingkungan produksi Anda
  5. Impor ulang cadangan Anda dari langkah # 1 untuk memulihkan hosting Anda
  6. Hubungkan ke basis data produksi Anda dan cadangkan (seperti yang selalu Anda lakukan sebelum melakukan hal-hal ini)
  7. Impor ekspor yang kami buat SETELAH menjalankan rutinitas find / replace dari langkah # 4

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?

Kevin Leary
sumber
1

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.

Dengan sopan
sumber
1

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."

Jan Fabry
sumber
1

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/

Ryan Gibbons
sumber
Empat bulan lalu, saya tidak bisa membuat plugin ini berfungsi ... Dan itu masih pada versi 0.1 di code.google
brasofilo
1

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.

Larry
sumber
1

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.

Ian Dunn
sumber
RAMP adalah untuk penyebaran konten , bukan penyebaran kode , tapi saya setuju, itu terlihat hebat. Mereka sekarang memiliki demo pengaturan RAMP sehingga Anda dapat mencoba fitur-fiturnya.
Emzo
Pertanyaannya adalah tentang penyebaran konten , bukan penyebaran kode, dan saya memulai jawaban saya dengan mengatakan "RAMP adalah plugin penyebaran konten baru ..."
Ian Dunn
1

Biarkan saya memberikan salah satu favorit saya :-)

// proven local<->live codefork (covers local network testing, i.e. from mobile devices):
$GLOBALS['is_local'] =  
    in_array( $_SERVER['REMOTE_ADDR'], array("127.0.0.1","::1")) || // simple localhost (IPv4 IPv6)
              $_SERVER['HTTP_HOST'] == 'local.workblog'          || // call by local name (adjust)
       substr($_SERVER["REMOTE_ADDR"],0,8) == '192.168.';           // (mobile) device in local network

$table_prefix  = NULL; // ensure scope

if ( $GLOBALS['is_local'] )  // LOCAL fork ------------------------
{
        ....
}
else  // STAGE/LIVE fork -------------------
{

... 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 ...

Frank Nocke
sumber
1
Anda dapat menggunakan WordPress Skeleton wp-config.php yang menetapkan WP_LOCAL_DEVkonstanta untuk mencapai sesuatu yang serupa
icc97
1

Saya 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.

gdaniel
sumber
1

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

Rick Curran
sumber
1

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.

Mohsenr1
sumber
0

Jika Anda mencoba mencapai sinkronisasi berkelanjutan, saya sarankan menggunakan rsync bersama dengan pekerjaan cron kustom untuk menulis ulang url atau data spesifik situs.

pengguna92899
sumber
0

Setelah mengikuti jawaban ini untuk sementara waktu saya telah membuat plugin kecil saya sendiri - Pitta Migration . Alasannya adalah:

  1. Dari semua ide-ide mencoba di sini - yang paling sederhana adalah WP_HOMEdan WP_SITEURLpilihan
  2. Saya kemudian menggunakan ini untuk mengatur dua wp_optionsURL yang cocok - yang mencakup ketika plugin / tema mengabaikan ini
  3. Ini memberi saya kepercayaan diri 100% pada apa yang sedang diubah dalam database saya
  4. Ini juga berfungsi lintas platform (semua skrip bash tidak dapat diputar dengan baik di Windows)
  5. Sangat mudah untuk memahami apa yang dilakukan plugin
  6. Tidak ada konfigurasi di luar dua konstanta - lakukan mysqldump dan impor mysql ke database lokal Anda dan plugin melihat bahwa konstanta dan tabel berbeda dan memperbarui mereka agar sesuai
  7. Tidak ada pencarian dan penggantian teks
  8. Tidak ada kesempatan mengetuk basis data Anda - Saya menggunakan Objek Basis Data WordPress untuk melakukan dua pembaruan dan tidak lebih
  9. Ini dimainkan dengan baik dengan hal-hal seperti WordPress Skeleton di mana Anda dapat memiliki segalanya dalam kontrol sumber dan mengatur konfigurasi lokal
  10. Saya telah meletakkannya di direktori plugin WordPress dan di Github sehingga gratis, sepenuhnya opensource, mudah bagi Anda untuk garpu dan mudah untuk menginstal
  11. Setelah terinstal, Anda bisa melupakannya dan itu seharusnya 'hanya berfungsi' - itu memberi Anda sedikit pemberitahuan untuk mengatakan bahwa database telah dimodifikasi
  12. Ini harus bekerja dengan proses backup / FTP / restore
icc97
sumber
0

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.

Amanur Rahman
sumber