Я задавав це питання більше року тому, і за цей час ми додали більше людей до нашої команди та розробили набагато більшу кількість сайтів у WordPress. Я хотів пройти наш процес, якщо він може допомогти іншим.
Все в Git
Це я щось робив, навіть коли я задавав питання, але добре це назвати. Використання Git не тільки допомогло нам бути більш продуктивними, але й врятувало наші колективні дупи кілька разів.
Вам коли-небудь потрібно було зробити капітальні реконструкції сайту, отримати схвалення цих оновлень від клієнта, і весь цей час робити незначні оновлення до неремонтованої версії? У нас є, і Гіт дасть нам це зробити. Опис цього налаштування буде дещо затятим, але основи полягають у тому, що ми створили нову гілку, витягнули її на сервер і приєднали піддомен до цієї гілки.
Нас також врятував Git. Звичайно, це дозволяє нам повертати зміни, що чудово, але це також дозволяє повернути старі версії файлів. Це означає, що якщо клієнт запитує: "Згадайте, як ця частина сайту працювала близько року тому? Чи можемо ми повернути це?", Відповідь - так, навіть якщо запитувана особа не була в цьому проекті рік тому.
Окрім цих моментів, це також означає, що ми ніколи не залишаємось без потрібних файлів. Ми завжди можемо зняти найновішу версію сайту з будь-якої машини і почати вносити зміни.
Використовуйте Git для розгортання
Ми проводимо WordPress хостинг на Media Temple , і нам вони дуже подобаються. Вони не найдешевший постачальник, але їх сервіс чудовий і їх сервери справді налаштовані. Також надайте Git за замовчуванням. Це означає, що ми можемо налаштувати сервер як сховище Git і таким чином витягнути зміни замість SFTP. Це також означає, що виконання роботи над сервером не загрожує перезаписом (оскільки ці зміни можна просто об'єднати і відсунути назад).
Оскільки ми використовуємо BitBucket як наш Git-хост, тут потрібно трохи додаткової роботи. Перш за все, ми використовуємо .ssh / config файли, щоб ми могли вводити такі речі, як ssh sitename
увійти на наші сервери (ми також використовуємо SSH без паролів , що робить це дуже просто). Ми також переконуємось, що завжди використовуйте SSH-фрази (Mac OS X робить це дуже просто, дозволяючи зберігати свою парольну фразу в Keychain.app ). Нарешті, ми додаємо рядок ForwardAgent до запису .ssh / config на хостах, з яких ми хочемо вийти. Це означає, що нам потрібен лише відкритий ключ SSH для кожної людини в BitBucket, а не відкритий ключ кожного сервера. Ми також не забудьте зберегти .git
каталог один каталог над загальнодоступним каталогом HTML.
Автоматизовані звалища баз даних
Як тільки сервер перебуває у виробничому режимі, ми гарантуємо автоматичне резервне копіювання нашої бази даних, про всяк випадок .
У кожного є свій wp-config
Оскільки у нас є власні імена користувачів і паролі локальної бази даних, і тому що ми могли використовувати різні імена та механізми обслуговування, кожен з них зберігає свій власний файл wp-config. Кожен із них зберігається в Git з таким ім'ям wp-config-gavin.php
, і коли ми хочемо використовувати цю конфігурацію, ми посилаємо його на wp-config.php
(що ігнорується Git за допомогою .gitignore ).
Це також дозволяє нам перекрити siteurl
параметр у wp_options
таблиці бази даних так:
define('WP_SITEURL', 'http://sitename.localhost');
define('WP_HOME', 'http://sitename.localhost');
Це не дозволяє WordPress переглядати базу даних про розташування сервера, а це означає, що немає локальних відмінностей у розташуванні між локальними та серверними установками.
Останнє зауваження про файли wp-config.php: переконайтеся, що зберігаються над загальнодоступним каталогом HTML і дозволяють прочитати дозволи лише для веб-користувачів . Це робить величезну різницю в забезпеченні WordPress.
Випуск бази даних
Нарешті, м'ясо матерії.
Що мені довелося погодитись, це те, що при використанні WordPress немає хорошого способу "злити" зміни бази даних. Натомість нам потрібно було розробити правила поведінки, щоб вирішити це. Правила досить прості, і нам добре служили до цих пір.
Під час розробки є одна людина, яка "володіє" сайтом. Ця особа зазвичай робить налаштування (збирає хостинг-пакет разом, запускає проект Basecamp, нарізає дизайн тощо). Після того, як ця людина перейде до розумного моменту, скиньте базу даних для встановлення WordPress і помістіть її в Git. З цього моменту кожен, хто займається розробкою, використовує цей дамп бази даних, і власник - єдиний, хто вносить зміни в базу даних.
Як тільки збірка сайту стає трохи далі, сайт ставиться на сервер. З цього моменту база даних сервера є канонічною. Кожен (включаючи власника) повинен внести всі зміни в базу даних на сервері та змінити зміни для локальної розробки та тестування.
Цей процес не є досконалим. Все ще можливо, що комусь може знадобитися внести зміни в сервер WordPress локально під час розробки, а потім доведеться знову внести ці зміни у виробництво. Однак ми виявили, що така річ є рідкісною, і цей процес працює для нас досить добре.