В этом уроке мы узнаем, как установить пользовательские расширения на Heroku. В частности, мы будем устанавливать Phalcon .
Зарегистрируйтесь и настройте
Чтобы использовать Heroku, вы должны зарегистрировать учетную запись Heroku. Heroku обычно работает с интерфейсом командной строки. Чтобы использовать этот интерфейс, вам необходимо установить пакет инструментов Heroku для вашей операционной системы. Если вы используете Linux, откройте терминал и введите следующую команду.
wget -qO- https://toolbelt.heroku.com/install.sh | sh
После установки пояса для инструментов у вас будет доступ к команде heroku из командной оболочки. Авторизуйтесь, используя адрес электронной почты и пароль, которые вы использовали при создании учетной записи Heroku:
heroku login
Enter your Heroku credentials.
Email: [email protected]
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /home/duythien/.ssh/id_rsa.pub
Нажмите enter при появлении запроса, чтобы загрузить существующий ключ ssh или создать новый, который будет использоваться для последующего ввода кода.
Phalcon является сторонним расширением и, следовательно, не входит в состав PHP. Phalcon требует следующих компонентов:
mbstring
mcrypt
openssl
PDO
PDO/Mysql
PDO/Postgresql
PDO/Sqlite
PDO/Oracle
Основными из них являются mbstring и mcrypt — mbstring используется механизмом шаблонов (Volt), а также некоторыми валидаторами, escape-фильтром и фильтром, а mcrypt используется в компоненте безопасности (создание безопасных хэшей и т. д.)
Чтобы установить вышеупомянутые элементы, мы будем использовать инструмент PHP buildpack. Давайте объясним, что это значит.
Согласно официальной документации Heroku, buildpack-пакеты обеспечивают магию и гибкость, которые делают запуск ваших приложений на Heroku таким простым. Когда вы нажимаете свой код, buildpack — это компонент, который управляет настройкой вашей среды, чтобы ваше приложение могло работать. Пакет buildpack может устанавливать зависимости, настраивать программное обеспечение, манипулировать ресурсами и делать все остальное, необходимое для запуска вашего приложения. У Heroku не всегда были пакеты сборки, это новый компонент, поставляемый со стеком Cedar.
Вы можете получить больше информации об этих трех шагах и больше через документацию buildpack.
Чтобы начать, мы разветвляем этот код на github . Нажмите кнопку «Вилка» в хранилище. Чтобы иметь возможность работать над проектом, вам нужно будет клонировать его на свой локальный компьютер.
Запустите следующий код:
git clone https://github.com/duythien/heroku-buildpack-php.git buildpack-php
cd buildpack-php
Создайте файл phalcon.sh
$HOME/buildpack-php/bin
#!/bin/bash
# Build Path: /app/.heroku/php/
dep_url=git://github.com/phalcon/cphalcon.git
phalcon_dir=cphalcon
echo "-----> Building Phalcon..."
### Phalcon
echo "[LOG] Downloading PhalconPHP"
git clone $dep_url -q
if [ ! -d "$phalcon_dir" ]; then
echo "[ERROR] Failed to find phalconphp directory $phalcon_dir"
exit
fi
cd $phalcon_dir/build
# /app/php/bin/phpize
# ./configure --enable-phalcon --with-php-config=$PHP_ROOT/bin/php-config
# make
# make install
BUILD_DIR=$1
ln -s $BUILD_DIR/.heroku /app/.heroku
export PATH=/app/.heroku/php/bin:$PATH
bash ./install
cd
echo "important extension phalcon into php.ini"
echo "extension=phalcon.so" >> /app/.heroku/php/etc/php/php.ini
Этот файл установит Phalcon, но Heroku должен быть проинструктирован, чтобы выполнить его. Для этого вам нужно отредактировать файл bin / compile и добавить где-то следующую строку:
[...]
source $BP_DIR/bin/phalcon
[...]
Кроме того, вам нужно добавить текстовое extension=phalcon.so
conf / php / php.ini »:
[....]
extension=phalcon.so
; Local Variables:
; tab-width: 4
; End:
Теперь мы можем загрузить наш новый buildpack-пакет:
git add -A
git commit -m "edit php.ini and create phalcon file"
git push origin master
Создать новое приложение на Heroku
Создайте каталог для своего приложения и измените на него:
mkdir phalcon-dev
cd phalcon-dev
Кроме того, вам необходимо указать Heroku, что это приложение является приложением PHP. Для этого создайте пустой файл с именем composer.json
В системе Unix вы можете создать этот файл следующим образом:
touch composer.json
Затем выполните следующее, чтобы инициализировать репо для нашего приложения:
git init
git add -A
git commit -m" first commit"
Чтобы создать новое приложение Heroku, в которое вы можете нажать, используйте команду CLI create:
heroku create phalcon-dev
Creating phalcon-dev... done, stack is cedar
http://phalcon-dev.herokuapp.com/ | [email protected]:phalcon-dev.git
Git remote heroku added
Это создает приложение на Heroku, готовое и ожидающее нашего кода, а также присоединяет git remote к нашей локальной кодовой базе. Теперь вы готовы развернуть приложение, но кода пока нет. Следуйте следующему разделу, чтобы добавить контент в свое приложение.
Ваш файл composer.json
{
"require": {
"php": "5.5.12"
}
}
Он автоматически установит такие расширения, как mcrypt, mbstring и т. Д. На Heroku. Если вам нужен mongodb, memcached и т. Д., Измените файл дальше:
{
"require": {
"php": "5.5.12",
"ext-memcached": "*",
"ext-mongo": "*"
}
}
Теперь Heroku включит соответствующие расширения PHP и поместит их в папку support / build / extensions / no-debug-non-zts-20121212 . Затем создайте файл test.php
<?php phpinfo() ; ?>
Наконец, давайте развернем установку Phalcon:
heroku config:set BUILDPACK_URL=https://github.com/duythien/heroku-buildpack-php
git add -A
git commit -am "installl phalcon"
git push heroku master
Первая команда означает переопределить пакет сборки по умолчанию Heroku, указав пользовательский пакет сборки в конфигурации BUILDPACK_URL var . Через несколько минут результаты выглядят следующим образом:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /app/.heroku/php/lib/php/extensions/no-debug-non-zts-20121212/
Thanks for compiling Phalcon!
Build succeed: Please restart your web server to complete the installation
important extension phalcon into php.ini
-----> Discovering process types
Procfile declares types -> (none)
Default types for PHP -> web
-----> Compressing... done, 124.0MB
-----> Launching... done, v8
http://phalcon-dev.herokuapp.com/ deployed to Heroku
To [email protected]:phalcon-dev1.git
4f1d993..e0936a5 master -> master
Это взяло наш код, отправило его в Heroku, идентифицировало его и запустило процесс сборки, подготовив его к развертыванию. Теперь наше приложение живет в интернете! Чтобы убедиться в этом, откройте его сейчас:
heroku open test.php
Если все идет хорошо, вы должны увидеть следующий экран в вашем браузере:
Настройте веб-корень и разверните образец сайта
Теперь перейдем к сложной части, которая задает веб-корень. Для указания корневого веб-узла требуется немного больше работы и справочной информации. Корень приложения веб-сайта Phalcon в дереве git — это /app/phalcon-website/public
Для Heroku по умолчанию корень сети является корнем git-дерева. Этот каталог внутренне сопоставлен с /app
Чтобы изменить это, нам нужно создать так называемый Procfile, который запускает sh-скрипт при каждом запуске веб-узла приложения Heroku. Затем этот сценарий изменяет конфигурацию сервера и включает вашу собственную конфигурацию, которая устанавливает корневой веб-каталог в /app/phalcon-website/public
Создайте файл Procfile со следующим содержимым (если вы используете Apache):
web: vendor/bin/heroku-php-apache2 phalcon-website/public
Клонируйте веб-сайт Phalcon в папку репо, и когда это будет сделано, команда git push отправляет все коммиты на локальном мастере в центральный репозиторий.
cd && cd phalcon-dev
git clone --depth=1 http://github.com/phalcon/website phalcon-website
git add Procfile phalcon-websiste/
git commit -am " test phalcon website"
git push heroku master
Посетите общедоступный URL-адрес приложения и вуаля, здесь у вас есть работающий клон Phalconphp.com на Heroku.
В заключение
Установка Phalcon (или любого другого расширения PHP) на Heroku, очевидно, не является ни простой, ни простой, но если вы используете buildpack-пакеты, она становится намного более доступной.
Оставьте свой отзыв в комментариях ниже и, как всегда, поделитесь этой статьей, если она вам понравилась!