Я займаюся розробкою однієї коробки, а другу використовую для виробництва. Зараз я просто скидаю базу даних, а потім знаходжу заміну змін у URL-адресах; потім скопіюйте файли та імпортуйте новий SQL.
Чи є кращі способи зробити це?
Я займаюся розробкою однієї коробки, а другу використовую для виробництва. Зараз я просто скидаю базу даних, а потім знаходжу заміну змін у URL-адресах; потім скопіюйте файли та імпортуйте новий SQL.
Чи є кращі способи зробити це?
Відповіді:
@ Insanity5902 : Розгортання сайту WordPress з однієї скриньки в іншу було PITA з першого дня, коли я почав працювати з WordPress. (Правду кажучи, це був ПДФА з Drupal протягом 2 років, перш ніж я почав працювати з WordPress, тому проблема, безумовно, не виключно з WordPress.)
Мені це непокоїло, що кожного разу, коли мені потрібно було перенести сайт, мені доведеться витрачати стільки часто дублюваних зусиль, і це не дало мені розгортатися на тестування так часто, як я хотів би. Так, приблизно 4-6 місяців тому я почав працювати над плагіном, щоб вирішити проблему міграції веб-хостів, і я згадав свої ідеї на форумі WP Tavern .
Добре просуваємось до сьогоднішнього дня, і в мене це дуже працює, і я зручно називаю його " WP Migrate Webhosts ". Незважаючи на те, що плагін все ще дуже важливий для бета-версії (напевно, навіть альфа), враховуючи ваше запитання, я думаю, що я готовий дозволити людям почати стукати по ньому.
Запропонований випадок використання:
Ви можете завантажити плагін з мого веб-сайту і розпакувати його у свою довідник плагінів (якщо ви не знаєте, як це зробити, то цей плагін не для вас, тому що для його використання потрібен хтось, хто знає, що вони роблять.) зберігайте цей плагін в Інтернеті, поки я не видам його на WordPress.org, після чого вам слід шукати його там.
Для того, щоб використовувати його , ви берете інший підхід у вашій , wp-config.php
що нормальний закоментувавши чотири (4) визначає DB_NAME
, DB_USER
, DB_PASSWORD
і DB_HOST
та замість реєстрації за замовчуванням для хостингів , а потім реєструвати інформацію про кожного з самого хостингу. Ось як wp-config.php
може виглядати цей сегмент (зверніть увагу, перший розділ - це коментований непотрібний код, а також зауважте, що я налаштував свій файл хостів на своїй локальній машині з нерутованими .dev
доменами верхнього рівня, щоб полегшити щоденну розробку. На Mac VirtualHostX робить це вітерцем):
// ** 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');
Сподіваємось, це (здебільшого) пояснюється само собою. Я намагався зробити код максимально чистим, але міг, але, на жаль, потрібні ці дві криптовалюти require_once()
до і після блоку реєстраційного коду веб-хостів, оскільки не було ніякого способу « зачепити » WordPress до того, wp-config.php
як викликається.
Після оновлення wp-config.php
ви можете просто скористатися ярликом URL wp-migrate-webhosts
для переходу до екрана адміністратора так:
Наведене вище перенесе вас на екран адміністратора, як у наведеному нижче, який містить неабиякий текст опису та дозволяє перейти з будь-якого з інших доменів веб-хостингу одним клацанням миші після вибору доменів для міграції ( ПРИМІТКА : цей приклад показує, що відбувається ВНИЗ від тестових / сценічних / прямих серверів до локальної розробки, але будьте впевнені, що він може перейти до будь-якого домену, де він може бути розташований. Це також означає, що плагін буде чудовим для того, щоб зайняти існуючий веб-сайт та швидко налагодити локальне середовище розробки! ):
Якщо незрозуміло, " міграція " в цьому контексті означає оновити всі посилання в поточній базі даних, щоб відповідати поточно визначеному веб-хосту (а " поточний " обнюхується шляхом перевірки $_SERVER['SERVER_NAME']
.)
Що плагіна в плагіні - це те, що він здійснює основні міграції, але кожен може підключити його та здійснити власну міграцію . Наприклад, якщо ви додасте плагін галереї, який зберігає повні шляхи до зображень у базі даних, ви можете підключити migrate_webhosts
дію, яка буде передана веб-хосту " з " та " до " веб-хосту як масив метаданих, і вам буде дозволено виконувати все, що вам потрібно зробити в базі даних, використовуючи SQL або будь-які застосовні функції WordPress API для міграції. Так, будь-хто з нас міг би це зробити без плагіна, але без плагіна я виявив, що написання всього необхідного коду доклало більше зусиль, ніж варто. За допомогою плагіна просто простіше написати ці крихітні гачки і перемогти їх.
Можливо, ви також виявите, що мої міграції не спрацьовують у кращих випадках, які я не перевіряв, і, можливо, ви можете допомогти мені покращити плагін? Усі бажаючі можуть надіслати мені електронною поштою через мій обліковий запис gmail (мій псевдонім - "mikeschinkel.")
Крім того , плагін був розроблений , щоб прийняти користувачем визначення метаданих веб - хостів на додаток до тих, що він визнає , як database
, user
, password
, host
, і domain
т.д. Прекрасний приклад може бути , googlemaps_apikey
де ви можете зберігати різні ключі API для кожного домена , якому потрібно плагін вашого Google Map в правильно працювати (хто з вас, хто використовував плагін Google Maps, не розгорнув додаток на реальному сервері та забув змінити код на правильний ключ API? Давайте, будьте чесними ... :) За допомогою цього плагіна, googlemaps_apikey
елемент у вашому register_webhost () масив і невеликий користувальницький migrate_webhosts
гачок можна ефективно усунути , що як проблема!
Ну це про це. Я запускаю цей плагін тут на біржі відповідей WordPress, оскільки питання @ Insanity5902 викликало його. Повідомте мене, якщо це корисно, тут, якщо це доречно, чи електронною поштою, якщо ні.
PS Якщо ви все-таки вирішите скористатися цим, пам’ятайте, що це альфа / бета, і це означає, що це зміниться, тому будьте готові до невеликої операції, якщо ви хочете скористатися ним зараз, а потім скористайтеся випущеною версією після того, як її побили багато рук.
PPS Які мої цілі щодо цього? Я люблю бачити, як це мігрує в ядро WordPress, щоб усі мали доступ до нього. Але перед цим навіть можна вважати, що багатьом людям доведеться зацікавити його використанням, щоб переконатися, що він фактично вирішує більше проблем, ніж це потенційно може створити. Тож якщо ідея вам подобається, то будь-якими способами використовуйте її та допоможіть мені набрати обертів для її можливого включення в ядро WordPress.
Коли це можливо, я встановив WP_HOME
і WP_SITEURL
ввійшов wp-config.php
. Це в поєднанні із скиданням та імпортом бази даних є найпростішим із усіх знайомих мені рішень.
http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php
Мій улюблений хак; додайте налаштування до свого, /etc/hosts
щоб зробити точку домену виробництва у вікні розробки, просто на вашій машині. Для розгортання у виробництві ви rsync всі файли та пересунути базу даних.
Ризики цієї стратегії чіткі; ви можете переплутати ваше середовище розробки з виробничим середовищем.
Це все ще легко виправити.
Я хотів чогось подібного, коли перейшов на WP кілька місяців тому, тому написав досить простий скрипт оболонки, який використовує rsync та mysqldump через ssh:
http://snarfed.org/sync_wordpress
Це не складне або веб-базування, але я задоволений цим.
WP Engine - це нова послуга, яка пропонує "Постановку в один клік":
WPEngine має ексклюзивну функцію під назвою "постановка". Ось як це працює: Перш ніж внести страшні зміни в свій блог, натисніть кнопку "Знімок". Ми робимо повну копію вашого блогу і встановлюємо його в окрему, безпечну зону. Ви можете грати з чим завгодно; нічого не живе. Лише тоді, коли ви готові реалізувати його, ви торкаєтесь свого головного сайту.
Виглядає як дуже простий спосіб швидкого переходу від розробки до виробництва, особливо з уже існуючим сайтом.
Плагін для копіювання: Ось плагін, над яким я працював. Наразі він знаходиться в бета-версії, але це робить роботу для більшості сайтів. Зараз він орієнтований на менші встановлення WordPress. http://wordpress.org/extend/plugins/duplicator/
Ресурси: Додаткові ресурси для плагіна можна знайти тут: http://lifeinthegrid.com/duplicator/
Спільнота: Будь ласка, повідомте нам про ваші успіхи чи будь-які проблеми, з якими ви можете зіткнутися! Намагаючись легше керувати різними потоками, опублікуйте питання на форумах плагінів WordPress.org. Будь ласка, не публікуйте жодних даних реєстрації із плагіна на онлайн-форумах. Дані реєстрації можна надіслати на наш сайт підтримки.
Ви можете поглянути на продукт із iThemes, який називається BackUpBuddy . Я використовував його лише два рази, кожен раз, коли був зачіп або два, але загалом це виглядає багатообіцяюче.
Я особисто займаюся цим питанням зі своїм проектом на Github, який називається Autopress . У мене ще немає ідеального рішення, але я все ближче, особливо з плагіном wpstage від wpengine folks.
Це виглядає перспективно. Ми працюємо над деякими сценаріями для обробки міграції деяких даних, wp-опцій, наприклад, зміни шляхів у db, копіювання на носії.
Проблема в мене полягає в тому, що веб-сайт в реальному часі продовжує рости, тоді як інший розробляється. Один сайт, над яким ми працюємо, має 20 публікацій на день і понад 3000 коментарів на день. Це занадто багато даних для переміщення через phpmyadmin або через командний рядок. Крім того, переміщення даних навколо якоїсь причини викликає проблеми UTF з певних причин.
Крім того, тепер, коли схоже, що параметри меню зберігаються в БД, я маю ще більше справи.
Я перевіряю весь свій код у SVN та розгортаю код через FTP з сервера (Beanstalk). Це не вносить зміни в БД для мене, хоча і не активує нові плагіни.
Зараз в моєму плані - створити файл маніфесту, поки я розробляюсь, щоб зробити всі свої зміни на веб-сайті.
Наприклад, файл має читати людські лінії
Він буде включати плагіни для активації, wp-варіанти для переміщення, зображення для переміщення, сторінки для переміщення. Тоді мій плагін виявив би файл маніфесту та вніс усі зміни на інсценізаційний сайт.
Після того, як я тестував це і був впевнений, що все отримав, я міг бути впевнений, що це буде працювати на виробництві.
Цей плагін все ще просто ідея, але для мене є якийсь код, написаний для цього.
Крім того, якщо ви хочете внести зміни до лише URL-адреси у вашій БД, ви можете скористатись наступним SQL.
просто замініть $old$
на старий домен і $new$
на новий
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$') ;
Два проекти Summer of Code Google, які мають подібну мету:
Я використовую команду експорту subversion для встановлення файлів WordPress (http://core.svn.wordpress.org/tags//), а також усіх плагінів у сховищі (http://plugins.svn.wordpress.org//tags //), потім просто застебніть тему та користувацькі плагіни та встановіть їх нормально. Після того, як все це працює і працює без вмісту, я експортую тестову БД і виконую пошук / заміну URL-адреси І файлового шляху (зберігається для медіа) та імпортую в порожню базу даних, а потім просто переключу інформацію про базу даних у wp-config .php. Зазвичай займає у мене близько 10 - 20 хвилин.
Зазвичай я входжу в phpMyadmin, завантажуючи базу даних і редагуючи вміст wp_options> siteurl та wp_options> home на очікуваний домен. Якщо вам потрібно оновити URL-адреси у вмісті своїх публікацій та сторінок, ви можете виконати пошук / заміну URL-адреси та шляху медіа / завантаження у файлі .SQL перед завантаженням. Це швидка робота.
Хоча хороших рішень тут не бракує, в дусі спільного використання я подумав, що додам свій скрипт bash-розгортання до палі: https://github.com/jplew/SyncDB
SyncDB - це сценарій розгортання bash, призначений для усунення нудоти від синхронізації локальної та віддаленої версій сайту Wordpress. Це дозволяє розробникам, що працюють в локальному середовищі (наприклад, MAMP), швидко "натискати" або "тягнути" зміни до або з їх виробничого сервера за допомогою єдиної команди терміналу.
Цей сценарій добре працює з WP-скелетом Марка Джакіта та джгутами mysqldump
, git
а rsync
також синхронізувати весь ваш сайт - базу даних, код та медіа - за два простих кроки:
./syncdb
git push hub master
Я використовував http://wordpress.org/plugins/wp-clone-by-wp-academy/ . Це прекрасно працює!
Всього 3 кроки:
Він автоматично коригує всі URL-адреси - включаючи серіалізовані заміни рядків - так що немає ризику втрати конфігурацій віджетів тощо.
Єдині проблеми, пов’язані з деякими веб-сайтами з більшими базами даних (~ 300 Мб), спричинили час очікування виконання сценарію PHP під час імпорту резервної копії сайту.
Станом на 2017 рік, ось два найкращих способи, які я знайшов для управління передачею бази даних WordPress від розробки до виробництва.
https://wordpress.org/plugins/wp-migrate-db/
Ці плагіни WordPress дозволяють пересувати, тягнути та синхронізувати таблиці баз даних між установками WordPress. Це набагато краще, ніж знайти / замінити з багатьох причин, оскільки це:
Я любитель платити за роботу, яку я виконую, тому рекомендую вам підтримати містера Бреда Туеснара і придбати копію справжньої ліцензії. WP Sync DB - це копія, і вона завжди відстає в підтримці. З цим плагіном процес мертвий простий:
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
Цей безкоштовний інструмент не є плагіном, але встановлений у вашому кореневому каталозі установки WordPress. Це не так добре, як WP Migrate DB Pro, оскільки для цього потрібно кілька кроків вручну, але, тим не менш, це чудовий варіант, який стабільно працює. При використанні цього підходу процес виглядає приблизно так:
Ви можете скористатися більш швидким підходом, але це передбачає простої для вашого виробничого сайту, що, на мою думку, є неприйнятним. Ось чому ми називаємо це виробництвом, правда?
оскільки я запускаю свої сайти в IIS (я також запускаю asp.net, тому мені потрібні вікна), я використовую WebPI від Msft для встановлення нового примірника, потім копіюю шаблон і використовую імпорт / експорт для передачі даних.
Це не ідеально, але вся справа займає менше години.
Очевидно, було б непогано мати рішення одним натисканням кнопки, але саме це мені стало найпростішим.
Ще одне платне рішення: тематична рамка Xtreme One випустила версію 1.2 із резервною копією Xtreme, яка дозволяє "експортувати чи імпортувати налаштування ваших Childthemes, макетів або віджетів із усіма їх налаштуваннями та вмістом у вигляді XML-файлу".
Співробітник знайшов це. Цікава концепція, хоча це не працює між сервером, як це виглядає. Я все ще досліджую це, але схоже, що це може чудово працювати для інсценізації
Це, можливо, не було, коли ви задавали питання, але я вже пару місяців користуюся сервісом під назвою Blogvault, і це було зроблено бездоганно. Я, мабуть, зробив понад 50 міграцій (перетинання доменів, субдоменів та веб-хостів), а не замикання і зовсім не займає часу.
Це платна послуга (за домен / місяць), але не настільки.
RAMP - це новий плагін для розгортання контенту від Crowd Favorite, і він виглядає дуже гладко. Це 250 доларів, однак я ще не спробував цього. Можливо, я можу просто заплатити за кількість заощадженого часу, тому я це думаю.
Велика перевага, яку вона має над більшістю згаданих інших методів, полягає в тому, що вона може інтелектуально об'єднувати повідомлення, коментарі тощо. Це не просто імпорт mysqldump, це більше схоже на контроль джерел для бази даних. Наприклад, розгортаючи публікацію, вона також розгортає теги для цієї публікації, якщо вони вже не існують у виробництві.
Дозвольте мені віддати одне з моїх улюблених :-)
// 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 -------------------
{
... і тоді ви працюєте звідти. DB_NAME, DB_USER ... таблиця_префікс. Особисто я вмикаю ALTERNATE_WP_CRON на локальному (щоб уникнути деяких дратівливих попереджень ), WP_DEBUG обох (якщо ви не розробник) або лише в прямому ефірі (якщо ви є), інший ini_set('display_errors', '0');
для прямого життя також може принести користь, і нарешті, як було зазначено вище: WP_HOME та WP_SITEURL до відповідної локальної / фактичної URL-адреси.
Це майже все, нічого не залишилося над класичною WordPress "Все, припиніть редагування!" рядок ...
192.168. частина дозволяє зробити тестування на місцевому рівні (тобто з планшетів або телефонів) у вашій локальній мережі)
$ GLOBALS ['is_local'] також може стати в нагоді для розробки вашої теми для отримання додаткових результатів налагодження тощо.
WP_LOCAL_DEV
константу для отримання чогось подібного
Я вже деякий час використовую плагін backupbuddy. Це дозволяє зробити резервну копію бази даних та всіх файлів, завантажити її як поштовий індекс або відправити безпосередньо на інший сервер через FTP. Він також знаходить та замінює URL-адресу для вас. Зазвичай у мене йде близько 5 хвилин, щоб пройти весь процес. А тому, що всі файли стискаються, процес завантаження / завантаження відбувається набагато швидше. І ні, я не працюю на них, але цей плагін справді полегшив весь цей процес.
Іншим корисним інструментом для обробки міграцій серверів для сайтів є WordPress CLI, ця стаття має хороший огляд того, що він може зробити, але конкретно розділ "Пошук і заміна" корисний для пошуку всіх посилань на старий URL / сайт розробника :
Це найпростіший спосіб коли-небудь:
https://themes.artbees.net/docs/website-migration/
Це займе лише два кліки. Один для експорту, один для імпорту.
Це можливо, використовуючи плагін «Міграція All in one WP». Наведене вище посилання показує, як ним користуватися.
Певний час дотримуючись цієї відповіді, я створив власний маленький плагін - Pitta Migration . Причини:
WP_HOME
та WP_SITEURL
варіантиwp_options
URL-адрес - що охоплює, коли плагіни / теми ігнорують їхНа мою думку, найпростіший спосіб, який я дотримуюся, це ручна передача .. Просто скопіюйте папку wp-content та файл wp-config.php на новий хост. Експортуйте базу даних зі старого хоста та імпортуйте її в нову базу даних нового хоста ..
У новій базі даних хостів перейдіть до таблиці параметрів wp і там змініть URL-адресу сайту та блогу на Нову адресу хоста зі старого хоста. наприклад, з http: // localhost / wp до http://example.com
Тепер у файлі wp-config просто змініть інформацію бази даних та користувача з новою інформацією про хост.
Тепер увійдіть до нового wp-admin та перейдіть до налаштувань та збережіть постійну посилання.
Ви закінчили. Я думаю, що це просто без використання плагінів.
Я пробував різного роду плагіни, і всі ці проблеми мають багато видів.
Тому я вважаю за краще цю просту передачу вручну, яку я вважаю легшою.