65.9K
CodeProject 正在变化。 阅读更多。
Home

Google Cloud 上的 PHP Web 应用

starIconstarIconstarIconstarIconstarIcon

5.00/5 (5投票s)

2013年9月3日

Apache

4分钟阅读

viewsIcon

38812

演示了 Google Cloud 对 PHP 的实验性支持。

介绍  

本文旨在演示 Google Cloud 中最近宣布的 PHP 实验性支持。感谢 Google 允许我访问此尚未在 Google App Engine 上公开提供的技术栈。我利用一个周日快速整理了这篇文章,以帮助希望在 Google Cloud (Google App Engine) 上使用 PHP 的技术人员,它是一个优雅且可靠的 PaaS 平台,可用于托管 WebApp。一些 Google Cloud 的经验会有帮助,但并非强制要求。

Wordle

背景 

在过去的十年里,Web 技术不断涌现新的趋势。PHP 是一项经得起时间考验的技术。尽管看起来 PHP 正在失去其魔力,随着 Node.js 和 Ruby 等新技术的稳步发展,它仍然非常庞大。这正是 Google 和 Microsoft 不得不在其云产品中支持 PHP 的原因。Microsoft 在 Azure 仍处于 Beta 阶段时就意识到了这一点。我甚至还写了一个简单的自定义 PHP 博客引擎运行在 Microsoft Azure 上。(这是 Microsoft India 于 2009 年组织的 thecloudapp.com 竞赛中 PHP 类别的获胜者)。   

然而,Google Cloud (PaaS) 最初坚持使用 Python,随后是 Java 和 Go 语言。最近,Google 宣布了对 PHP 的实验性支持。对我来说,这是亡羊补牢。这为 PHP 爱好者提供了一个绝佳的机会,并可能成为 Google Cloud 的游戏规则改变者。我相信 Google 将尽快向所有人开放这项服务。目前,如果您在此处请求,Google 可能会允许您启用 PHP 应用程序部署到 App Engine。

第一步:设置

要做的第一件事是为 Google Cloud 设置您的开发环境。只需下载并安装 Google App Engine SDK 和 PHP(在我这里是 GoogleAppEngine-1.8.3.msi 和 php-5.4.17-Win32-VC9-x86.zip)。如果您将 Java 用于 GAE,使用 Eclipse 作为 IDE 会有所帮助,但在此情况下并非必需。您操作系统的相关说明可在此处找到。

第二步:创建  

缺乏清晰的文档使得应用程序的创建变得有些棘手。第一步是创建一个 Python Google Cloud 应用,或者直接从 SDK 中获取示例应用。它包含一个配置文件 app.yaml。我们只需要修改几行即可将其变为 PHP Web 应用。

1. 将 python 替换为 php。  

runtime: php  

2. 替换 PHP 文件的处理程序。注意如何指定静态文件。    

handlers:
- url: /css
  static_dir: css
 
- url: /js
  static_dir: js
 
- url: /fonts
  static_dir: fonts
  
- url: /assets
  static_dir: assets
 
- url: /shortener
  script: shortener.php
 
- url: /phpinfo
  script: phpinfo.php
  
- url: /.*
  script: index.php
 

3. 在根文件夹中创建 php.ini 文件,用于您可能想要使用的一些受限功能。    

; php.ini
google_app_engine.enable_functions = "php_sapi_name, php_uname, phpinfo" 

第三步:实现 

编写您的 PHP Web 应用。在此我编写了一个简单的基于 Twitter BootStrap 3.0 的 PHP Web 应用,演示了如何从 PHP 调用 Google API。虽然在生产环境中我不会这样使用 Bootstrap,但这是最快的方式,可以快速获得基于 HTML5 和 JQuery 的响应式 UI,从而以美观的方式在 PC、平板电脑和手机上显示。请注意,某些功能在 Google Cloud 上将无法正常工作,例如 phpinfo()、文件系统访问等。然而,用户可以自由使用 Google Cloud Storage。此 PHP Web 应用的代码可供下载。

这是我的 Web 应用在桌面上的样子

这是同一个 Web 应用在手机上的样子(感谢 Twitter BootStrap 的响应式 HTML5!) 

第四步:调用 Google API   

目前演示调用了 Google 的出色 URL 缩短 API。使用的 PHP 代码再简单不过了。要能够使用 Google API,您需要从此处下载并使用 Google PHP Client Library。然而,正常使用和在 Google Cloud 上使用之间存在一个主要区别,因为我们在 Google Cloud 上无法使用 FileSystem Cache 和 CURL。要在 Google Cloud 上使用 Google API,您需要在 google-api-php-client\src\config.php 中更改以下行。(如果没有这个博客,调试起来会很困难——非常感谢!) 

// In google-api-php-client\src\config.php
'authClass'    => 'Google_OAuth2',
'ioClass'      => 'Google_HttpStreamIO',
'cacheClass'   => 'Google_MemcacheCache',

// We need to configure fake values for memcache to work
'ioMemCacheCache_host' => 'does_not_matter',
'ioMemCacheCache_port' => '37337',     

这尤其令人困扰,因为我的文件系统上没有 memcache,我不得不切换 `'cacheClass' => 'Google_FileCache'`(本地测试)和 `'cacheClass' => 'Google_MemcacheCache'`(Google Cloud 生产)。 

URL 缩短逻辑非常简单,如下所示

// shortener.php
$client = new Google_Client();
$service = new Google_UrlshortenerService($client);

if (isset($_GET['url'])) 
{
  // Start to make API requests.
  $url = new Google_Url();
  $url->longUrl = $_GET['url'];
  
  //Shorten URL
  $shortUrl = $service->url->insert($url);
 
} 

PHP 王国里的“Hello World”就像这样简单 

<?php
   //phpinfo.php
   phpinfo();
?>

运行 Web 应用

在本地运行 Web 应用非常简单。从根文件夹(在此情况下为 php-4-gae)外面运行此命令。

C:\eclipse\workspace>dev_appserver.py --php_executable_path=C:\php\php-cgi.exe php-4-gae   

要上传到 Google Cloud,请运行此命令(可能会提示您输入登录 ID 和密码)。 

C:\eclipse\workspace>appcfg.py update php-4-gae    

笔记  

  • 2013年8月31日:周末上传了第一稿。

如果下个周末我有一些空闲时间,我希望发布下一篇文章,使用像 CodeIgnitor 这样的流行框架构建基于 PHP 和 Google Cloud 的 REST API。也许还会在演示中添加一些 Google API 调用。 

© . All rights reserved.