Amazon Campaign

ラベル GoogleAppEngine の投稿を表示しています。 すべての投稿を表示
ラベル GoogleAppEngine の投稿を表示しています。 すべての投稿を表示

2016年12月2日金曜日

GoogleAppEngineLauncher のデプロイで 403 エラーになる場合の解決方法

MacのGoogleAppEngineLauncherを使ってデプロイするときに 403 エラーになることがあります。

エラーの出力例
Starting update of app: **********, version: 4
12:38 AM Getting current resource limits.
2016-12-02 00:38:08,108 ERROR appcfg.py:2455 An error occurred processing file '': HTTP Error 403: Forbidden Unexpected HTTP status 403. Aborting. 
Error 403: --- begin server output ---
You do not have permission to modify this app (app_id=u'**********').
--- end server output ---
If deploy fails you might need to 'rollback' manually.
The "Make Symlinks..." menu option can help with command-line work.
*** appcfg.py has finished with exit code 1 ***

*** Running dev_appserver with the following flags:
    --skip_sdk_update_check=yes --port=8080 --admin_port=8000
Python command: /usr/bin/python2.7
INFO     2016-12-01 22:00:41,793 devappserver2.py:769] Skipping SDK update check.
INFO     2016-12-01 22:00:41,845 api_server.py:205] Starting API server at: http://localhost:62864
INFO     2016-12-01 22:00:41,850 dispatcher.py:197] Starting module "default" running at: http://localhost:8080
INFO     2016-12-01 22:00:41,853 admin_server.py:116] Starting admin server at: http://localhost:8000


そんな時は、まずGoogleAppEngineLauncherの"Control"メニューから"Clear Deployment Credential"を実行してみましょう。



ググってみると、「異なるアカウントでの認証がキャッシュされている」とか「Google Cloud Platform のサービスアカウントが異なる」とか色々と解決策があるようですが、クリアして再認証するのが簡単です。

2014年11月12日水曜日

GAE の PHPランタイムが 5.4 にアップデートされています

GoogleAppEngine for PHP で FuelPHP 1.7 を使いたかったのですが、同梱のランタイムのバージョンが古く要件を満たしていなかったので、今まではコンソールから別のランタイムを指定して起動していました。

ところが、同梱のランタイムには手が加えられているらしく、CloudStorage が使えませんでした。(他のサービスも使えないものがあると思います。)

そこで、GoogleAppEngineLauncher の最新版 1.9.11 のPHPバージョンは何かと確認してみたら、なんと PHP 5.4 にアップデートされていました!

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

あー、よかった。

2013年10月6日日曜日

FuelPHP を Google App Engine for PHP で動かす

FuelPHP を GoogleAppEngine for PHP (gae)で動かしてみました。

※2013/10/14 ひとまずデプロイして動作するようになったので記事を更新しました。
※2013/10/16 log出力パッチを公開しました。

環境

GoogleAppEngineLauncher(GAEの開発環境)が Webサーバも兼ねているので Apache は不要です。


  • OSX 10.8.5
  • GoogleAppEngineLauncher 1.8.5
  • PHP 5.4.20
  • FuelPHP 1.6


まずは環境定義をします


GAE にデプロイすると当然 URL がローカルとは異なりますので、とりあえずローカルとデプロイ先で環境を切り替えるように定義しておきます。ここではローカルを "development" デプロイ先を "production" とします。Fuel はサーバ変数 "FUEL_ENV"  の値で切り替えられます。GAE の場合は app.yaml で定義可能です。

env_variables:
  FUEL_ENV: 'production'
#  FUEL_ENV: 'development'


app.yaml でリクエストをハンドルする


FuelPHP は全てのリクエストを /public/index.php に処理させる仕組みとなっているので、/public/assets 配下へのアクセスは静的ファイルとしてアクセスさせる必要があります。
そのハンドリングを標準では Apache の .htaccess で行いますが Google App Engine では、それをアプリケーション設定ファイルである app.yaml の handlers で指定してあげます。同様に favicon.ico についても静的ファイルとして設定します。


handlers:
 
# assets dir
- url: /assets
  static_dir: public/assets
 
# favicon file
- url: /favicon.ico
  static_files: favicon.ico
  upload: favicon.ico
 
# php files
- url: /.*
  script: public/index.php


ローカル環境ではこれだけで動いてくれるのですが、GAE に上げると色々あり、以降の設定が必要です。

localでの起動画面
ローカルでは動くのですが。。。


base_url を設定する



GAE に上げた際の URL を定義します。production 環境でのみ有効となるように、production 用の設定ファイルである下記ファイルへ定義します。必要な項目のみ差分で定義できます。


/fuel/app/config/production/config.php

'base_url' => 'http://{your_app_id}.appspot.com/',


logファイルは出力できないのでパッチを作りました


GAE 上ではlogファイルの出力は行えませんので、下記設定で出力しないようにすることで回避は可能です。

/fuel/app/config/production/config.php

'log_threshold'    => Fuel::L_NONE,


ただ、これでは実用的ではありませんので Fuel の Logクラスを改修して、GAE でログ出力を行うためのパッチを作成しました。単純に /fuel/core/classes/log.php のファイル出力部分を syslog() に置き換えただけです。GitHub に公開しましたので自由に使ってください。

https://github.com/isatan/FuelPHP4Gae_patch


/fuel/core/classes/log.php を置き換えるだけで下記のように GAE のコンソールに出力されるようになります。

log をファイル出力すると 500 エラーにもかかわらず何も出力されません。

パッチをあててもらうと Fuel の log 出力も debug log も出力できます。

locale を指定する


Fuel のデフォルト locale は "en_US" ですが、GAE では指定できないようです。いくつか試したところ、Cロケールは認識してくれました。

/fuel/app/config/production/config.php
'locale' => 'C',


assets 関連ファイルは絶対 URL で指定する


どういうわけか、base_url を指定しているのもかかわらず assetes 関連のファイルを見つけてくれず、bootstrap.css の読み込みでエラーになってしまいます。assets 用の設定ファイルに下記の設定することでエラー時に強制実行させることができますが、それでは link タグを出力してくれません。

 /fuel/app/config/production/asset.php


'fail_silently' => true,


仕方がないので view ファイルでの assets 関連ファイルの指定は絶対 URL で指定することにします。

/fuel/app/views/welcome/index.php

echo Asset::css('http://{your app id}.appspot.com/assets/css/bootstrap.css');



動きました

これで FuelPHP の welcome 画面は表示できるようになりました。ここで修正した app.yaml, config.php, log.php は GitHub に上げてありますので自由に使ってください。

https://github.com/isatan/FuelPHP4Gae_patch

ただ、assets ファイルの指定はいただけないので今後なんとかしたいですね。


ようやく appspot.com 上でも Welcome! が拝めました。


2011年2月11日金曜日

MacでPython on GoogleAppEngine(SDK基本編)

Mac用のGoogleAppEngine SDK「GoogleAppEngineLauncher」の基本的な使い方を紹介します。正直なところ、直感的に使えるので解説は必要ないのですが、日本語の情報はあまりないようなので書いておきます。

<SDKのインストール>
まずSDKのダウンロードページからMac用SDKをダウンロードします。

ダウンロードしたファイルは普通のdmgファイルなのでダブルクリックして展開します。

展開したアプリケーションファイル「GoogleAppengineLauncer」を任意の場所へコピーするだけです。

<アプリケーションの登録>

SDKを起動したら、ウィンドウの左下にある「+」ボタンを押します。

そうすると、下記の「New Application Setting」ダイアログが現れます。

「Application Name」に任意のアプリ名を入力します。

「Application Directory」では「Choose」ボタンでワークディレクトリを選択します。ここでは選択したディレクトリの配下に上記で入力した「Application Name」でディレクトリが自動的に作成されます。
既存のアプリケーションを登録する場合はFinderより登録したいプロジェクトフォルダをドラッグ&ドロップします。

「Port」にはローカルアクセスする際の任意のポート番号を入力します。
「Create」ボタンを押すとアプリが登録されます。

<アプリの起動/停止>

アプリケーションを選択し、ウィンドウ左上の「Run」「Stop」ボタンでアプリの起動/停止を行います。

<デプロイ>

「GoogleAppengineLancher」にてデプロイするアプリを選択して、上部の左から2つめの「Deploy」ボタンでデプロイを行います。
ボタンを押すとGoogleアカウントの入力を促されます。


そうすると上記のデプロイログが表示され進行が確認できます。

2011年2月8日火曜日

MacでPython on GoogleAppEngine

ボクは仕事ではJavaをメインに使用していますが、プライベートでは主にPythonを使っています。理由はGoogleの標準言語だから。
「Googleで使われているのであれば、きっと良い言語なのだろう」という、なんとも安易でノー天気な動機で使い始めて、それ以来使用しています。
現在はいくつかGoogleAppEngine上でアプリを動かしています。なので、「MacBookAirでもGoogleAppEngineを利用したい!」と思うのは人の性というものでしょう。

そこで、Mac用のSDKをインストールしてみたのですが、なんと簡単!なんともMacナイズされているというか、直感的なGUIでほとんどのことが操作できてしまうのです。
Googleの開発環境解説ページを見てみると、

「Google App Engine Launcher がすべてのコマンドをアプリケーションに含めます。」

というような記述とありますが、てっきりWindows用SDKのようなコマンドラインから利用するものと思っていました。



詳しい使い方については次回の投稿以降で紹介します。

Amazon_ad