Edited at

初めてのGCP(google cloud platform) part2 (php+smarty環境)

1から、GCPにphp+smarty環境を構築してみました。

結構はまったので、メモ的な備忘録。

◆一番はまったところ

smartyのコンパイルファイル生成する方法にはまった。

下記2点を設定する必要があった。

・php.iniで、バケット指定

・index.phpでgsバケット/フォルダ指定が必要

◆準備

・gae必要ファイル

app.yaml   (index.php指定)

php.ini    (※追加ファイル)

index.php

/templates/

  ┗index.tpl

/smarty/   (※追加プラグイン)

  ┗(公式SmartyからDLしたファイル中、/libs/の中身をUPロードする)

    ※libs中身がsmarty本体

・ストレージのバケット作成

  ①gcp左上メニューから→ストレージ→ブラウザ→バケット作成

   例)バケット:test1作成 (Regional / ASIA-NORTHEAST1)

  ②バケットにフォルダ作成 (smartyコンパイル・キャッシュファイル用)

    ┣/compiled/ (フォルダ)

    ┗/cache/ (フォルダ)

 ※バケット権限設定を閲覧者:読み込み→書き込みに変更している

  →必要かは調査しきれてない・・(ファイル生成するので必要とおもう・・多分)

◆手順の流れ

①app.yamlがある同じ場所にphp.iniファイルを作成

・app.yaml

runtime: php55

api_version: 1
threadsafe: true

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

・php.ini

allow_url_include = "1"

google_app_engine.allow_include_gs_buckets = "バケット名(のみ)"

(※バケット名→gcpメニュー:ストレージ/ブラウザで、バケット作成したバケット名)

例)google_app_engine.allow_include_gs_buckets = "test1"

②app.yamlで指定してるindex.php

・index.php

<?php

// Smartyクラス読込
require_once("smarty/Smarty.class.php");

// Smartyインスタンス生成
$smarty = new Smarty();

// テンプレートディレクトリ
$smarty->template_dir = "./templates/";

// コンパイルディレクトリ
$smarty->compile_dir= "gs://バケット名/compiled/";
$smarty->cache_dir="gs://バケット名/cache/";
$smarty->display('index.tpl');

例)

$smarty->compile_dir= "gs://test1/compiled/";

$smarty->cache_dir="gs://test1/cache/";

・index.tpl

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8">
<title>初めてのGCP php+Smarty環境</title>
</head>
<body>
表示テスト
</body>
</html>
<script>
{literal}
alert("表示OK");
{/literal}
</script>

③デプロイして確認。

gcloud app deploy ※デプロイ

gcloud app browse ※url表示

url飛んで、アラート「表示OK」でたら成功。