Heroku — очень хороший поставщик Platform-as-a-Service , который позволяет вам сосредоточиться на написании приложений, а не на управлении серверами. Если код вашего приложения уже управляется в Git, в большинстве случаев вам нужно всего лишь создать настройку приложения Heroku, а затем git push, чтобы развернуть его в Heroku. Масштабировать ваше приложение легко, и в их магазине приложений есть много полезных дополнений .
Хотя Heroku получил свое начало от размещения приложений Ruby on Rails, в настоящее время он поддерживает множество различных сред в стеке Cedar. Многие используют Node.js, но они также поддерживают PHP .
Управление зависимостями легко для приложений Node.js, поскольку Heroku распознает ваши файлы package.json и автоматически устанавливает библиотеки, необходимые через NPM .
До сих пор разработчики PHP не имели такого удобства, но так как Composer становится менеджером пакетов PHP по умолчанию , я теперь добавил его поддержку . До принятия запроса на получение уже можно использовать обработку зависимостей Composer, указав мой пользовательский сборочный пакет PHP при создании приложений Heroku.
Я написал простой пример приложения, чтобы показать, как это работает.
Сначала вам нужно создать папку для вашего приложения и сделать ее Git-репозиторием:
$ mkdir myapp $ cd myapp $ git init
Затем создайте приложение Heroku с помощью пользовательского пакета сборки (когда запрос на получение принят, вы можете пропустить определение пакета сборки):
$ heroku create -s cedar --buildpack https://github.com/bergie/heroku-buildpack-php.git my-cool-app
Затем пришло время написать файл composer.json . В этом случае мы будем зависеть только от библиотеки urlize :
{ "require": { "php": ">=5.2.0", "midgard/midgardmvc-helper-urlize": "*" } }
Чтобы Heroku распознал приложение как PHP, вам также необходимо иметь index.php. В этом случае с помощью следующего кода:
<?php // URLizer service require 'vendor/midgard/midgardmvc-helper-urlize/interface.php'; if (isset($_GET['urlize'])) { $data = array(); $data['from'] = $_GET['urlize']; $data['to'] = midgardmvc_helper_urlize::string($_GET['urlize']); header('Content-type: application/json; charset=utf-8'); die(json_encode($data)); } header('Content-Type: text/html; charset=utf-8'); ?> <h1>Urlizer service</h1> <form method="GET"> <label> String to URLize <input name="urlize" type="text" /> </label> <input type="submit" value="URLize" /> </form>
Теперь добавьте и передайте эти файлы, а затем разверните их в Heroku:
$ git push heroku master
Вы должны увидеть, что Heroku замечает зависимости Composer и устанавливает их:
-----> Heroku receiving push -----> Fetching custom buildpack... done -----> PHP app detected -----> Bundling Apache version 2.2.22 -----> Bundling PHP version 5.3.10 -----> Installing Composer dependencies Installing dependencies - Package phptal/phptal (dev-master) Cloning e146361f25b8672d364695b757eddf1c169e05d2 - Package midgard/midgardmvc-core (dev-master) Cloning 2b00d38cb2fea42c8f9791c5ecc7270dc81182e8 - Package midgard/midgardmvc-helper-urlize (dev-master) Cloning 92d0c8c638c389b7be1887ca67cd334f51932912 midgard/midgardmvc-core suggests installing ext-midgard2 (>=10.05.5) Writing lock file Generating autoload files -----> Discovering process types Procfile declares types -> (none) Default types for PHP -> web -----> Compiled slug size is 13.2MB -----> Launching... done, v13
И это все! Вы можете увидеть пример этого приложения на http://urlizer-service.herokuapp.com/ .