Статьи

Представляем Pagoda Box — PaaS только для PHP

В этой статье мы рассмотрим Pagoda Box , еще один PaaS (Платформа как Сервис). Если вы использовали другой PaaS в предыдущих проектах, Pagoda Box похож на Heroku . Pagoda Box — это только PHP (на данный момент) и имеет четко определенную архитектуру, чтобы начать разработку с PHP. Все в PB является компонентом. База данных — это компонент, веб-серверы , работники , cron-задания и кеширование . Наличие такой архитектуры не только облегчает разработку, но и позволяет контролировать использование денег. Этот пост будет кратким обзором этой платформы. Мы создадим основу и рассмотрим список плюсов и минусов, сравнивая ее с Heroku.

PagodaBox website screeshot

Краткая информация

Давайте посмотрим на компоненты, которые предлагает Pagoda Box.

Первый и самый важный компонент — это веб-компонент. Этот компонент содержит весь код и запускает его при каждом запросе. Это точка входа в приложение. Вы можете иметь до 25 экземпляров веб-компонентов. Вы можете выбрать от 200 МБ до 1 ГБ оперативной памяти для каждого. Всего у вас может быть 25 ГБ на приложение. Один веб-компонент объемом 200 МБ является бесплатным.

Компонент базы данных не нуждается в представлении. Единственная база данных, которую вы можете использовать сейчас, это база данных MySQL. Вы можете выбрать один из двух вариантов: Cloud MySQL и Private Cloud MySQL. Только Cloud MySQL имеет бесплатный базовый план с 10 МБ оперативной памяти. Он может быть масштабирован до 500 МБ для одного экземпляра, а частное облако MySQL поддерживает до 16 процессорных ядер, 16 ГБ ОЗУ и 300 ГБ памяти.

Компонент Caching поставляется в вариантах Redis и Memcached . Оба предоставляют бесплатный базовый план 10 МБ. У них обоих есть только версия Cloud — нет частного облака.

Pagoda Box также предлагает компоненты Cron Job, общие записываемые компоненты (с бесплатным тарифом 10 МБ) и SSL.

Настройка локальной среды

В этом примере мы увидим, как развернуть платформу Slim в Pagoda Box. Чтобы быть более точным, я выбрал Slim Skeleton, так как для него требуются каталоги с разрешением на запись.

Первое, что я делаю, когда начинаю новый проект, это настраиваю Homestead . Это не проект Laravel, а коробка, которую я предпочитаю использовать. Если вы предпочитаете использовать Homestead Improved, который проще и более готов к работе с несколькими платформами, посмотрите этот краткий старт . В противном случае продолжайте с инструкциями ниже. Если вы еще не знакомы с Homestead, пожалуйста, прочтите их документацию . Существует хорошее руководство с более подробной информацией.

После настройки Homestead.yaml с помощью homestead edit моя конфигурация выглядит примерно так:

 ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/projects/homestead/Code to: /home/vagrant/Code sites: - map: slim.app to: /home/vagrant/Code/slim-skeleton/public databases: - homestead variables: - key: APP_ENV value: local 

Следующее, что я делаю, это редактирую файл hosts на хост-машине. Я добавил slim.app с IP: 192.168.10.10 .

 192.168.10.10 slim.app 

Перейдите в папку проекта и затем клонируйте тонкий скелет. Папка моего проекта ~/projects/homestead/Code .

 git clone https://github.com/codeguy/Slim-Skeleton.git slim-skeleton 

После этого выполните homestead up . Перейдите в поле, используя ssh, чтобы установить зависимости, используя composer.

 homestead ssh cd Code cd slim-skeleton composer install 

Проверьте браузер на slim.app . Вы должны увидеть что-то вроде этого, если вы все сделали хорошо.

Slim Skeleton on Homestead

Разверните первое приложение

Если вы еще не создали учетную запись на Pagoda Box, сначала создайте ее. Создать новое приложение. Вы можете начать с существующего проекта, из существующего хранилища или из пустого хранилища. Проект хранится локально, поэтому мы пойдем с третьим вариантом. Дайте ему имя и запустите приложение.

Если вы впервые создаете проект, вам необходимо настроить ключи SSH. Если вы не знакомы с ключами SSH, прочитайте эту статью Github о генерации ключей .

Configure ssh keys on PagodaBox

Перед выполнением команд, предлагаемых Pagoda Box, сначала удалите существующие файлы Git из папки slim-skeleton .

 rm -rf .git rm .gitignore 

После удаления файлов git выполните следующие команды:

 git init git add . git commit -m 'your commit message' git remote add pagoda *your pagodabox git repository here* git push pagoda --all 

Pagodabox push terminal

Это запустит репозиторий Git в этом проекте, добавит все файлы, зафиксирует изменения, добавит удаленный репозиторий (репозиторий проекта в Pagoda Box) и отправит все на сервер. После выполнения этих команд нажмите кнопку «Перейти к панели инструментов приложения». Проверьте URL своего приложения в браузере, чтобы увидеть, все ли прошло хорошо. Если вы не знаете URL, это должно быть что-то вроде your-app-name.gopagoda.com . Не беспокойтесь, если вы получите такой результат:

PagodaBox first push without Boxfile

Первая причина этого заключается в том, что веб-сервер не указывает на скрипт начальной загрузки PHP. Начальный PHP-файл (начальной загрузки) находится в public папке. index.php внутри этой папки инициирует все, как в большинстве современных приложений PHP. Даже если мы перейдем в общую папку, мы должны увидеть некоторые ошибки. Это потому, что logs/ и templates/cache не доступны для записи. По умолчанию все доступно только для чтения. Мы должны сообщить веб-серверу, где находится файл инициализации, и что две папки должны быть доступны для записи.

Если в прошлом вы использовали другие платформы PaaS, возможно, вы использовали некоторые файлы конфигурации. На Pagoda Box конфигурационным файлом является Boxfile . Используя этот файл, вы можете указать платформе, какие компоненты вы хотите в приложении. Не забывайте, что каждый компонент настраивается. Например, вы можете захотеть иметь 3 веб-компонента, 2 частные базы данных MySQL, 2 директории с возможностью записи, возможно Redis для кэширования. Все это можно настроить через Boxfile. Когда вы помещаете свой код в Pagoda Box, платформа ищет Boxfile, и, если он есть, он создает среду, используя конфигурацию внутри.

Когда мы впервые выдвинули код без Boxfile, платформа строила проект с использованием стандартного Boxfile. Компоненты также можно настроить с помощью панели инструментов, но рекомендуется использовать Boxfiles. Допустим, у вас есть разные версии вашего приложения, и вы хотите выполнить откат к предыдущей. Платформа также будет масштабироваться до масштаба предыдущего.

Создайте Boxfile в корне проекта. В этом примере нам нужен 1 веб-компонент, 1 база данных MySQL, 2 директории с возможностью записи, 1 переменная среды (APP_ENV: production). Если вы заметили, в Homestead я использовал переменную среды, а в Pagoda — ту же переменную среды, но значение было другим. Поэтому, если я использую эту переменную среды, код будет работать без изменений в обеих средах. Мой последний Boxfile выглядит примерно так:

 web1: shared_writable_dirs: - logs - templates/cache document_root: public php_extensions: - mysql db1: name: slim type: mysql global: env: - APP_ENV: production 

Теперь нажмите все изменения.

 git add . git commit -m "Adding Boxfile" git push pagoda --all 

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

Плюсы и минусы

С Pagoda Box легко начать. Мне было проще, чем с Heroku, но я должен признать, что он немного устарел и не имеет много новых функций. Если вы заметили на панели инструментов, они объявляют версию PHP 5.5 как новую версию, когда версия 5.6 уже давно вышла. Их документация действительно хороша и очень вам помогает. Что мне больше всего нравится, так это область аналитики и простота масштабирования. Я могу очень легко масштабироваться, если мое приложение растет быстрее, чем я думал, но я не могу сравниться с Heroku (как ведущей платформой PaaS), потому что Heroku предлагает большую расширяемость. Я могу выбирать разные сторонние сервисы и пользоваться ими сразу. Кроме того, у Heroku есть лучшее определение архитектуры как создателя 12-факторного приложения . Pagoda Box ориентирована на PHP, в то время как на Heroku не так легко начать работать с PHP . Если вы новичок в PaaS с PHP, вам следует попробовать PagodaBox — особенно если вы просто ищете место для быстрого развертывания приложения. PagodaBox — идеальный прототип и пример для хоста.

Вывод

В этой статье мы увидели, что такое Pagoda Box, и как начать локальную разработку для него с помощью Homestead. Мы создали фундаментальное приложение, которое является хорошей основой для запуска вашего приложения. Но не останавливайся здесь. На панели инструментов PagodaBox есть много аналитических инструментов. Поэкспериментируйте с различными компонентами, которые вы не использовали в этой статье — если вы не сломаете вещи, вы никогда не научитесь, а на PaaS редко что-либо останется сломанным.

Ждем вашего ответа. Считаете ли вы Pagoda Box в своем следующем проекте? Вы уже пробовали это? Что вы думаете об этом?