memori

Alternative facts

Google App Engine で PHP 7.1 を動かしてみるよ (Flexible Environment)

前提として、ローカル環境はこんな感じです

  • macOS 10.12
  • PHP 7.1.8 (homebrew/php/php71)
  • Google Cloud SDK 等導入済み
    • gcloud コマンド使用可能

ひとまず、Slim を使ってみることにします。

composer create-project slim/slim-skeleton try-gaephp7

これで、以下のようなファイルが作られます。

ls -1
CONTRIBUTING.md
README.md
composer.json
composer.lock
logs/
phpunit.xml
public/
src/
templates/
tests/
vendor/

今回はフレームワークの読み込みと、PHP バージョンの確認のために

src/routes.php

<?php
// Routes

$app->get('/', function ($request, $response) {
    // Sample log message
    $this->logger->info("Slim-Skeleton '/' route");

    // Render index view
    return $this->renderer->render($response, 'index.phtml', [
        'version' => phpversion(),
    ]);
});

templates/index.phtml

<p>PHP Version: <?= $version ?></p>

のようにしてみました。

ひとまずは手元で動かしてみます。 Slim の Skeleton からプロジェクトを作ると、 composer run-script start というコマンドでローカルサーバーが起動します。

http://localhost:8080/ をブラウザで開くとちゃんと動いているのが確認できました。

f:id:riaf:20170830121442p:plain

それでは、今度はこれを GAE の Flexible Environment で実行したいと思います。

まず、GAE の設定ファイル (app.yaml) を以下のようにしました。

runtime: php
env: flex

runtime_config:
  document_root: public

そして composer.jsonphp バージョンを PHP 7.1 系で動かしたいので "php": "7.1.*", と変更してみます。

nginx-app.conf も設置します。app.yaml と同じところに配置できる設定ファイルは他にもいくつかあります。 https://cloud.google.com/appengine/docs/flexible/php/configuring-your-app-with-app-yaml#the_runtime_config_section

location / {
  try_files $uri /index.php$is_args$args;
}

これで、gcloud app deploy --promote を実行すると、まあなんか色々聞かれたり答えたりしたのちにデプロイ完了しました

https://try-gaephp7.appspot.com