まずは手を動かして苦手意識をなくそう。ということで
GCE-GCS-SQLの構成でPHPの公開環境を作ってみた。
はじめに
利用に応じて少なからず課金されます。
お試し後は、作成したリソースの削除をしましょう。
(ほとんどの人は、無料枠に収まるけれども。)
決めごと
リージョンとゾーンを決めておこう。これはサーバーを立てる場所のこと。
お試しなら、下記で大丈夫。
[リージョン]us-central1
[ゾーン]us-central1-a
GCEの作成(コンピューティング・WEBサーバ)
■インスタンス作成
Compute Engineサービスで「VM インスタンス」を作成する。
ここでは、下記を設定。
[名前] bloghost
[ブートディスク]
Debian GNU/Linux 9(stretch)
[ファイアウォール]
HTTP トラフィックを許可する ON
※記載していない項目については、デフォルトのままで大丈夫。
■起動時のスクリプトを設定
「管理」タブの[起動スクリプト] に下記を設定。
これで各サービスが立ち上がるぞ。
apt-get update
apt-get install apache2 php php-mysql -y
service apache2 restart
■動作確認
VMインスタンスのIPアドレスを確認。
内部IPアドレスはGCP内の各インスタンス同士でアクセスし合う時に使う。
外部IPアドレスはオンライン公開。
WEBブラウザのURL欄に、外部IPアドレスを入れてみるとアクセスできるはずだ。
GCSの作成(ストレージ)
■バケット作成
画面右上から
「Google Cloud Shell」を起動。これは、コマンドプロント的なモノだ。
リージョンに応じて変数を作成。
export LOCATION=US
mbコマンドでMakeBucketsしてみる。
Cloud Shellでは、デフォルトでDEVSHELL_PROJECT_ID環境変数にプロジェクトIDが含まれているのでこれを利用できる。
gsutil mb -l $LOCATION gs://$DEVSHELL_PROJECT_ID
■ファイル配置
一般公開されている画像をCloud Storageへコピーしてみる。
gsutil cp gs://cloud-training/gcpfci/my-excellent-blog.png \
my-excellent-blog.png
gsutil cp my-excellent-blog.png \
gs://$DEVSHELL_PROJECT_ID/my-excellent-blog.png
Cloud Storageサービスを開くと、先ほど作成したバケットとファイルが確認できる。
my-excellent-blog.png というオブジェクトがあるので、[一般公開で共有する]をONにするとURLが出力される。
画像であれば、こんな感じでHTMLファイルから読み込むことができるようになるはずだ。
Cloud SQL(DBサーバ)
■インスタンス作成
[データベース エンジンの選択] MySQL
[インスタンス ID]任意
[root パスワード]任意
で作成。
[SQLインスタンス] ページで、からIP アドレスをコピーしてメモしておこう。
■ユーザ作成
詳細ページの[ユーザー]タブから「ユーザーアカウントを作成」。
[ユーザー名] 任意
[パスワード] 任意
■通信許可
詳細ページの[承認] タブから「ネットワークを追加」。
[名前]web front end
[ネットワーク] GCEインスタンスの外部IP アドレス/32(例 35.192.xxx.xxx/32)
結合
GCEインスタンスからGCSとSQLを呼んでみる。
VMインスタンスの[SSH] をクリックすると、コマンドプロンプトが開く。
nanoエディタで、index.phpファイルを編集。
cd /var/www/html
sudo nano index.php
<html>
<head><title>Welcome to My Blog</title></head>
<body>
<h1>Welcome to My Blog</h1>
<?php
$dbserver = "※CloudSQLのIPアドレス";
$dbuser = "※CloudSQLのユーザ名";
$dbpassword = "※CloudSQLので作成したユーザパスワード";
$conn = new mysqli($dbserver, $dbuser, $dbpassword);
if (mysqli_connect_error()) {
echo ("Connection failed: " . mysqli_connect_error());
} else {
echo ("Connection succee.");
}
?>
<img src='※GCSで発行したURL'>
</body>
</html>
■動作確認
ウェブサーバーを再起動。
sudo service apache2 restart
ブラウザから外部IP アドレスにアクセスすると、
反映されていることが確認できる。