deploy a php app on google app engine

Post on 23-Aug-2014

475 Views

Category:

Internet

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

PHP was added to the languages offered by Google App Engine about a year ago. This session will focus on porting an existing app on gae. We’ll start talking about the main characteristics of the app engine platform, which kind of services are available (persistence, storage, queue and so on) and how to use it. Then the PHP installation of app engine will be discussed, highlighting implementation choices and limitations. The second part of the talk will go into implementation details in particular about what tweaks are needed to run an existing app on gae e.g: how session is managed, logging is performed and how to interact with the file system not forgetting about deploy

TRANSCRIPT

Deploy !a PHP Application!on Google App Engine

Who am I?

Michele Orselli!CTO@Ideato! !@_orso_!mo@ideato.it

Titolo Testo

PHP for App Engine

https://developers.google.com/events/io/sessions/333055646

The GAE platform

Platform as A Service (PaaS)!

Build, deploy & scale!

Don’t care about infrastructure

https://appengine.google.com/https://developers.google.com/appengine/

Google App Engine: services

All PaaS have limitations!

PHP is in preview phase!

Not all services are available

https://developers.google.com/appengine/features

Google App Engine: data storage

Google Cloud Sql !

Memcache!

Google Cloud Storage

Google App Engine: ext services

Email (internal or SendGrid)!

Twilio!

UrlFetch

Google App Engine: offline work

TaskQueue!

Cron

Google App Engine: auth

User Auth!

Application Identity

Titolo Testo

PHP on GAE

PHP 5.4!

Runs in a sandbox

https://developers.google.com/appengine/docs/php/

PHP on GAE

Some well-know extension are disabled: imagick, intl, pcntl, curl

PHP on GAE

Some well-know extension are disabled: imagick, intl, pcntl, curl

PHP on GAE

whaaat?

Some function are disabled!

permanently: exec, tmpfile!

partially: /e on preg_replace!

softly: gc_*, parse_str

PHP on GAE

File System is Read only: you can store files on Cloud Storage or external services

PHP on GAE

PHP on GAE

Cannot invoke external services directly (no curl remember? :-P)

PHP on GAE

PHP on GAE

Dynamic response max 32 MB!

Timeout on long response

PHP on GAE

Sessions are stored on Memcache !

session_*, $_SESSION work as expected!

use session_set_save_handler to change handler

PHP on GAE

Log are managed via syslog!

use syslog function!

use custom logging lib (eg. Monolog)

PHP on GAE

PHP on GAE

get the sdk!

requirements: python 2.7, php-cgi, mysql?!

local web server

wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.4.zip

App Engine SDK

# app.yaml application: propane-forge-391 version: 1 runtime: php api_version: 1 threadsafe: true

Base Config

# app.yaml application: propane-forge-391 version: 2 runtime: php api_version: 1 threadsafe: true

Base Config

# app.yaml — continued handlers: - url: /css static_dir: web/css - url: /js static_dir: web/js - url: .* script: web/index.php

Base Config

# php.ini google_app_engine.enable_functions = “…”

Base Config

!dev_appserver.py --php_executable_path=/usr/bin/php-cgi /

var/www/todo/

Test Locally

Deploy

!appcgf.py update /var/www/todo/!

(or git push)

show me the code!

https://github.com/ideatosrl/silex-todo-gae

That’s all folks

Thank you!@_orso_ mo@ideato.it

top related