LoginSignup
6
7

More than 5 years have passed since last update.

Google App EngineでComposerを使う

Last updated at Posted at 2016-06-19

Google App Engine上のPHPアプリケーションでComposerを使う方法

前回のGoogle App EngineでHello, World!(PHP)では、Google App EngineでPHPが動作するところまでを試しました。今回は、より複雑なアプリケーション作成の準備としてComposerでライブラリを使えるようにしてみたいと思います。

準備

今回はComposerでインストールしたライブラリがGoogle App Engineで動作する事を確認するのが目的なので、確認が簡単なFakerを使うことにしました。Fakerは氏名や住所など個人情報のダミーデータを作成するためのライブラリです。

まずは、ソースコードを管理しておくのに適切なディレクトリにcomposer.json を用意します。

{
    "require": {
        "fzaninotto/faker": "1.6.*"
    }
}

composerでライブラリをインストールする
composer install

コマンド実行後、ディレクトリは以下のようになります

- composer.json
- composer.lock
- vendor/
   +- autoload.php
   +- composer/..
   +- fzaninotto/...

index.htmlの作成

前回のサンプルではapp.yamlindex.phpがすべて同じディレクトリに保存されていました。複雑なアプリケーションを作成していくのには少々心許無い気がします。今後はユーザーからアクセスされるファイル類はwebsiteディレクトリに保存することにします。

今回のindex.phpは以下のように作りました。
Fakerの使い方は公式のreadme.mdを参照して下さい。

<html>
    <head>
        <meta charset="UTF-8">
    </head>
<body>

<?php
require '../vendor/autoload.php';

$faker = Faker\Factory::create('ja_JP');
for ($i=0; $i < 10; $i++) {
  echo $faker->name, '<br />', "\n";
}

app.yamlの作成

前回のapp.yamlを元にしつつ、今回のapp.yamlは以下のようにしました。大きな違いはskip_filesを指定していることです。skip_filesで指定したファイルはApp Engineにアップロードされなくなります。
セキュリティ上の懸念になりうるファイル、アプリケーションの動作に無関係なファイルはアップロードしないように設定しておくといいでしょう。
handlersではwebsiteディレクトリ以下のindex.phpを参照するように指定してあります。

application: <YOUR_PROJECT_ID>
version: alpha-003
runtime: php55
api_version: 1
threadsafe: true

skip_files:
- ^(.*/)?app\.yaml
- ^README\..*
- ^(.*/)?composer\.(phar|lock|json)$
- \.gitignore
- ^\.git/.*
- ^(.*/)?(.*\.swp)

handlers:
- url: /.*
  script: website/index.php

App Engineにデプロイ

準備が整ったので本番環境へデプロイを行います。
appcfg.py update ./

以下のURLで動作確認します。
http://<YOUR_PROJECT_ID>.appspot.com/

スクリーンショット 2016-06-19 20.45.01.png

Fakeが生成したダミーの氏名が表示されることが確認できました。

ポイント

Google App Engineだからという事で特筆することもなく、composerでインストールしたライブラリを利用することができましたが、あえてポイントを書くのであれば…

  1. composerが生成したディレクトリも含めてアップロードする
  2. PHPからvendor/autoload.phpへのpathを通す

この2点です。今回の最終的なファイル構成は以下のようになっています。

- composer.json
- composer.lock
- vendor/
   +- autoload.php
   +- composer/..
   +- fzaninotto/...
- website/
   +- index.php

ここまで読んでいただき、ありがとうございました。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7