Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress

Запуск WordPress на OpenShift Часть 2

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

В этом уроке мы глубоко погрузимся в OpenShift, чтобы понять процесс сборки и развертывания. Мы также изучим инструмент командной строки для ведения логов и устранения неполадок, когда наше приложение не работает.

Мы также рассмотрим некоторые бонусные советы, чтобы использовать функции SSH, предлагаемые OpenShift. Кроме того, мы рассмотрим, как синхронизировать наше локальное окружение с удаленным окружением, включая базу данных, исходные файлы и медиафайлы.

Первая часть этой серии дала краткий обзор OpenShift. Мы обсудили, как создать приложение, получить URL-адрес сервера, имя нашей учетной записи и настроить собственный домен.

Мы выполнили почти все эти задачи, используя веб-интерфейс, который является большим и очень удобным; однако, помимо панели управления, OpenShift предлагает мощный клиентский rhc client. Мы можем вызвать его из командной строки для выполнения администрирования и обслуживания OpenShift. После того, как вы установили инструмент, вы можете создавать приложения, добавлять картриджи и быстро добавлять gear. Это швейцарский армейский нож. Возможно, вам это не понадобится, но это очень удобно.

Установка клиента командной строки OpenShift

В документации OpenShift очень четко сказано об установке этой клиентской библиотеки. Библиотека написана на Ruby, поэтому убедитесь, что у вас установлен Ruby. В принципе, вам нужно только установить rhc gem на Mac или Linux. Вероятнее всего Git и Ruby уже установлены, поэтому вам нужно всего лишь запустить:

Затем настройте его с вашим именем пользователя и паролем. Когда вас попросят сгенерировать токен? Введите «Yes».

Теперь, когда у нас установлена утилита, давайте немного поиграем с ней.

Прежде всего следует отметить, что команда rhc предоставит вам список доступных команд. Вы можете получить их список с помощью rhc help. Он показывает краткий обзор каждой команды. Команда rhc help command_name покажет вам, как использовать определенную команду.

Для команды, которая взаимодействует с приложением, вы должны указать имя приложения с помощью -a appname или просто добавить имя приложения; однако, если вы запускаете команды внутри своего репозитория Git, который вы клонировали раньше, вы можете опустить его. Имя приложения можно увидеть с помощью команды rhc app. Пример с моим предыдущим приложением demo2. Вместо того, чтобы вводить в него имя учетной записи и имя сервера в SSH, я могу использовать эту команду:



Иногда может быть полезно запустить развертывание без какого-либо пуша. Предположим, мы хотим развернуть WordPress из определенного Git-commit или специальной ветки.

См. следующий пример:


Или показать информацию о приложении:


Вы также можете сохранить снимок текущего приложения:

Или вы можете добавить некоторые картриджи:

Конечно, не стесняйтесь экспериментировать с несколькими различными командами. Все довольно наглядно и легко понять, и поскольку все находится под системой контроля версий, легко отменить изменения.

Что происходит, когда вы делаете пуш в свой репозиторий?

В первой статье мы увидели, что всякий раз, когда запускается git push для развертывания ветви, приложение будет развернуто. Согласно документации OpenShift, вот что происходит:

  1. Вы запускаете git push на своем компьютере, ваши изменения отправляются в приложение OpenShift
  2. Приложение останавливается
  3. Ваши изменения скопированы на сервере в правильное место
  4. OpenShift вызывает ваши хуки сборки - файлы сценариев, которые вы разместили в своем репозитории Git
  5. Ваше приложение запускается

Шаг 4 - это обработка файлов сценариев в вашем .openshift / action_hooks. OpenShift выполнит эти файлы сценариев, которые будут проверены в вашем репозитории Git в определенных точках процесса развертывания.

Если соответствующий файл сценария не существует, процесс развертывания будет продолжаться в обычном режиме. Опять же, все хуки должны быть помещены в каталог .openshift/action_hooks/ в репозитории приложений. Отдельные этапы каждой сборки:

  1. Предварительное получение. Во время вашего пуша OpenShift проверяет, поддерживает ли ваше приложение согласованное состояние. Для этого шага нет никакого хука.
  2. Pre-Build. Это происходит после того, как приложение остановлено, и новый репозиторий был развернут, но до сборки. Запускает сценарий .openshift/action_hooks/pre_build
  3. Сборка. Этот шаг создает ваше приложение, загружает необходимую зависимость, выполняет скрипт .openshift/action_hooks/build и подготавливает все для развертывания. В WordPress мы не используем этот шаг, поскольку WordPress просто нужно заглянуть в корневой каталог документа и запустить веб-сервер, никаких специальных требований к сборке. Обычно мы используем этот хук для загрузки WordPress и извлекаем его в правильное место на OpenShift.
  4. Развертывание. Этот шаг происходит прямо перед запуском приложения. Любая необходимая подготовительная работа для того, чтобы приложение было готово к запуску, должна выполняться в .openshift/action_hooks/deploy hook. В рамках WordPress мы используем этот хук, чтобы скопировать данные вышеуказанной сборки в корень документа, скопировать плагин и тему (.openshift/themes и .openshift/plugin) в нужное место.
  5. Пост-Deploy. Некоторым приложениям может потребоваться взаимодействие с запущенным приложением для завершения процесса развертывания. После запуска приложения будет запущен хук .openshift/action_hooks/post_deploy.

Вы можете полностью настроить эти сценарии для своих целей. Сценарии сборки выполняются напрямую, то есть вы можете писать их на любом языке, независимо от того, что это Bash, Ruby или Python, если вы ставите правильный shebang, например если вы используете bash.

Или Ruby

Я предпочитаю писать простой скрипт Bash для целей сборки, и я буду использовать его в этом уроке. Bash есть где угодно, и его синтаксис настолько прост, что вам на самом деле и не нужно знать Bash, чтобы понять некоторые сценарии.

Что касается WordPress, мы не выполняем много задач в процессе сборки, потому что PHP не требует ее; однако мы используем этот процесс сборки для подготовки некоторых данных. Файл .openshift/action_hooks/build проверяет, создан ли WordPress на OpenShift, если он не загрузит WordPress с WordPress.org, создайте необходимый каталог, извлеките и скопируйте содержимое исходных файлов WordPress в нужное место. Со второго развертывания скрипт сборки почти ничего не делает, потому что WordPress установлен. Чтобы настроить скрипт сборки, нам нужно знать переменные среды.

Переменные среды OpenShift

Во время процесса сборки и документирования нам нужно знать некоторые данные OpenShift, такие как корневой путь документа, путь данных и имя приложения. Эта информация доступна в переменных окружения, для которых здесь есть полный список.

Некоторые переменные, которые мы будем использовать часто, следующие:

  1. OPENSHIFT_HOMEDIR. путь к домашней директории. На вашем локальном компьютере Linux у вас будет домашний каталог пользователя в /home/username или в Mac OS X это /Users/username. Домашний каталог - это папка, в которой вы будете находиться, когда вы заходите удаленно через SSH. Это /var/ lib/openshift/user_account_id. Например, мой собственный /var/lib/openshift/532bd7655004468bcf0000e1.
  2. OPENSHIFT_REPO_DIR$OPENSHIFT_HOMEDIR/app-root/runtime/repo/.  Репозиторий, содержащий текущую развернутую версию (приложения). Это то же самое, что и в вашем репозитории на вашем локальном компьютере, за исключением того, что папка php теперь является символической ссылкой на документ root; поэтому $OPENSHIFT_REPO_DIR/php может использоваться в скрипте сборки для ссылки на корневой каталог документа.
  3. OPENSHIFT_DATA_DIR. $OPENSHIFT_HOMEDIR/app-root/data/
  4. OPENSHIFT_APP_UUID. Уникальный идентификатор вашего приложения в OpenShift. UUID может быть очень удобен, когда вы начинаете генерировать пути.

Мы обращаемся к этой переменной в нашем скрипте сборки с переменной $variable_name.

Процесс выборочной сборки и развертывания

Остановимся на нашей текущей структуре репозитория:

Мы начнем с действия Hello World, поэтому у нас будет представление о том, что будет выводиться, когда и как мы настраиваем скрипт сборки.

Ваш Hello World Build

Давайте добавим это echo "Hello world. This is invoked before building." в ваш ./openshift/pre_build

Сделайте пуш в репозиторий, и вы увидите следующий вывод:
Как вы видите, наше сообщение появляется во время процесса сборки. Теперь давайте сделаем реальную копию файлов во время процесса сборки.

Копирование файла в корне документов

Если вы вспомните предыдущий шаг, файлы в .openshift/themes и .openshift/plugins будут скопированы в wp-content/themes и wp-content/plugins. Предположим, мы хотим сделать то же самое для копирования файла в корень документа.

Вы хотите создать под папку resume и поместить в нее файл resume/my_resume.txt и сделать его доступным через demo2-tutsplus.rhc-cloud.com/resume/my_resume.txt. Давайте создадим каталог для хранения данных, которые мы скопируем в корень документа. Мы создаем docroot для вызова папки внутри .openshift и все, что внутри него будет скопировано.

Откроем .openshift/action_hooks/deploy, выделим строку 49 (я делаю ее полужирным)

После этого мы добавили эту команду.

Строка с # является комментарием, для нашей собственной ссылки. echo-строка - это просто вывод некоторых результатов. Реальная команда, которую мы использовали, - это cp, чтобы рекурсивно копировать все файлы и папки.

Теперь добавьте что-нибудь в .openshift/docroot и разверните приложение.


Ваше упражнение

Используйте папку php в вашем репозитории, чтобы сохранить этот контент, вместо того, чтобы вводить .openshift/docroot.

Подсказка

app-deployments/current/repo содержит точно такую же копию вашего репозитория. Все, что у вас есть на вашей локальной машине, будет здесь.

Устранение неполадок и поддержка

В предыдущей части вы знали, как получить удаленный доступ к вашему приложению с SSH. Как только вы входите, вы можете использовать команды Linux.

Тем не менее, rhc поставляется с командой ssh, позволяющей подключиться к приложению. Быстро и легко запомнить.


Здесь вы всегда можете использовать help для отображения доступных команд.

  1. tail_all: вывод всего вашего лога. Вы можете видеть ведение лога в реальном времени с помощью этой команды для всех gear в системе: например, журнал доступа Apache, журнал ошибок MySQL.
  2. mysql выводит вас в оболочку MySQL. Очень удобное сравнение с вводом длинной команды mysql с именем хоста, пользовательской строкой и паролем.
  3. export показать все текущие переменные среды. Во время работы со скриптом сборки вы можете использовать эту команду, чтобы просмотреть список доступных переменных среды.
  4. gear для управления вашим gear: запуск, остановка, перезагрузка. Так вы можете перезапустить apache, остановите mysql.
  5. snapshot полностью резервирует ваш текущий WordPress со всеми файлами, дампом базы данных и мультимедийными данными. Очень хороший способ получить полную резервную копию вашего сайта.
  6. quota покажите свою дисковую квоту. Полезно, когда вы больше не можете загружать в WordPress, может закончиться свободное место.

Как сделать снимок

rhc snapshot-save demo2 делает дамп вашей базы данных, сжимает медиа-файл и исходный код, собирает tar-файл и загружает его для вас.

По умолчанию создается файл tar с тем же именем, что и ваше приложение. Храните его где-нибудь на всякий случай. После сохранения моментального снимка вы также можете восстановить его.

Проверка состояния gear

Команда gear управляет состоянием картриджа, запуском/остановкой. Когда например вы получаете ошибку таймаута при посещении вашего домена, или ошибку 404, 503 или ошибку базы данных. Вы должны использовать SSH в своем приложении и проверить статус gear:

Если он говорит, что CLIENT_RESULT Application is either stopped or inaccessible, я должен начать с:

Следующим шагом будет просмотр вашего файла с логами.

Ведение логов

tail_all покажет вам логи картриджей в реальном времени. Однако, если вы хотите посмотреть отдельный лог, то вот список:

  1. php/logs логи посещей и ошибок Apache и MySQL
  2. mysql/log MySQL логи

Перенаправление порта

Команда rhc port-forward может помочь вам установить локальное соединение с вашим размещенным сервисом (веб-сервер, сервер базы данных ...). OpenShift автоматически проверяет доступные порты в локальной системе и перенаправляет их на удаленный порт запущенного сервиса. Через переадресацию портов вы можете работать на локальном компьютере, но соединение пересылается на удаленную машину.

Давайте попробуем с MySQL.

У меня был порт 8080 и 3306 для разных приложений. Поэтому OpenShift выбрал 3307 для MySQL. Теперь я могу использовать учетные данные MySQL для подключения к нему с помощью Sequel Pro. Если вы забыли свой пароль, вы можете получить его снова на панели управления OpenShift или SSH на сервере и выпустить:

Использование Sequel Pro для подключения.

Благодаря переадресации портов вы можете легко подключиться к приложению с помощью программы GUI

Синхронизация локальных и живых окружений

Все любят разрабатывать на локальной машине, а не загружать на сервер для тестирования или оценки функции. Вы можете экспортировать данные с хоста и импортировать на локальный компьютер для этой цели, как в этом руководстве. Однако этот процесс экспорта раздражает. Данные могут быть большими, занимать все больше и больше времени при экспорте/импорте. Исправлять баги также при этом довольно трудно. Если ошибка возникает только на конкретной странице на реальном сайте, ее может быть сложно отладить в локальной среде.

Или, если вы - удаленная команда, и ваша команда создала множество тестовых сообщений на промежуточной/тестовой площадке (хостинг на OpenShift), будет хорошо, если у вас есть хороший способ просто синхронизировать все, особенно данные изображений ,

Поэтому я предлагаю метод для достижения этого с помощью: переадресации портов и редактирования файлов хоста. Используя переадресацию портов, как мы видели выше, мы можем легко получить доступ к MySQL с локальной машины. С помощью редактирования файла хоста мы можем указать домен openshift.axcoto.com на локальный компьютер, а не на OpenShift. В нашем клоне репозитория у нас есть пустая папка php. При развертывании эта папка заменяется символической ссылкой на document root Apache. Теперь мы будем использовать эту папку в качестве document root на нашей локальной машине. Вспомните структуру репозитория еще раз, на моем компьютере.

Обратите внимание, что для достижения успеха в этом методе вы должны добавить все, что у вас есть в wp-content/plugins (по умолчанию плагины WordPress 3.8.1) и wp-content/themes (по умолчанию темы WordPress 3.8.1) в OpenShift в ваш репозиторий Git. Вы можете загрузить его через scp или SFTP, как мы обсудили в предыдущей статье, или вы можете просто загрузить по умолчанию из WordPress.

Просто убедитесь, что ваш локальный репозиторий .openshift/themes и .openshift/plugins имеют тот же контент что и папки wp-content/themes и wp-content/plugins приложения WordPress в OpenShift.

Шаг 1: Переадресация портов

Используя команду rhc port-forward demo2, где demo2 - мое приложение. Измените его на свое имя приложения.

Шаг 2. Виртуальный хост

Используя Apache, мы добавим еще одну запись для нашей точки домена в папку, содержащую наш WordPress. В зависимости от вашей ОС у вас может быть другое местоположение для конфигурации Apache. Это может быть /etc/apache2 или /etc/httpd.

Например, на моем Mac это /etc/apache2. Я добавлю код ниже в свой /etc/apache2/httpd.conf, или /etc/apache2/extra/httpd-vhosts.conf, в зависимости от вашей ОС или того, где вы предпочитаете.

Если вы не знакомы с Apache и Virtual host, вот некоторые статьи, которые вам помогут немного разобраться:
  1. https://code.tutsplus.com/articles/apache-2-basic-configuration-on-unix-like-systems--net-26607
  2. http://code.tutsplus.com/articles/how-to-setup-a-wordpress-development-environment-for-windows--wp-2...
  3. http://code.tutsplus.com/tutorials/wordpress-development-and-deployment-with-mamp-git-and-dropbox--w...

Шаг 3: Переменная среды

При запуске на вашем локальном компьютере у вас не будет доступной переменной окружения. Мы должны их где-то определить. Для простого запуска я предпочитаю поместить эту переменную непосредственно в конфигурационный файл Apache с помощью SetEnv.

Наш виртуальный хост становится:

Я захватываю переменную среды OpenShift и просто помещаю ее в наш файл конфигурации. Но я меняю хост MySQL на 127.0.0.1 и порт MySQL на 3307, потому что раньше мы уже настроили этот порт.

Шаг 4: Изменение файла хоста

openshift.axcoto.com настроен на OpenShift. Однако мы можем переопределить его, непосредственно отредактировав /etc/hosts. Откройте этот файл в любимом редакторе и добавьте

Подтвердите, что он указывает на нашу локальную машину.

Если вы хотите посетить реальное приложение OpenShift, закомментируйте эту строку в /etc/hosts. Поместите «#», чтобы закомментировать:

Затем openshift.axcoto.com снова укажет на сайт.

Шаг 5: Вытяните файлы WordPress и синхронизируйте медиа с реальным сайтом

Наконец, мы должны скопировать медиа и файлы WordPress в нашу локальную среду. Мы также создаем символическую ссылку для указания php/wp-content/themes на .openshift/theme. Эта же концепция применяется для плагинов, php/wp-content/plugins, которые указывают на .openshift/plugins. Таким образом, мы можем работать над .openshift/themes и .openshift/plugins и обновлять браузер, чтобы увидеть наши изменения.

В первый раз, когда вы хотите синхронизировать данные, вы запускаете эти команды; однако, поскольку второй раз мы не хотим вытаскивать все файлы. Лучшим вариантом является только файл загрузки sync. Мы можем сделать это с помощью scp:

Или с rsync. Rsync намного лучше, потому что он загружает только не существующие файлы.

Вы можете пойти еще дальше, поместить эти команды в сценарий оболочки и отслеживать их с помощью своего репозитория Git. Я оставлю эту часть для вас :)

Вы можете игнорировать файл внутри php, потому что этот файл предназначен только для нашего собственного тестирования/работы на локальном компьютере. Не нужно отслеживать их.

Шаг 6: Администрирование через SSL (необязательно)

Файл wp-config.php, сгенерированный OpenShift, предназначенный для обслуживания администратора через SSL

На вашем компьютере у вас обычно нет сертификата SSL. Вы можете отредактировать wp-config.php и установить FORCE_SSL_ADMIN в false. Если вам нужен вызов, и вы хотите попробовать запустить SSL-соединение, то вот инструкция.

Создание SSL сертификата

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

Мы создаем папку /etc/apache2/ssl, затем сгенерируем сертификат и ключ в эту папку. Мы установим apache в эти два файла позже.

Определение входа в виртуальный хост

Откройте файл /etc/apache/httpd.conf (опять же, ваш файл конфигурации Apache может находиться в другой папке, например /etc/httpd), найдите строку Listen 80 и добавьте Listen 443

В верхней части вашего /etc/apache2/extra/httpd-vhost.conf найдите строку NameVirtualHost *: 80 и добавьте

Затем мы определяем еще одну запись в виртуальном хосте для порта 443. Мы просто дублируем предыдущее определение с портом 80, но на этот раз мы добавляем определение SSL.


Обратите внимание на путь к файлу сертификата SSL. Перезапустите Apache с помощью команды sudo apachectl restart. Теперь вы можете получить доступ к панели управления через SSL. Вот моя установка WordPress, работающая полностью локально с той же базой данных с реального сайта, и данные мультимедиа синхронизируются.

Вывод

В течение этой серии мы получили много знаний об OpenShift. Вы сможете легко установить и настроить WordPress на OpenShift. С помощью удобного клиента rhc вы можете быстро настроить или просмотреть информацию о приложении с терминала.

Мы также рассмотрели сборку и развертывание сценариев, чтобы вы могли настроить приложение под свои нужды, например, показывать специальный баннер и отправлять сообщение в HipChat во время развертывания. Вы даже можете синхронизировать данные между вашим локальным компьютером и OpenShift. Надеюсь, вам понравится этот учебник и OpenShift.

Оставляя комментарий, сообщите нам, как ваши успехи. Если у вас возникнут проблемы, сообщите мне в комментарии, я бы хотел вам помочь.

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.