Nasıl Yapılır: Bir WordPress Kurulumunu Geliştirme'den Üretime Kolayca Taşıyın mı?


199

Bir kutu üzerinde geliştirme yapıyorum ve üretim için bir saniye kullanıyorum. Şu anda sadece veritabanını atıyorum ve sonra URL değişikliklerinin yerini alacak bir yer buluyorum; daha sonra dosyaları kopyalayın ve yeni SQL'i içe aktarın.

Bunu yapmanın daha iyi yolları var mı?


2
Qeustion'a yeni başlayanlar için. 1 Yıl sonra ve hala @MikeSchinkel eklentisini kullanıyorum. Birkaç kurulumunu sorunsuz bir şekilde gerçekleştirdiğimde bir 0.7 çıkardı. mikeschinkel.com/downloads/wp-migrate-webhosts-0.7.zip
Ryan Gibbons

İşte yayınlamamın eklenti içermeyen bir betiği, işlemime son derece yardımcı oldu. philipdowner.com/2012/01/…
Philip Downer


6
Bugün, Duplicator adlı bir eklenti var: wordpress.org/extend/plugins/duplicator Kelimenin tam anlamıyla üç aşamalı bir işlem ve cazibeye benziyor. Bunu, bir web sitesini bir test ortamından canlı bir web sitesine dağıtmak için zaten birkaç kez kullandı.
Matthias,

Yanıtlar:


122

@ Insanity5902 : Bir WordPress sitesinin bir kutudan diğerine konuşlandırılması, ilk günden beri WordPress ile çalışmaya başladığımdan beri PITA oldu. (Gerçeği söylemek gerekirse, WordPress ile başlamadan önce 2 yıl boyunca Drupal'lı bir PITA olduğu söyleniyor, bu yüzden sorun kesinlikle WordPress ile değil.)

Bir siteyi taşımak için her zaman çok sık tekrarlanan çaba harcamak zorunda kalmam ve beni istediğim sıklıkta test etmekten alıkoymam beni rahatsız etti. Yaklaşık 4-6 ay önce webhost'un göç problemini çözmek için bir eklenti üzerinde çalışmaya başladım ve WP Tavern forumundaki fikirlerimden bahsettim .

Bugün çok hızlı bir şekilde ilerlemeye başladım ve hemen hemen çalışmasını sağladım ve rahatlıkla " WP Migrate Webhosts " olarak adlandırıyorum . Eklenti hala çok fazla beta olsa da (muhtemelen alfa bile) sorunuzu verdiğim halde, insanların bunu yapmaya başlamasına izin vermeye hazır olduğumu düşünüyorum.

Öngörülen kullanım durumu şudur:

  1. ilk önce geliştirici, değiştirilen tüm tema ve eklenti dosyalarını FTP üzerinden yüklemeyi ele alır,
  2. daha sonra geliştirme MySQL veritabanını test sunucusuna tamamen ve son olarak yükler.
  3. daha sonra herhangi bir referansı önceki etki alanından yenisine geçirmek için eklentiyi çalıştırır. (My eklenti yok değil ; yeni veritabanı alanları veya canlı verilerle tabloların birleştirilmesi çözmeye teşebbüs OLDUĞUNU nasıl çözüleceğini emin değilim çok daha büyük bir sorundur.)

Eklentiyi web sitemden indirebilir ve eklentiler dizininize açabilirsiniz (bunun nasıl yapılacağını bilmiyorsanız, o zaman bu eklenti sizin için değildir, çünkü onu kullanmak için ne yaptığını bilen birini gerektirir). Bu eklentiyi çevrimiçi olarak WordPress.org sitesinde yayınlayabilene kadar beklettikten sonra orada aramalıyım.

Bunu kullanmak için size farklı bir yaklaşım wp-config.phpdışarı yorum yaparak normal dört (4) tanımlar DB_NAME, DB_USER, DB_PASSWORDve DB_HOSTbunun yerine kayıt webhosts için varsayılan değerleri ve ardından her host kendisi hakkında bilgi kayıt. İşte bu bölümün wp-config.phpneye benzediği gibi olabilir (ilk bölümün açıklama yapılan gereksiz kod olduğunu not edin ve ayrıca .devgünlük geliştirmeyi kolaylaştırmak için host dosyamı yerel makinemde yönlendirilemeyen üst seviye alan adlarıyla kurduğumu unutmayın . Mac'te VirtualHostX bunu bir esinti yapar):

// ** 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');

Umarım bu (çoğunlukla) kendi kendini açıklayıcıdır. Elimden geldiğince kodu gibi temiz hale getirmek için çalıştı ama maalesef bu iki şifreli gerektirir require_once()bana "için hiçbir yolu yoktu çünkü öncesinde ve webhost kayıt kodu bloktan sonra hatları kanca " WordPress önce wp-config.phpdenir.

Güncellemenizi yaptıktan wp-config.phpsonra wp-migrate-webhostsyönetici ekranına gitmek için URL kısayolunu kullanabilirsiniz :

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

Açıklama metni adil biraz vardır ve taşımasına olanak tanır aşağıdaki gibi bir yönetici ekranına götürecektir yukarıdaki DAN (taşınma alanları seçtikten sonra tek bir tıklama ile diğer web host alan adlarının herhangi NOT : Bu örnek, gidiş gösterir AŞAĞI yerel kalkınma ancak geri kalan test / aşamasına / canlı sunuculardan o taşıyabilir güvence iÇİN bulunduğu edilecek olur herhangi bir etki. Bu da demektir eklenti varolan canlı siteyi alıp hızla yerel bir geliştirme ortamı çalışma almak için büyük olacak! ):

görüntü tanımını buraya girin

Bu bağlamda " geçiş " açık değilse , mevcut veritabanındaki tüm referansları o anda tanımlanmış webhost için uygun olacak şekilde güncellemek anlamına gelir (ve " geçerli " denetlenerek engellenir$_SERVER['SERVER_NAME'] .)

Eklenti için harika olan şey, bazı temel göçleri gerçekleştirmesi, ancak herkes onu bağlayıp kendi geçişlerini gerçekleştirebiliyor . Eğer veritabanında görüntülere tam yollarını saklanan bir galeri eklentisi eklerseniz Örneğin, kanca olabilir migrate_webhosts"geçilecek eylemi gelen " webhost ve " için meta bir dizi olarak her bir" host ve izin olacağım Geçiş yapmak için SQL veya ilgili herhangi bir WordPress API işlevini kullanarak veritabanında yapmanız gerekenleri gerçekleştirmek için. Evet, herhangi birimiz eklenti olmadan bunu yapabiliriz, ancak eklenti olmadan gereken tüm kodu yazmanın değerinden daha fazla çaba olduğunu gördüm. Eklenti ile bu küçük kancaları yazmak ve üstesinden gelmek çok daha kolay.

Ayrıca, test etmedim, test etmediğim vakalarda geçişlerimin başarısız olduğunu ve belki de eklentiyi geliştirmeme yardımcı olabilir misiniz? Gmail hesabım aracılığıyla bana e-posta gönderebilecek herkes (takma adım "mikeschinkel.")

Ayrıca, eklenti neye tanıdığı olanlara ilave olarak kullanıcı tanımlamak webhost meta kabul etmek tasarlanmıştır database, user, password, host, domainolabilir vs. Mükemmel bir örnek googlemaps_apikeybu Google Haritalar'ın eklentisi ihtiyaçları her bir alan için farklı API anahtarlarını saklayabilirsiniz nerede doğru çalışması için (Google Haritalar eklentisini kullananlar arasında, bir sunucuyu canlı bir sunucuya uygulama dağıtmadı ve kodu doğru API anahtarına değiştirmeyi unuttu mu? Hadi, dürüst olun ... :) Bu eklentiyle, googlemaps_apikeyregister_webhost () dizinizdeki bir eleman ve küçük bir özel migrate_webhostskanca, kaygıyı etkili bir şekilde ortadan kaldırabilir!

Peki bu konuda. @ İnsanity5902'nin sorusu onu tetiklediği için bu eklentiyi burada WordPress Cevap Borsasında görüyorum. Yararlı olup olmadığını, uygunsa buraya veya e-posta yoluyla bildirin

PS Eğer bunu kullanmaya karar verirseniz, bunun alfa / beta olduğunu hatırlayın ve bu, şimdi kullanmak ve daha sonra birçok el tarafından dövüldükten sonra piyasaya sürülen sürümü kullanmak istiyorsanız, bazı küçük ameliyatlar için hazırlıklı olacağı anlamına gelir.

PPS Bu konuda hedeflerim nelerdir? Bu göçü WordPress çekirdeğinde görmeyi çok seviyorum, böylece herkes buna erişebilir. Ancak bundan önce, birçok insanın potansiyel olarak yaratabileceği daha fazla problem çözdüğünden emin olmak için onu kullanmakla ilgilenmesi gerekir. Bu nedenle, fikri beğenirseniz, elbette, onu kullanın ve sonunda WordPress çekirdeğine umutlu bir şekilde dahil olmak için ivme kazanmama yardımcı olun.


Güzel çözümler Yine de birkaç sorum var. 1) Yönetici alanına girmek için hala WP_SITEURL tanımlamanız gerekiyor mu? 2) Alet sadece Yönetici Kullanıcıları için mi görüntüleniyor? (Araç bölümü yönetici olmayanlar için görüntülendiğinden emin değil)
Ryan Gibbons

Merhaba @ Insanity5902: 1) WP_SITEURL ayarlamaya gerek yok, eklenti sizin için yapar. Aslında bir webhost için "bir" etki alanı "ve" sitepath "kaydettiğinizde ayarlıyorsunuz. Normal WordPress işleminde WP_SITEURL, kimsenin URL'yi taklit etmemesini ve zorlu şeyler yapmasını sağlamak için kodda veya veritabanında ayarlanması gerekir çünkü $ _SERVER ['SERVER_NAME']. WP Migrate Web Siteleri eklentisi WP_SITEURL ürününü dolaylı olarak $ _SERVER ['SERVER_NAME'] 'ye göre ayarlar, ancak SADECE geçerli etki alanı wp-config.php dosyanızda tanımladığınız etki alanlarından biriyle eşleşirse başka bir şey yapmaz.
MikeSchinkel

2.) Bahsettiğim URL kısayolu aslında yönetici konsoluna yönlendiriyor, bu yüzden sadece yönetici üyeliğine giriyor. Yönetici için belirli çeklerim yok, ancak henüz dahili. Bir eklentiye hiçbir zaman yetenek eklemedim, ancak önümüzdeki birkaç hafta içinde bunun üzerinde çalışabilmek için önümüzdeki birkaç hafta içinde nasıl çalışabileceğimizi tamamen araştırmaya ihtiyaç duyacağım. Ancak eklenti yıkıcı değil; SADECE mevcut alana taşınır ve süreç tekrarlanabilir, böylece yönetici olmayan bir kişi girse bile, onunla yapabilecekleri hiçbir zararı yoktur, en azından benim düşündüğüm kadarıyla.
MikeSchinkel

1
/ wp-migrate-webhosts bir 404 üretiyor ve / wp-admin 'veritabanı bağlantısı kurarken hata
Steve

5
Peki, bu eklenti için durumu nedir? Çok çekici görünüyor ama olgun ve iyi incelenmiş bir şey istiyorum. Bu yazı bulabildiğim tek bilgi.
Kevin C.

35

Mümkün olduğunda, ayarladım WP_HOMEve WP_SITEURLiçeri wp-config.php. Bu, bir veritabanı dökümü ve ithalatı ile birleştirildiğinde, aşina olduğum tüm çözümler arasında en basit olanıdır.

http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php


1
Bunları ayarlamak ne zaman mümkün olmazdı? Bu, veritabanındaki şeyleri değiştirmekten biraz daha basit geliyor.
jfklein

2
@jfklein Neredeyse her zaman bu sabitlerle uyumlu olmayan bir WordPress Network ile çalışıyorum.
Annika Backstrom

1
Aynısını yapıyorum. Ne yazık ki, tüm temalar bunu onurlandırmıyor. yani ThemeID'den 'Repsonsive Theme'. Dökümü / tüm tabloları ' localhost ' için (veya yerel adı ne seçtiyseniz), özellikle wp_options'da arama yapmak ve arama & değiştirme yapmak çoğu zaman kaçınılmazdır.
Frank Nocke

@FranKee Ben bir eklenti oluşturmak ettik wordpress.org/plugins/pitta-migration çoğu tema ve eklentileri kapsamalıdır wp_options tablosunu güncelleştirmek için sabitleri kullanır
icc97

@ icc97: Güzel. Buna bakacak. PS: Güzel başlık görüntüsü, durumu resimler.
Frank Nocke

27

En sevdiğim hack; /etc/hostsÜretim alanınızı, yalnızca makinenizdeki geliştirme kutunuza yönlendirmek için bir ayar ekleyin . Üretime dağıtmak için tüm dosyaları yeniden senkronize edin ve veritabanını ileriye doğru itin.

Bu stratejinin riskleri açık; geliştirme ortamınızı üretim ortamınızla karıştırabilirsiniz.

Yine de kolay bir düzeltme.


5
Evet! Bunu düşünen tek kişi ben olmadığım için çok mutluyum! dev ve prod arasındaki herhangi bir fark kötüdür. Bu farkı tamamen ortadan kaldırmak, onun etrafında çalışmaya çalışmaktan çok daha iyidir. Ve bu kurulum hiç iş gerektirmez. Biri gerekirse sanal bir makine üzerinde modded hosts dosyası ile test yapabilir.
Alexander Bird

2
Bu yöntemi çok seviyorum, fakat push / pull veritabanını nasıl idare ediyorsunuz?
Nenotlep

Prod ile dev karıştırmak riskine gelince, web sayfasının IP adresini gösteren bir Chrome eklentisi kullanıyorum. Onun yerel olduğunu
bileceksin

9

Birkaç ay önce WP'ye geçtiğimde benzer bir şey istedim, bu yüzden ssh yerine rsync ve mysqldump kullanan oldukça basit bir kabuk betiği yazdım:

http://snarfed.org/sync_wordpress

Sofistike veya web tabanlı değil, ama bundan memnunum.


8

WP Motor , "Tek Tıklatma Aşaması" sunan yeni bir hizmettir:

WPEngine, “evreleme” adı verilen özel bir özelliğe sahiptir. İşte nasıl çalışır: Blogunuzda korkunç bir değişiklik yapmadan önce, “anlık görüntü” düğmesini tıklayın. Blogunuzun tam bir kopyasını çıkartır ve ayrı, güvenli bir alana yerleştiririz. İstediğin her şeyle oynayabilirsin; hiçbir şey canlı değil. Yalnızca hayata geçirmeye hazır olduğunuzda ana sitenize dokunursunuz.

Gelişimden üretime, özellikle de canlı bir siteden hızlıca geçiş yapmanın çok kolay bir yolu gibi görünüyor.


3
Bu gerçekten çok hoş bir seçenek ve birçok insan için harika olacak! Elbette bu yerleşik URL'ler için çalışmaz ya da yerel olarak gelişen insanlara yardımcı olur, böylece bir IDE'yi hata ayıklayıcı ile kullanabilirler. Şimdi eğer WPEngine yerel bir konuşlandırmayı da birleştiren bir etkileşim yaratabiliyorsa, o zaman gerçekten bir şey olacak (Technosailor, dinliyor musunuz?)
MikeSchinkel

Kabul, bu harika bir ek olurdu.
Travis Northcutt

Anlık görüntü özelliği , tersi yönde değil, yalnızca üretimden aşamalamaya kopyalar . Değişiklikleri test etmek için harikadır, ancak prodüksiyonu dağıtmaya yardımcı olmaz.
sam

2
@ sam aslında, henüz yeni bir aşamaya girdiler. wpengine.com/2013/04/user-portal-v2-and-staging-to-production
Travis Northcutt

7

Teksir Eklentisi: İşte üzerinde çalıştığım bir eklenti. Şu anda beta sürümündedir ancak çoğu site için yapılan işi alır. Şu anda daha küçük WordPress kurulumlarında hedefleniyor. http://wordpress.org/extend/plugins/duplicator/

Kaynaklar: Eklenti için ek kaynaklar burada bulunabilir: http://lifeinthegrid.com/duplicator/

Topluluk: Lütfen bize başarılarınızı veya karşılaşabileceğiniz sorunları bize bildirin! Çeşitli konuları daha kolay yönetmek için lütfen sorunları WordPress.org eklenti forumlarına gönderin. Lütfen eklentiden herhangi bir kayıt verilerini çevrimiçi forumlara göndermeyin. Günlük verileri destek sitemize gönderilebilir.


6

BackUpBuddy adlı iThemes'ten bir ürüne bakabilirsiniz . Sadece iki kez kullandım, her seferinde bir ya da iki kez bir sıkıntı yaşadım, ama genel olarak umut verici görünüyor.


5

Bu konuyu kişisel olarak, Autopress adlı Github projemle ele alıyorum . Henüz mükemmel bir çözümüm yok, ama özellikle wpengine insanlarının wpstage eklentisi ile yaklaşıyorum.


Sadece betiğini kontrol ettim. Güzel. Eğer anladıysam sunucuya yeni bir WP yükler. Buradaki soru gelişimden üretime nasıl geçileceğidir. Bu konuda yardımcı olabilir mi?
Sr

17
Bu mu? github.com/vluther/Autopress Cevaplarınızda linkler oluşturmanızı öneririz, böylece insanlar doğrudan tıklayabilir!
artlung

4
@ Mike Lee: Evet, yorumları oylayabilirsiniz. Bakın, artlung'un yorumunu kaldırdım. Yorumun solundaki vurgulu yukarıyı arayın.
MikeSchinkel

Her şeyi sürüm kontrolü altında tutacak bir yol üzerinde çalışıyorum ve ardından dev'den üretime geçiyorum. Zaten birkaç site için hiç sorun yaşamadan yapabildim, ancak yine de adreslemem gereken bazı değişiklikler var.
Vid Luther,

1
Bu olup olmadığından emin değilim, ancak ana bilgisayarlar arasında site geçişi için kullanılan bir WP Motor eklentisi var. Buna Anlık Görüntü ( Doğrudan bağlantı ) denir .
joelhaus

5

Bu umut verici görünüyor. Bazı verilerin taşınmasını ele almak için bazı scriptler üzerinde çalışıyoruz, örneğin wp seçenekleri, db'deki yolları değiştirmek, medya üzerinden bir kopyalamak.

Sahip olduğum sorun, canlı sitenin diğerinin gelişim halindeyken büyümeye devam etmesi. Üzerinde çalıştığımız bir sitede günde 20 gönderi ve günde 3.000 yorum bulunuyor. Bu phpmyadmin veya komut satırı üzerinden geçmek için çok fazla veridir. Ayrıca, verileri taşımak her zaman bir nedenle UTF sorunlarına neden olur.

Ayrıca, menü seçenekleri DB'de depolanmış gibi gözüküyorsa, uğraşmam gereken daha çok şey var.

Tüm kodlarımı SVN’de kontrol ediyorum ve kodu FTP üzerinden sunucudan (Beanstalk) konuşlandırıyorum. Bu benim için DB değişiklikleri yapmaz ama yeni eklentileri etkinleştirmez.

Şu anki planım canlı sitedeki tüm değişiklikleri yapmak için geliştirdiğim sırada açık bir dosya oluşturmak.

Örneğin, dosyada okunabilir insan satırları olur

Etkinleştirmek için eklentileri, taşımak için wp seçenekleri, taşımak için görüntüleri, taşımak için sayfaları içerir. Sonra benim eklenti, manifest dosyasını algılayacak ve tüm değişiklikleri hazırlama sitesinde yapacaktı.

Bunu test ettikten ve her şeyi aldığımdan emin olduğumda, üretim üzerinde çalışacağından emin olabilirdim.

Bu eklenti hala sadece bir fikir, ama bunun için yazılmış bir kodum var.

Ayrıca, yalnızca DB'nizdeki URL’de değişiklikler yapmak istiyorsanız, aşağıdaki SQL’i kullanabilirsiniz.

Sadece yerine $old$eski etki alanıyla ve $new$yeni ile

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$') ;

2
Sadece bir not, sql çağrım size serileştirilmiş veri bozabilir. s: 14: blogs.prod.com, 14 olarak kodlanmış bir uzunluğa sahiptir. Kodu çalıştırdıktan sonra, şimdi bozuk: s: 14: dev.prod.com sahibiz. Olması gereken s: 12: dev.prod.com dikkatli kullanın.
Andrew,


3

Subversion'ın export komutunu, WordPress dosyalarını (http://core.svn.wordpress.org/tags//) ve depodaki tüm eklentileri (http://plugins.svn.wordpress.org//tags) yüklemek için kullanıyorum. //), sonra tema ve özel eklentileri sıkıştırın ve normal şekilde kurun. Bunların hepsi çalıştıktan ve içeriksiz olarak çalıştıktan sonra, test DB'sini dışarı aktarıyorum ve URL VE filepath (medya için depolanmış) için bir arama / değiştirme yapıyorum ve boş bir veritabanına aktarıyorum, sonra wp-config içindeki veritabanı bilgisini değiştiriyorum. .php. Genellikle yaklaşık 10 - 20 dakika sürer.


3

Normalde phpMyadmin'e giriş yaparak veritabanını yükler ve wp_options> siteurl ve wp_options> home içeriğini beklenen etki alanına düzenlerim. Gönderilerinizdeki ve sayfalarınızdaki URL’leri güncellemeniz gerekirse, yüklemeden önce URL’yi ve .SQL dosyasındaki medya / yükleme yolunu arayabilir / değiştirebilirsiniz. Hızlı bir iş.


3

Burada hiçbir iyi çözüm sıkıntısı olmasa da, paylaşım ruhu içinde bash konuşlandırma komut dosyasını yığına ekleyeceğimi düşündüm: https://github.com/jplew/SyncDB

SyncDB, bir Wordpress sitesinin yerel ve uzak versiyonlarını senkronize etmekten tedium'u çıkarmak için bash konuşlandırma komut dosyasıdır. Yerel bir ortamda çalışan geliştiricilerin (örn. MAMP) tek bir terminal komutuyla üretim sunucularına veya üretim sunucularına değişiklikleri hızlı bir şekilde "itme" veya "çekme" yapmalarını sağlar.

Bu komut dosyası Mark Jaquith en WP-İskelet ve koşum takımları ile iyi çalışır mysqldump, gitve rsyncsenkronize etmek sizin tüm site veritabanı, kod ve medya-iki basit adımda:

./syncdb
git push hub master

3

Http://wordpress.org/plugins/wp-clone-by-wp-academy/ kullanıyorum . Güzel çalışıyor!

Sadece 3 adım:

  1. Eklentiyi her iki siteye de yükleyin.
  2. Eski sitede bir yedekleme oluşturmak için eklentiyi kullanın.
  3. Size verdiği yedek URL'yi alın ve yeni sitedeki eklenti sayfasına takın, hemen gidin ve geçiş işleminiz birkaç saniye içinde tamamlandı!

Tüm URL'leri otomatik olarak ayarlar - seri hale getirilmiş dize değişimleri dahil - böylece widget yapılandırmalarını kaybetme riski yoktur.

Sahip olduğum tek sorun, daha büyük veritabanları olan (~ 300MB) bazı web sitelerinde ve site yedekleme işlemi sırasında PHP betiği yürütme zaman aşımına uğramasına neden oldu.


3

2017 yılı itibariyle, burada bir WordPress veritabanının geliştirmeden üretime aktarılmasını ele almanın en iyi iki yolu var.

WP DB Pro / WP Senk DB'yi Geçirme

https://wordpress.org/plugins/wp-migrate-db/

Bu WordPress eklentileri, WordPress kurulumları arasında veritabanı tablolarını itmenizi, çekmenizi ve senkronize etmenizi sağlar. Bu, birçok nedenden dolayı bul / değiştir'den çok daha iyidir, çünkü:

  • Veritabanınızı MySQL veri dökümü olarak dışa aktarır (phpMyAdmin'e çok benzer)
  • URL’leri ve dosya yollarını bulup değiştirir
  • Serileştirilmiş verileri yönetir
  • Bilgisayarınıza bir SQL dosyası olarak kaydetmenizi sağlar

Yaptığım iş için para alma hayranıyım, bu yüzden Bay Brad Touesnard'ı desteklemenizi ve asıl şeyin lisans kopyasını satın almanızı öneririm. WP Sync DB bir kopyadır ve sonuç olarak her zaman destekleyicidir. Bu eklentiyle işlem son derece basittir:

  1. Eklentiyi yerel ana makinenize ve üretim ortamınıza yükleyin / etkinleştirin
  2. Localhost / development sunucunuzdan prodüksiyonunuza bir push transferi yapılandırın
  3. Hangi tabloların aktarılacağı kurallarını doldurun ve gerçekleştirilecek kuralları bulun ve değiştirin
  4. Bu kadar!

Veritabanında Arama ve WordPress Veritabanlarının InterconnectIT ile Değiştirilmesi

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

Bu ücretsiz araç bir eklenti değildir, ancak WordPress üretim kurulumunuzun kök dizininde bulunur. Bu, WP Migrate DB Pro kadar iyi değil çünkü birkaç manuel adım gerektiriyor, ancak yine de sürekli çalışan mükemmel bir seçenek. Bu yaklaşımı kullanırken işlem şöyle görünür:

  1. Yerel veri tabanınızı yedekleyin, en kısa zamanda yeniden alacağımızdan kesinlikle gereklidir.
  2. Komut dosyasını kurulum dizininizdeki bir klasöre ekleyin
  3. Bul ve değiştir'i veritabanında çalıştır
  4. Veritabanınızı dışa aktarın ve üretim ortamınız için saklayın
  5. Yerel sunucunuzu geri yüklemek için # 1 numaralı adımdan yedeklemenizi yeniden alın
  6. Üretim veritabanınıza bağlanın ve yedekleyin (bunları yapmadan önce her zaman yapmanız gerektiği gibi)
  7. 4 numaralı adımdan bulma / değiştirme yordamını çalıştırdıktan SONRA yaptığımız dışa aktarımı içe aktarın.

Daha hızlı bir yaklaşım kullanabilirsiniz, ancak bence kabul edilemez olan üretim siteniz için çalışmama süresi bulunuyor. Bu yüzden buna üretim diyoruz, değil mi?


1

sitelerimi IIS'de çalıştırdığımdan (ayrıca asp.net'i çalıştırdım, bu nedenle pencerelere ihtiyacım var) yeni bir örnek yüklemek için Msft'ten WebPI kullanıyorum, sonra şablonu kopyalayıp verileri almak için içe aktarma / dışa aktarma kullanıyorum.

Mükemmel değil ama her şey bir saatten az sürüyor.

Açıkçası tek tıklamayla bir çözüme sahip olmak güzel olurdu, ama benim için en kolay bulduğum şey buydu.


1

Başka bir ödeme çözümü: Xtreme One tema çerçevesi , "Çocukların, Düzenlerin veya Pencere Öğelerinin ayarlarını tüm ayarlarıyla / içerikleriyle XML dosyası olarak dışa aktarmanıza veya içe aktarmanıza" izin veren Xtreme Backup ile sürüm 1.2'yi yayımladı.



1

Soruyu sorduğunuzda bu olmayabilir, ancak birkaç aydır Blogvault adlı bir servisi kullanıyorum ve bunu kusursuzca yaptım. Muhtemelen 50'den fazla geçiş yaptım (geçiş alanlarını, alt alanları ve web ana bilgisayarlarını), bir aksamadan değil ve hiç vakit almıyor.

Ücretli bir hizmet (etki alanı / ay başına), ancak bu kadar değil.


1

RAMP , Crowd Favorite'dan yeni bir içerik dağıtım eklentisi ve gerçekten kaygan görünüyor. 250 dolar olsa da, henüz denemedim. Öyle olsa, sadece harcanan zaman miktarında kendisinin parasını öderim.

Bahsedilen diğer yöntemlerin çoğuna kıyasla büyük yararı, gönderileri, yorumları vb. Akıllıca birleştirebilmesidir. Yalnızca bir mysqldump almak değil, veritabanı için kaynak denetimi gibidir. Örneğin, bir yayını dağıtırken, üretimde zaten yoksa, o yazının etiketlerini de dağıtır.


RAMP, kod dağıtımı yerine içerik dağıtımı içindir, ancak kabul ediyorum, mükemmel görünüyor. Artık bir RAMP demosu hazırlamışlar, böylece özellikleri deneyebilirsiniz.
Emzo

Soru ilgiliydi içerik deployement değil kod dağıtımı, ben de "RAMPA yeni diyerek cevabımı başladı içerik dağıtım eklentisi ..."
Ian Dunn

1

Benim favorilerimden birini vereyim :-)

// 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 -------------------
{

... ve sonra oradan kendi yolunda çalışıyorsun. DB_NAME, DB_USER ... table_prefix. Şahsen ben ALTERNATE_WP_CRON'u yerel olarak ( bazı rahatsız edici uyarıları önlemek için ), her ikisinin de WP_DEBUG (bir geliştirici değilseniz) veya yalnızca canlı olarak (eğer öyleyseniz) açacağım ini_set('display_errors', '0');; yukarıda belirtildiği gibi: WP_HOME ve WP_SITEURL ilgili yerel / gerçek URL'ye

Hepsi bu kadar, klasik WordPress'in üzerinde hiçbir şey kalmadı 'Hepsi bu, düzenlemeyi bırak!' hat...

192.168. Bölüm, yerel ağınızdaki bazı yerel testleri (örneğin, pedlerden veya telefonlardan) yapmanızı sağlar)

$ GLOBALS ['is_local'], bazı ekstra hata ayıklama çıktıları vb. İçin tema geliştirmenizde kullanışlı olabilir.


1
Benzer bir şey elde etmek için bir sabit ayarlayan WordPress Skeleton wp-config.php kullanabilirsinizWP_LOCAL_DEV
icc97

1

Bir süredir backupbuddy eklentisini kullanıyorum. Veritabanını ve tüm dosyaları yedeklemenizi, zip olarak indirmenizi veya FTP üzerinden doğrudan başka bir sunucuya göndermenizi sağlar. Ayrıca URL sizin için bulup değiştirir. Tüm bu süreçten geçmem genellikle 5 dakika sürer. Ve tüm dosyalar sıkıştırılmış olduğundan yükleme / indirme işlemi çok daha hızlıdır. Ve hayır, onlar için çalışmıyorum, ama bu eklenti bu süreci gerçekten çok kolaylaştırdı.


1

Siteler için sunucu geçişlerini işlemek için başka bir kullanışlı araç WordPress CLI'dir, bu makale ne yapabileceği hakkında iyi bir genel bakışa sahiptir, ancak özellikle "Arama ve Değiştirme" bölümü eski / dev site URL'sine yapılan tüm başvuruları bulmak için yararlıdır. :

WP-CLI ile Gelişmiş WordPress Yönetimi



0

Sürekli senkronizasyon elde etmeye çalışıyorsanız, url veya siteye özgü verileri yeniden yazmak için rsync'i özel bir cron işi ile birlikte kullanmanızı öneririz.


0

Bu cevabı bir süre takip ettikten sonra kendi küçük eklentim olan Pitta Migration'ı oluşturdum . Sebepleri:

  1. Burada denenen bütün fikirlerin arasında - en basit olan WP_HOMEve WP_SITEURLseçeneklerdir
  2. Sonra bunları eşleşen iki wp_optionsURL'yi ayarlamak için kullanıyorum - bu eklentiler / temaların bunları yoksaydığı zamanları kapsar
  3. Bu, veritabanımda neyin değiştirildiğine% 100 güven veriyor
  4. Bu aynı zamanda platformlar arası da çalışır (tüm bu bash scriptleri Windows'ta güzel bir şekilde oynatılmaz)
  5. Eklentinin ne yaptığını anlamak kolaydır
  6. İki sabitin ötesinde bir yapılandırma yok - yerel veritabanınıza bir mysqldump ve bir mysql alın
  7. Metin arama ve değiştirme yok
  8. Veritabanınızı değiştirme şansı yok - İki güncelleme yapmak için WordPress Veritabanı Nesnesini kullanıyorum.
  9. Kaynak kontrolünde her şeye sahip olabileceğiniz ve yerel bir konfigürasyon ayarlayabileceğiniz WordPress Skeleton gibi şeylerle güzelce oynuyor
  10. WordPress eklentileri dizinine ve Github'a koydum, böylece ücretsiz, tamamen açık kaynaklıdır, sizin için çatal ve kurulumu kolay
  11. Kurulduktan sonra bunu unutabilirsiniz ve 'sadece çalışması gerekir' - veritabanının değiştirildiğini söylemek için size küçük bir not verir.
  12. Herhangi bir yedekleme / FTP / geri yükleme işlemi ile çalışması gerekir

0

Benim görüşüme göre takip etmenin en kolay yolu manuel transfer .. Sadece wp-content klasörünü ve wp-config.php dosyasını yeni ana bilgisayara kopyala. Veritabanını eski ana bilgisayardan dışa aktarın ve yeni ana bilgisayar veritabanına alın.

Yeni ana bilgisayar veritabanında wp-seçenek tablosuna gidin ve site URL'sini ve Blog URL'sini eski ana bilgisayardan Yeni ana bilgisayar adresi olarak değiştirin. benzerlerinden http: // localhost / wp için http://example.com

Şimdi wp-config dosyasında sadece yeni host bilgisi ile veritabanı ve kullanıcı bilgilerini değiştirin.

Şimdi yeni wp-admin'de oturum açın ve ayarlara gidin ve kalıcı bağlantıyı kaydedin.

Bitirdiniz. Herhangi bir eklenti kullanmadan bu basit olduğunu düşünüyorum.

Farklı türde eklentiler denedim ve bunların hepsinde birçok sorun var.

Bu yüzden sanırım daha kolay olan bu basit manuel transferi tercih ediyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.