LoginSignup
6
5

More than 5 years have passed since last update.

GCPでWEBサーバー構築を試した(GCE-GCS-SQL)

Posted at

まずは手を動かして苦手意識をなくそう。ということで
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ファイルから読み込むことができるようになるはずだ。
<img src='https://storage.googleapis.com/gcp-012345689/my-excellent-blog.png'>

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 アドレスにアクセスすると、
反映されていることが確認できる。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5