В этой статье мы рассмотрим Pagoda Box , еще один PaaS (Платформа как Сервис). Если вы использовали другой PaaS в предыдущих проектах, Pagoda Box похож на Heroku . Pagoda Box — это только PHP (на данный момент) и имеет четко определенную архитектуру, чтобы начать разработку с PHP. Все в PB является компонентом. База данных — это компонент, веб-серверы , работники , cron-задания и кеширование . Наличие такой архитектуры не только облегчает разработку, но и позволяет контролировать использование денег. Этот пост будет кратким обзором этой платформы. Мы создадим основу и рассмотрим список плюсов и минусов, сравнивая ее с Heroku.
Краткая информация
Давайте посмотрим на компоненты, которые предлагает 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
. Вы должны увидеть что-то вроде этого, если вы все сделали хорошо.
Разверните первое приложение
Если вы еще не создали учетную запись на Pagoda Box, сначала создайте ее. Создать новое приложение. Вы можете начать с существующего проекта, из существующего хранилища или из пустого хранилища. Проект хранится локально, поэтому мы пойдем с третьим вариантом. Дайте ему имя и запустите приложение.
Если вы впервые создаете проект, вам необходимо настроить ключи SSH. Если вы не знакомы с ключами SSH, прочитайте эту статью Github о генерации ключей .
Перед выполнением команд, предлагаемых 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
Это запустит репозиторий Git в этом проекте, добавит все файлы, зафиксирует изменения, добавит удаленный репозиторий (репозиторий проекта в Pagoda Box) и отправит все на сервер. После выполнения этих команд нажмите кнопку «Перейти к панели инструментов приложения». Проверьте URL своего приложения в браузере, чтобы увидеть, все ли прошло хорошо. Если вы не знаете URL, это должно быть что-то вроде your-app-name.gopagoda.com
. Не беспокойтесь, если вы получите такой результат:
Первая причина этого заключается в том, что веб-сервер не указывает на скрипт начальной загрузки 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 в своем следующем проекте? Вы уже пробовали это? Что вы думаете об этом?