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

2015年2月17日火曜日

GAE で git が使えるようになってたので使ってみた

完全な個人的備忘録です。
あまり参考にはならないと思います。承知のうえ御覧ください。
(ここ最近雑な記事が多くてすみません。ちょっとしばらく忙しいのが続きそうです。)

設定の仕方
コンソールからプロジェクトを選択すると左側の「ソースコード」のところに「閲覧」があるので選択します。
すると下図のような画面になるので、リポジトリを作成するか、外部リポジトリとして Github/Bitbucket を使うかの好きな方を選んでください。


今回は Github と連携させました。

push to deploy
やり方がこちらに書いてあるのでそのとおりに設定する。
Google Cloud Platform Blog: Using GitHub for Push-to-Deploy

Google Cloud Platform への登録が必要
上記方法で push to deploy の設定をしたもののエラーが出て失敗してました。
どうやら、Google Cloud Platform への登録が必要なようなので、無料体験版を登録しました。

Google Cloud SDK の appcfg.py update でのアップロードは Google Cloud Platform に登録していなくてもできてました。
https://cloud.google.com/appengine/docs/python/gettingstartedpython27/uploading
テストプロジェクト→ http://opportune-verve-838.appspot.com/

無料体験版があるものの、リポジトリ使うために登録が必要なのは面倒ですね。。。

threadsafe: true が必要
さて、登録ができたので早速 push してみたところ、デプロイは実行されました。
されましたが、エラーが出ました。

Deployment failed. Details: Deployment failed, details: { Failed to load application, threadsafe is a required field., none}

どうやら、app.yml に threadsafe フィールドが必要なようなので、追記しました。

デプロイ成功
以上の手順により、デプロイが成功するようになりました。

https://push-to-deploy-sample.appspot.com/

今回はかなりテキトーな文章とほとんど説明がない雑な記事ですみませんでしたm(__)m
無料体験版が60日間なので、さっさとやりたいことをやってしまいたいと思います。

2013年9月3日火曜日

Google App Engine SDK for PHP を使ってみた・その2 (cron とメール送信)

前回はアップロードするところまでやりました。
今回は定期実行とメール送信に対応したいと思います。

定期実行
まずは定期実行に対応していきます。
リファレンスのConfiguration/Scheduled Tasksを参考にしました。

cron.yaml の設定
定期実行をするためには、まず cron.yaml ファイルを作成します。
作成する場所は app.yaml と同じディレクトリです。

cron.yaml には以下のように記述します。
cron:
- description: default job
  url: /tasks/default
  schedule: every 5 minutes
- description: test job
  url: /tasks/test
  schedule: every 1 hours

description は説明のテキストになります。任意の文字列を入力します。
url は cron の URL になります。他の cron 重複しないものにします。
schedule が cron の実行スケジュールになります。
every 5 minutes で 5分おきに実行されます。
この辺りの書式はリファレンスを参考にしてください。

今回は特定の時間帯に 5分間隔で実行するように設定しました。
every 5 minutes from 9:00 to 17:00
cron.yaml の設定は以上で終わりです。

app.yaml の設定
次に、app.yaml を編集します。

handlers:
- url: /.*
  script: main.php
- url: /tasks/default
  script: main.php
  login: admin

handlers: に項目を追加し、url に先ほど cron.yaml で設定した url を入力します。
script は実行したい php のファイルを指定します。
login: admin とすることで、URL を開いた時にログインを促されるようになります。

アップロード
最後にアップロードします。アップロードの手順は前回と同じです。

以下のコマンドを実行すると、cron.yaml も自動的にアップロードされます。
appcfg.py update sample/

メール送信
メール送信については Services に Mail についてのリファレンスがあり、そちらに方法が書いてあります。

まずは、メールAPI のある php を require_once で参照し、use 宣言します。

require_once("/google/appengine/api/mail/MailService.php");
use google\appengine\api\mail\Message;

API Reference には mail 関数が載ってますが、そちらは使えないようです。
以下のようにしてメールを送信します。

$mail_options = [
    "sender" => "sender@example.com",
    "to" => "your@mail.com",
    "subject" => "Subject",
    "textBody" => "test message"
];

try
{
    $message = new Message($mail_options);
    $message->send();
}
catch (\InvalidArgumentException $e)
{
    echo 'send mail error';
}

sender は自分のアカウントのメールアドレスならば特に設定する必要はありません。
もし、別のドメインを使いたい場合は登録をする必要があるようです。
今回は自分のアドレスを使うのでそのままです。

また、リファレンスでは $mail_options の本文は "body" になっていますが、それだと失敗してしまいます。
ここは "textBody" もしくは "htmlBody" にする必要があるようです。

google app engine - Sending mail of GAE for PHP - Stack Overflow

これでメール送信もできました。

目的達成
とりあえず、これで特定のサイトを監視して条件によってメール送信することができました。
目的は達したので GAE とはまたしばらくは戯れることはないでしょうが、
GAE は便利なので、また何かやりたくなったら使おうと思います。

その時にこの記事が役にたてば万々歳です。(そのころには正式版になってるかも…)

2013年8月31日土曜日

Google App Engine SDK for PHP を使ってみた

Google App Engine を1年ぶりいじることにしたのですが、さっぱり忘れていたので備忘録としてこれを残しておきます。
今回、Google App Engine を使った目的はこちらになります。

当初は Python を使うことを想定していましたが、PHP の SDK が出ていました。
preview 版のようでしたがサイト監視を PHP で書いていたので、使ってみることにしました。

では、さっそくセットアップからしていきましょう。

環境セットアップ
ダウンロード
環境のダウンロードはこちらから行います。

で、SDK をダウンロードするには Limited Preview に登録しないといけないとのこと。
リンクをクリックすると Google App Engine for PHP のページが開くので、「Register for the Limited Preview」のボタンをクリック。


ログインしていたら、「Congratulations, you've been whitelisted!」と出るので、これで終わり。
セットアップ方法のページへのリンクがあるのでそこを開きます。
Windows なので、「Installing on Windows」を開きます。

そこに書かれているとおりに Python 2.7 と PHP 5.4 をダウンロード、展開します。
PHP は「VC9 x86 Thread Safe」です。
展開後、それぞれパスを通しました。

つづいて、SDK をダウンロードします。
こちらも .zip ファイルになっているので、適当な場所に展開します。

Hello World!
ダウンロードができたら、さっそく試してみましょう。こちらを参考に進めていきます。

適当なフォルダに .php ファイルを作り、簡単なコードを記述します。
<?php
    echo 'Hello World!';
(> で閉じなくていいのか…)

続いて app.yaml ファイルを作成します。
ファイルの内容は以下のように記述します。
application: sample
version: 1
runtime: php
api_version: 1

handlers:
- url: /.*
  script: sample.php
script のところは先ほど作成した php のファイル名を設定します。
このファイルは php ファイルと同じディレクトリに保存します。

次に、コマンドプロンプトを開き、
以下のコマンドを入力してテストサーバーを起動させます。
dev_appserver.py --php_executable_path=C:\Users\hogehoge\php ./sample
php_executable_path には php-cgi のあるパスを絶対パスで、
最後の引数には php と app.yaml ファイルのあるパスを渡します。

サーバーが起動したら、ブラウザで以下の URL を開きます。
http://localhost:8080/

すると、ブラウザに Hello World! と表示されます。
のはずでしたが、エラーが出ました。


エラー文でぐぐったらドンピシャな答えがありました。
google app engine - Permission denied error when i try to start appengine php server - Stack Overflow

--php_executable_path には php-cgi.exe のあるディレクトリパスではなく、php-cgi.exe のパスそのものを指定する必要があったようです。
dev_appserver.py --php_executable_path=C:\Users\hogehoge\php\php-cgi.exe ./sample

うまくいきました。


次に目的の php に差し替えてテストし、動作することを確認しました。
(今回は使わないので、いくつかのスタートガイドを飛ばしてます。)

アップロードする
まずはアプリケーションを作成します。
https://appengine.google.com/ にアクセスし、「Create Application」のボタンを押します。
必要な項目を記入して、もう一度「Create Application」ボタンを押すと作成完了です。
作成できたら、app.yaml ファイルの application の名前を登録したアプリケーションIDに変更をしておきます。
今回は便宜上 hogehoge とします。

次に以下のコマンドを実行します。
appcfg.py update sample/
最後の引数はファイルのあるパスを指定します。
実行するとメールアドレスとパスワードを聞かれるので入力し Enter 。
正常に終了すると「PM Competed update of app: hogehoge, version 1」と出力されます。

最後に、アップロードしたアプリケーションにアクセスしてみましょう。
ブラウザで http://hogehoge.appspot.com を開くと実行されます。

次回
今回無事にアップロードでき、これで目的の php が実行できるところまで出来ました。
次回は、スケジューリングとメール送信に対応していきたいと思います。

また、つづく。