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/ .