Задать вопрос

Какой рецепт автоматического развертывания wordpress-сайта с помощью Deployer?

Приветствую!

Есть wordpress-сайт. Задача: настроить автоматическое развертывание.
В качестве оператора развертывания пока вижу Deployer. На этой странице описан базовый рецепт. Но, кажется, что, там не хватает: создания/обновления БД, и т.д.

Какой скрипт будет более подходящим ?
Или есть варианты лучше как это всё сделать ?

Спасибо.
  • Вопрос задан
  • 744 просмотра
Подписаться 4 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
zorca
@zorca Куратор тега WordPress
Базу данных лучше обновлять через WP-CLI.
Установка:
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp

Таск для экспорта-импорта и подмены домена в базе пишется за минуту:

desc('Export-import database');
task('database', function () {
runLocally('wp db export wp.sql');
upload('wp.sql', "{$deploy_path}/wp.sql");
run('wp db import wp.sql');
run('wp search-replace //example.dev //example.com');
});

Код накидал на скорую руку, естественно нужно добавить переменные путей, задать подменяемые домены и так далее. Предполагается что на серваке и на локалке WP-CLI установлен и откликается на аббревиатуру wp из командной строки. Ну и нельзя забывать, что WP-CLI работает только из корневой папки сайта с Wordpress. Можно задать другую папку, положив в корень сайта файлик: wp-cli.yml. Для автмоатического деплоя базы нужно выгружать в репу свежий wp.sql. Тогда команда экспорта отпадает за ненадобностью.
Проблема на самом деле только в загрузке папок с аплоадом. Автоматика предполагает, что деплой работает при наступлении некоего события в репозитории проекта, а сам процесс деплоя происходит на виртуальной машине, у которой нет доступа к аплоаду, так как его нет в репозитории. Если отправлять сразу с локалки, что назовем полуавтомат(пример таска выше), то задача упрощается в разы, но на Винде придется помучиться с загрузкой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы