Розробка, тестування та випуск


10

Як ви розробляєте, тестуєте та розгортаєте для проживання свої Wordpress сайти?

Я завжди знаходжу трохи факсу, особливо це стосується баз даних - головним чином через те, що для тестування сайту потрібна розгортання нової бази даних, яка іноді може бути ТОЧНО однаковою, за винятком того, що всі посилання змінені на тестова URL-адреса, а не веб-сайт.

Аналогічно, будь-які завантаження, які користувачі завантажували з останнього разу, коли вам потрібно було виправити помилку чи розробити щось нове, доведеться скопіювати на тестовий сайт.

Як це роблять інші? Ви просто мирилися з фафом? Чи використовуєте ви розумні системи управління версіями, які допомагають?

Дякую


Якщо ви зробите систему, яка перетворюється на зміну файлу хостів , то вам ніколи не доведеться спілкуватися зі своїм тестовим БД. ( wordpress.stackexchange.com/a/10943/9142 )
Олександр Птах

Відповіді:


12

Існує трохи особистої філософії, яка переходить у робочий процес розгортання. На це непросте запитання відповісти прямо, не знаючи свого досвіду роботи з серверами та контролем версій, операційною системою, хостингом, досвідом клієнта та технологічною культурою тощо ...

  1. Ось подібне питання, яке має багато пояснень.
  2. Для розгортання вмісту можна перевірити плагін RAMP Crowd Favorite .
  3. WP хакери - це чудова нитка для пошуку хорошої інформації про розгортання.

Особисто я переконуюсь, що я ніколи не важко кодую абсолютні URL-адреси у своїх темах. Використовуйте bloginfo () або URL-адреси щодо коду. Я використовую багато умовних умов у своєму файлі wp-config.php. Ось ванільна версія мого редагування wp-config.

switch($_SERVER['SERVER_NAME']){
    case 'dev.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        //define debugging
        break;
    case 'stage.yourdomain.com':
        $db_host = '';
        $db_pass = '';
        break;
    default: //Live
        $db_host = '';
        $db_pass = '';
}
define('DB_PASSWORD', $db_pass);
define('DB_HOST', $db_host);

//You could also set this as a variable above
define('WP_HOME', 'http://'.$_SERVER['SERVER_NAME']));
define('WP_SITEURL', 'http://'.$_SERVER['SERVER_NAME']));

Я працюю на багатьох сайтах, які слідкують за

  • локальний (особистий злом :) на моєму веб-сервері ноутбука)>
  • dev (тестування на клієнтському сервері)>
  • етап (стабільне джерело для QA - редагування вмісту)>
  • виробництво (прямий сайт)

Нарешті, я б запропонував вам скористатися інструментом версії для допомоги у розгортанні, наприклад, GIT або SVN. Це суттєво полегшує процес і підтримує цілісність джерела між середовищами. Зв'язок з вашим місцевим легко оновлюється за допомогою командного рядка на сцені та постановці. Найкраще під час виявлення визначити, якою версією ви керуєте та клієнтом користуєтесь з самого початку, якщо у них є розробники, які працюють над проектом. Я особисто використовую GIT для контролю версій. Однак, якщо клієнт використовує SVN, я створюю суміш цих двох на моїх локальних, тож я підтримую репо для себе, одночасно беручи на себе їх репо.

У нас рідко виникають проблеми з міграцією з одного середовища в інше. Ми робимо пошук / заміну в БД, щоб відповідно змінити URL-адресу для вбудованих носіїв інформації тощо.


Це дуже корисно! :) Дуже дякую. Отже, кожного разу, коли ви розгортаєтесь на кожному з різних серверів, ви дублюєте базу даних з активного сайту? Ви говорите, що ви розгортаєтесь на сервісі, що здійснює встановлення (stage.domain.com) для забезпечення якості та редагування вмісту. Що станеться, якщо база даних зміниться під час запуску сценічного сервера на веб-сайті? тобто ви або ваш клієнт переходите на етап і оновлює деякий вміст, але в той же час учасник публікує нову статтю на веб-сайті в прямому ефірі? Ви просто впливаєте на редагування вмісту ПРОТИ на веб-сайті? Як ви вирішуєте зміни структури бази даних?
Томас Клейсон

Вибачте за всі питання! : p Я дуже вдячний за ваш час та допомогу.
Томас Клейсон

У новому наборі функцій ви можете вийти з prod> stage. Потім додайте вміст нової функції, натисніть назад етап> prod. Звідти етап - це копія продукту з високою вірністю, і ви можете витягнути сцену> dev. Не часто ми тягнемо БД назад зі сцени. Більшість обмінів з БД відбувається від стадії до продукту, якщо особливість не змінить архітектуру db.
Брайан Фегтер

Якщо ви хочете використовувати етап для розгортання вмісту і ніколи не торкатися prod, ви можете перевірити плагін RAMP, який я розміщував раніше.
Брайан Фегтер

+1 усе вище, за умови, що деякі дратівливі плагіни наполягають на збереженні URL-адрес у серіалізованих масивах, що може зіпсувати переміщення речей з одного БД env до іншого. Проблема полягає в тому, що серіалізовані масиви зберігають довжину рядків, і вони змінюються при зміні довжини. Таким чином, я б рекомендував зберігати однакові доменні імена env, якщо це можливо, наприклад, dev.example.com, tst.example.com, www.example.com тощо.
webaware
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.