Прошло много времени с тех пор, как Google объявил о поддержке PHP в Google App Engine . Эта серия статей проведет вас через все необходимые шаги по настройке вашего приложения на GAE.
В этом руководстве мы будем использовать PhpStorm, который поддерживает проекты GAE из коробки, но вы можете использовать любую IDE по вашему выбору.
Начните с соблюдения предварительных условий для вашей платформы. Это необходимо, поскольку SDK Google App Engine требует, чтобы определенное программное обеспечение работало локально, а именно Python, который запускает «сервер».
Если по какой-либо причине в вашем экземпляре PhpStorm отсутствует плагин GAE, перейдите в «Предпочтения» и найдите его в браузере плагинов — он доступен для загрузки и установки через репозитории плагинов.
Регистрация приложения в GAE
Чтобы разработать приложение для GAE, сначала необходимо зарегистрировать его и получить идентификатор приложения. Перейти к https://appengine.google.com/ и войдите в свою учетную запись Google. После этого нажмите кнопку «Создать приложение» на панели инструментов и введите необходимую информацию в форму.
Начиная проект
Чтобы начать новый проект GAE PHP, просто выберите его из выпадающего меню и заполните необходимые данные.
Как только вы согласитесь, IDE автоматически создаст два файла: app.yaml
main.php
Если вы не используете PhpStorm, вы можете создать их самостоятельно.
app.yaml
application: sitepoint-test
version: 1
runtime: php
api_version: 1
threadsafe: true
handlers:
- url: .*
script: main.php
main.php
<?php
echo 'Hello, world!';
Давайте объясним не требующие объяснения атрибуты YAML.
threadsafe
Для получения дополнительной информации прочитайте эти два вопроса StackOverflow.
Это значение кажется необязательным, но я обычно склоняюсь к тому, чтобы Google и Jetbrains знали, что они делают и видят, поскольку нет надлежащей документации по указанному свойству, давайте оставим это.
handlers
Шаблоны URL являются регулярными выражениями, и эту часть файла YAML можно использовать для определения маршрутов.
На этом этапе вы можете при желании ввести параметры проекта в PhpStorm, а в Google App Engine для PHP вы можете ввести имя пользователя и пароль своей учетной записи Google, чтобы их не запрашивали их при развертывании.
Тестирование приложения
У нас есть два способа тестирования нашего «приложения».
Обратите внимание, что вам НЕОБХОДИМО выполнить первый путь хотя бы один раз, прежде чем пробовать второй, потому что первый задает вам вопрос об обновлении Python, который PHPStorm в настоящее время не пересылает. Так что, если вы обнаружите, что ваша версия PHPStorm не работает, попробуйте сначала запустить ее через терминал, скажите «да», затем выключите и попробуйте снова с PHPStorm. Спасибо Дейву Уайерсу за этот совет.
- Бег из терминала
- Запуск от PhpStorm
Запуск приложения из терминала
Чтобы запустить сервер из терминала, введите следующее:
{google_appengine folder}/dev_appserver.py {project folder}
или, в моем случае, особенно, когда я заменяю фигурные значения реальными:
google_appengine/dev_appserver.py gae01/
Это запускает сервер приложений и указывает его на папку, указанную в качестве первого параметра. Когда вы делаете это, происходит две вещи: консоль администрирования запускается по адресу http://localhost:8000
http://localhost:8080
Если вы посетите консоль администратора, вы увидите множество полезной информации от содержимого memcache до cronjobs и многое другое:
Если указать его на http://localhost:8080
Обратите внимание, что если вы получите The path specified with the --php_executable_path flag () does not exist.
ошибка при запуске приложения, это означает, что сервер приложения не знает, где находится php-cgi, и поэтому не может его запустить. Просто добавьте его в строку исполнения:
google_appengine/dev_appserver.py --php_executable_path=/usr/bin/php-cgi gae01/
Узнать, где находится ваш php-cgi, очень просто — введите whereis php-cgi
Запуск приложения из PhpStorm
Чтобы запустить его из PhpStorm, нажмите «Изменить настройки» в меню «Выбрать конфигурацию запуска / отладки»:
Большая часть информации в появившемся диалоговом окне уже будет заполнена. Единственным пропущенным значением будет «Путь к исполняемому файлу php-cgi», который вы можете узнать, введя whereis php-cgi
В Linux мой был в /usr/bin/php-cgi
После нажатия кнопки «Применить» и «ОК» нажмите зеленую стрелку рядом с меню «Выбрать конфигурацию запуска / отладки» или просто нажмите Shift + F10 в качестве ярлыка для команды «Выполнить по умолчанию». Консоль PhpStorm должна выводить информацию о сервере, который она только что запустила, и http://localhost:8000
http://localhost:8080
Запуск через PhpStorm имеет дополнительное преимущество: он может устанавливать точки останова и выполнять пошаговую отладку. Просто нажмите рядом с номером строки в вашем коде (в стоке окна редактора), и должен появиться красный шар. Это точка останова. При запуске приложения сервер останавливается, как только достигает этой точки, что позволяет вам проверять текущие определенные переменные, потребление памяти и многое другое.
развертывание
Существует три способа развертывания нашего приложения в GAE:
1) Через терминал / командную строку
2) Через PhpStorm
3) Через Git
Развертывание через терминал
Загрузка приложения через терминал так же проста, как вызов {google_appengine}/appcfg.py update {project folder}
google_appengine/appcfg.py gae01/
Развертывание через PhpStorm
Для развертывания из PhpStorm перейдите в Инструменты -> Google App Engine для PHP -> Загрузить приложение PHP App Engine…
Если вы ввели свои учетные данные в настройках проекта, процесс начнется автоматически без каких-либо вопросов. В противном случае вам будет предложено ввести имя пользователя и пароль, а затем плагин вызовет ту же команду, которую вы вызываете вручную при развертывании через терминал.
Развертывание через Git (Push-to-Deploy)
Push-to-deploy пока находится в экспериментальном состоянии, но вам стоит потратить время и силы на его освоение.
Чтобы настроить PTD, вам нужно войти в облачную консоль и найти там свое приложение.
Нажмите на название вашего приложения, выделите «Cloud Development» в левом меню и нажмите «Create New Repo».
Сохраните URL репо и нажмите «Получить пароль». Это должно привести к появлению строки, не похожей на machine code.google.com login {user} password {pass}
{user}
{pass}
Скопируйте эту строку в файл с именем .netrc
Если вы используете Windows, она должна называться _netrc
В Windows также должна быть определена переменная HOME, что можно сделать, вызвав setx HOME %USERPROFILE%
Все, что вам нужно сделать сейчас, это связать удаленный URL-адрес с репо, имеющимся на вашем локальном компьютере (либо добавить удаленный, либо клонировать напрямую с URL-адреса репо, который облачная консоль предоставила вам ранее), и запустить его. Поскольку приложение, которое мы создали в этой статье, уже существует, давайте сделаем Git-репозиторий поверх него и добавим в него удаленный URL. Чтобы предотвратить загрузку мусора IDE вместе с нашими исходными файлами, добавьте этот файл .gitignore в папку.
cd gae01
git init
git add .
git commit -am 'Initial commit'
git remote add appengine REPO_URL
Замените REPO_URL на URL репо, который вам дала облачная консоль. Последняя команда добавляет удаленную ссылку к локальному репо, которая привязывает его к удаленному репо. Эта ссылка называется «appengine» — appengine — это просто метка, вы можете выбрать свою собственную, но нет особого смысла в использовании чего-то другого, кроме пояснительного значения по умолчанию, показанного здесь.
Всякий раз, когда вы вносите изменения, используйте репо, как обычно. Вы даже можете установить Github-репозиторий на стороне и добавить еще одну удаленную ссылку в этот локальный репозиторий. Это позволит вам иметь контроль версий на Github, если вы привыкли к нему больше, чем коду Google, и при этом все еще развертывать в GAE через PTD, когда вы извлекаете изменения из Github и нажимаете на ссылку appengine.
Чтобы запустить приложение онлайн, просто позвоните
git push appengine master
Обратите внимание, что вы можете иметь столько веток, сколько захотите, как в любом репозитории Git, но только нажатие на ветку master фактически приведет к развертыванию в реальной среде. Кроме того, ваш исходный код защищен от посторонних глаз, репозиторий не является общедоступным и виден только администраторам и участникам. Однако, если пользователь отключит PTD и включит его снова, хранилище будет уничтожено и будет создано новое — восстановить старый не удастся. Будьте осторожны с тем, кому вы даете разрешение.
Посещение соответствующего URL-адреса сейчас (your-app-id.appspot.com) должно привести к появлению сообщения Hello World, а нажатие на имя репо в облачной консоли предоставит вам список истории версий и обзор исходного кода.
Вывод
Google App Engine — отличный способ развертывания приложений с высокой степенью масштабируемости и высокой пропускной способностью Их бесплатные квоты позволяют примерно 5 миллионов просмотров в месяц, что достаточно легко для любого приложения, а масштабирование за пределами квоты, когда это необходимо, всего лишь одним щелчком мыши.
В этой статье мы рассмотрели базовое развертывание с IDE и без и объяснили механизм Push-To-Deploy. Следите за новостями, которые появятся в ближайшее время, и дайте нам знать ваши мысли в комментариях ниже!