Каждый разработчик рано или поздно сталкивается с WordPress, учитывая, что это одна из самых популярных блоговых платформ/CMS, если не самая популярная. Как говорит Википедия, примерно 22% веб-сайтов работают на данной системе (что означает один сайт из пяти), она прекрасно известна пользователям, у нее есть многочисленное сообщество (более чем 30 тысяч предложенных плагинов), и она активно поддерживается разработчиками.
К сожалению, система WP был предназначена в основном для людей, которые не имеют навыков программирования, и потому работа с ней с точки зрения разработчиков, особенно если касаться потока операций, выглядит неудобной и устарелой.
Обычно поток операций включает в себя:
- Загрузка последней стабильной версии WordPress
- Переименование wp-config-sample.php в wp-config.php
- Если вы используете git (а вы должны это делать!), добавление wp-config.php к .gitignore
- Открытие соединения (по возможности не FTP, но скорее всего это будет именно оно) и (медленная) загрузка всего необходимого на сервер
- Создание удаленного wp-config.php с конфигурацией продакшна
- Запуск инсталлятора
- Надежда на то, что никто не перезапишет wp-config.php на локальную копию
С другой стороны, современные потоки операций строятся вокруг некоторой системы управления версиями (обычно git), в которой развертывание осуществляется путем передачи (pushing) ветви (branch) на публичный сервер.
Называется такой подход «push-to-deploy» и именно он используется в Heroku.
К счастью, несколько умных парней решили создать Docker и Dokku, два проекта, которые позволяют создать свой собственный heroku-подобный PaaS за пару минут (если вы хотите попробовать их, Digital Ocean предлагает облачные серверы с предустановленным Dokku всего за 5 долларов в месяц). Давайте посмотрим, как применить эти проекты к WordPress.
Дальше в статье я буду использовать следующие данные:
- app – название приложения
- dokku – адрес (или имя хоста, если задано) целевого сервера, на котором запущены Docker и Dokku
- dokku-user – пользователь, запускающий Dokku на удаленной машине
Сначала мы должны клонировать WP с github:
git clone [email protected]:WordPress/WordPress.git app
Затем мы создаем файл wp-config.php, изменяем параметры конфигурации на переменные среды, и коммиттим его. Таким образом, нам не придется задавать их в коде.
define('DB_NAME', getenv('WP_DB_NAME')); /** MySQL database username */ define('DB_USER', getenv('WP_DB_USER')); /** MySQL database password */ define('DB_PASSWORD', getenv('WP_DB_PASS')); /** MySQL hostname */ define('DB_HOST', getenv('WP_DB_HOST'));
git add wp-config.php git commit -m 'added WordPress configuration'
Та же самая техника может быть использована и при настройке ключей безопасности. Я не стал этим заниматься, чтобы лишний раз не раздувать руководство.
Если вы используете Apache, вы можете задать значения с помощью SetEnv, если вы работаете с Nginx и phpf-pm, вы можете использовать раздел ENV вашего пула приложения.
При развертывании через Dokku вам не понадобится все это.
Для нашего первого развертывания нам понадобится добавить новый remote, указывающий на наш сервер Dokku:
git remote add dokku dokku-user@dokku:app
И передать код:
git push dokku master
Вы увидите следующее:
Counting objects: 163187, done. Delta compression using up to 4 threads. Compressing objects: 100% (33726/33726), done. Writing objects: 100% (163187/163187), 84.87 MiB | 4.95 MiB/s, done. Total 163187 (delta 128758), reused 163156 (delta 128730) -----> Building app ... PHP (classic) app detected -----> Bundling NGINX 1.4.3 -----> Bundling PHP 5.5.5 -----> Bundling extensions phpredis mongo -----> Setting up default configuration -----> Vendoring binaries into slug -----> Discovering process types Default process types for PHP (classic) -> web -----> Releasing app ... -----> Deploying app ... -----> Cleaning up ... =====> Application deployed: http://app_url To dokku@dokku:app * [new branch] master -> master
Как вы видите, все уже поставляется вместе с билдпаком PHP. Dokku обнаружил PHP приложение и дал Docker’у команду создать изолированный контейнер, который может запускать приложение.
Вы можете теперь открыть браузер и перейти к app_url (у него может быть два формата: http://ip_adress:port или http://app.defaultdomain). В любом случае это должно привести к запуску вашего приложения).
Наш wp-config в данный момент полностью пустой. Сервер ответит следующим образом:
Это – хорошие новости, поскольку это означает, что сервер фактически отвечает на наш запрос.
Чтобы завершить установку, нам нужно сделать следующее:
- Создать базу данных
- Настроить среду приложения с учетными данными
Чтобы создать базу данных в нашем контейнере приложения, нам понадобится плагин MariaDB plugin for Dokku.
Есть также MySQL-плагин, однако у него имеется раздражающий баг, а поскольку MySQL и MariaDB практически идентичны, мы будем придерживаться последнего.
Установка плагина для Dokku очень проста (напоминает обычный запуск):
cd /var/lib/dokku/plugins git clone https://github.com/Kloadut/dokku-md-plugin mariadb dokku plugins-install
Некоторые из плагинов не требуют финального шага plugins-install, однако это никоим образом не повредит.
Совет: вы можете запускать dokku команды на своей локальной машине и выполнять их на удаленном сервере: ssh dokku-host dokku-command (к примеру, ssh dokku help).
Теперь мы можем создать базу данных:
ssh dokku mariadb:create app -----> Creating /var/www/dokku/app/ENV -----> Setting config vars and restarting app DATABASE_URL: mysql2://root:[email protected]:49170/db -----> Releasing app ... -----> Release complete! -----> Deploying app ... -----> Deploy complete! -----> app linked to mariadb/app database -----> MariaDB container created: mariadb/app Host: 172.17.42.1 Port: 49170 User: 'root' Password: 'VQpzDZRrEUAkUuAI' Database: 'db'
И задать переменные среды:
# the format is dokku config:set app key=value key=value # I splitted up the command on different lines for clarity ssh dokku config:set app WP_DB_HOST='172.17.42.1:49170' ssh dokku config:set app WP_DB_NAME='db' ssh dokku config:set app WP_DB_USER='root' ssh dokku config:set app WP_DB_PASS='VQpzDZRrEUAkUuAI'
Если все прошло верно, то вы должны увидеть стандартную установку WordPress.
Выберите заголовок, создайте администратора и – все готово!
Вы можете работать над своей локальной копией, добавлять плагины, работать над темой, и когда процесс работы будет завершен, вы можете просто передать все изменения, после чего приложение будет автоматически развернуто и сконфигурировано.
Мы рассказали вам, что можно сделать с помощью Docker и Dokku.
Hi, I’m the original author of the article you kindly translated.
Can you please point the source to the permalink of the article and link it?
thank you!
Ok!
Thx for the article!