Розробка, розробка сцени та виробництва для сайтів WordPress?


41

Тому мені потрібно мати можливість розробляти розробку / етап / виробництво (на окремих серверах) для веб-сайту WordPress, я зазвичай використовую git, але це, очевидно, не буде працювати з сайтами WordPress через залежність від бази даних для основного конфігурація ... ну майже все.

Тож моє запитання - як ви це робите? Я швидко запустив Google і побачив, що є кілька плагінів, це єдиний спосіб? Які з них роблять цю роботу найкраще з точки зору простоти використання, швидкості, надійності, інтерфейсу тощо?


pantheon.io має розробник, тестує і працює для одного домену. Вони використовують git для файлів і передають базу даних між ними одним клацанням миші. Безкоштовно спробувати, і ви платите лише тоді, коли ви переходите "наживо" - youtube.com/watch?v=KpGTDeqwgX4
jgraup

Відповіді:


27

У мене є установка, якою я дуже пишаюся, і це надзвичайно добре працює для моєї команди.

Загальна структура

Я тримаю всю установку під git. Усі зміни, будь то оновлення системи, додавання / оновлення плагіна, додавання / оновлення теми, проходять через один і той же робочий процес. Зміни можна повернути за мить. У мене є сервер розгортання (старий робочий стіл P4), на якому працює gitosis, але ви можете так само легко використовувати github або gitolite . У git у мене є дві "спеціальні" гілки, masterі develop(пояснено докладніше нижче). Мої сервери виробництва та постановки базуються на хмарі.

Середовища розвитку

Кожен розробник запускає власний сервер розробки на власній машині. Що стосується баз даних, необхідність використання живих даних навряд чи колись була проблемою. В основному ми використовуємо дані тестового блоку . Інакше експорт та імпорт охоплюють більшість речей. Якщо фрагмент БД був вирішальним, ви можете налаштувати реплікацію або налаштувати щось для синхронізації за запитом. Коли я спочатку налаштовував цю структуру, я вважав, що це буде вирішальним, тому я почав писати набір інструментів для цього, але, на моє здивування, вони справді були не потрібні. (зверніть увагу: оскільки вони не були потрібні, я ніколи їх не відшліфував, тому є помилки, наприклад, це замінить домен у серіалізованих даних).

Постановочне середовище

Коли developкомітети висуваються з гілки на gitosis, вони автоматично розгортаються на наш сервісний сервер. Постановочна база даних є підлеглим виробничій базі даних.

Виробниче середовище

Коли комісії висуваються на гітоз на masterгілці, він автоматично розгортається на виробничий сервер.

Проблема wp-config.php

Ви хочете wp-config.phpбути унікальними від сервера до сервера, але ви також хочете тримати його під контролем версій. Моє рішення полягало в тому, щоб використовувати .gitignoreігнорувати wp-config.phpта зберігати версії постановки та виробництва як файли з різною назвою. Тоді на кожному сервері, я символічна наприклад wp-config.php -> wp-config-production.php. Потім кожен користувач зберігає власну БД із власними обліковими даними, із власними (не відстеженими) налаштуваннями wp-config.php.

Інші примітки

Я використовую Rackspace Cloud , який є феноменальним і недорогим. З його допомогою я можу зберігати сервери постановки та виготовлення ідентичними. Зараз я також пишу плагіни, які використовують їх API, щоб дозволити мені контролювати свої послуги прямо з WordPress, це чудово.

Каталоги кешу, каталоги завантаження файлів тощо, всі додаються до .gitignore. Якщо ви хочете, ви можете встановити завдання cron, щоб регулярно перевіряти завантаження та підштовхувати їх до гітозу, але це мені ніколи не здавалося необхідним.

Структура майстра / розробки встановлюється частково імітуючи модель розгалуження Вінсента Дріссена . Я також використовую його git-розширення git-flow, і я також дуже пропоную це.

У мене було близько 10 розробників, які працювали над цією структурою вже більше року, і з якою я мріяв працювати. Надійний, безпечний, швидкий, функціональний та спритний, ви не можете просити більше!


Я збираюся налаштувати інсталяцію wp аналогічним способом (але ми використовуємо svn), і я хотів підтвердити ваш процес оновлення плагінів і wp: завершити оновлення та перевірити програму dev, здійснити зміни, розгорнути їх під час постановки, перевірити, спритно наживо. Підводячи підсумок, ви ніколи насправді не оновлюєте інсталяцію wp на живому сервері, який ви вносите зміни за допомогою оновлень у репо?
paullb

1
А що стосується змін у БД, внесених за допомогою програми оновлення. Як це впливає на виробничу БД?
paullb

Цей робочий процес є правильним @paullb, і вам не доведеться турбуватися про оновлення БД. Те, як працює WordPress, оновлення запускаються після виявлення змін, тому це працює точно так само, як працює ручне оновлення (до ядра чи плагіна)!
Меттью Бойнес

@MatthewBoynes, привіт. Ви все ще використовуєте цей робочий цикл для своєї розробки? якщо так, я збираюся застосувати цей робочий процес до свого проекту. дякую :)
khakiout

Я цього не роблю, але лише тому, що це не стосується проектів, над якими я зараз працюю, які в основному розміщуються у VIPPress.com VIP. Якби це було застосовано, я б все-таки ним користувався (і фактично компанія, в якій я раніше працював, продовжує його використовувати).
Меттью Бойнес

4

По-перше, я вважаю, що важливо врахувати, що ви збираєтесь до контролю версій. Я б рекомендував не ставити весь каталог WP під VC. Я думаю, що має сенс розміщувати wp-content / themes / YourThemeName під VC. На великому сайті з великою кількістю складних плагінів я міг бачити і те, що включає wp-content / plugins. Якщо ви абсолютно повинні були, ви можете включити wp-content / uploads. Наведені нижче відповіді дещо зміниться, залежно від того, що ви контролюєте версією.

Враховуючи це, ось що я використовую:

Місцевий: встановіть стек LAMP на своєму пристрої. Використовуйте ту саму URL-адресу, що й веб-сайт для розробки. Використовуйте записи VirtualHosts та .host для моделювання середовища розробки з точки зору URL-адреси. Якщо ви просто VC'ing своєї теми, подумайте про використання SSHFS для посилання на wp-content / плагіни, wp-content / uploads. Подумайте про використання бази даних щодо інсталяції проекту для розробки, якщо ви справді не робите важкого підйому.

Розробка: Замовте робочу копію Repo у своєму WP-середовищі. Встановіть гачку POST-COMMIT у SVN для оновлення цього репортажу при кожному здійсненні комісії. Це дозволить синхронізувати його. (Вважайте це постійною інтеграцією бідної людини.)

Виробництво: Перевірте названий тег версії, який представляє остаточного кандидата. Коли вам потрібно використовувати нову версію, переключіть тег та оновіть репо.


Робоче середовище дуже добре підходить для тестування нічних побудов, і git wordpress оновлюється автоматично кожні 30 хвилин, окрім того, що децентралізується та працює краще для команд, я не знаю; я не знаю тих, хто перейшов на git / hg, який повернувся назад до використання svn.
Вік

1
Просто цікаво щодо ваших міркувань щодо того, щоб не ставити весь каталог WP під контроль версій. Це здається вузьким місцем у робочому процесі. Якщо розмістити WP у репо, всі розробники отримують однакову базу коду та версію WP. Це також дозволяє забезпечити послідовність у різних середовищах. Дивіться посилання Віка (на його відповідь) до умовних файлів wp-config.
Брайан Фегтер

2

Нещодавно ми відкрили RAMP . Примітка: це лише частина всього процесу, але синхронізація баз даних вмісту між серверами - це, мабуть, найскладніша його частина.


2

Я роблю це з git та mercurial, просто переконайтесь, що ви використовуєте приватне репо.

Варіант 1.

Єдина проблема - config.php, який ви можете сказати git ігнорувати під час push або перед init.

Використовуйте .gitignoreабо git update-index --assume-unchanged config.php(прочитайте трохи про припущену незмінну команду перед її використанням)

Варіанти 2.

Використовуйте умовний у config.php, який перевіряє URL-адресу та застосовує правильні облікові дані, в рядках "якщо URL-адреса сервера = dev, тоді використовуйте облікові дані A, інакше використовуйте облікові дані B" тощо.

Марк пояснює це краще, http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/

пс. Ви також можете сервери файлів безпосередньо з віддаленого репо, замість традиційного "файлового сервера". (дійсно нудне відео, яке я зробив про це http://www.youtube.com/watch?v=8ZEiFi4thDI )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.