Google Cloud Platform IT

【GCP】Compute Engineで簡単にWebサーバを立てる

2020年11月24日

注意!!! GCPは重量課金で、このCompute Engine(以下GCE)も、アクセスがなくても起動しているだけで課金されます。 そのため検証用でお金をかけたくない方はこの記事は読まない方がいいかと思います。 (一番安いやつでも4000円ほどは最低掛かってしまうので、それが嫌だ!という方はページ離脱してください)

Compute Engineは、どんなサーバも立てることができる

Webサーバを作成するには、さまざまな情報や知識が必要になります。
エンジニアを目指す人とかであれば、一度Webサーバの設定から公開までを体験しておくことはいいかもしれません。

Compute Engineとは

Compute EngineはGCP内のリソースです。

そのため、サーバを立てるだけでグローバルIPアドレスが発行されます。
その時点でその立てたまだ何もないサーバへはアクセス自体は可能になります。(住所が公開されてるので)

サーバへのアクセスができている時点で、あとはWebサーバとなるための機能をつけるだけで簡単にWebサーバを立ち上げることができます。

 

Compute Engineでサーバを立てる

詳細は以下で説明してます。
今回は簡単に作りたいので、
CentOS7でスタンダードで作成してみます。
 

Webサーバとなるため、Apacheを入れる

現時点でGCEを立てましたが、あくまで何もないPCみたいなものです。
なのでリクエストをしたところで何かレスポンスがあるわけではありません。なのでサーバでもないです。
サーバになるには、PCにそれぞれにあったサーバソフトウェアを入れる必要があります。

 

今回はWebサーバにしたいので、
Webサーバになるには、PCにWebサーバソフトウェアであるApacheやEginxを入れます。
今回はApacheに絞って説明します。

 

Webサーバを立てる

yum install httpd // apacheをインストール(Webサーバソフトウェア)
setenforce 0 (CentOSはSELinuxがデフォルトで走るので解除)
sudo service httped restart
これでWebサーバが起動します。
これで発行されたグローバルIPアドレスにアクセスすると以下のように、apacheが起動しているのが確認できます。

Document Root設定

そしてWebサーバといえばあく
今回は簡単に作るので、ひとまず以下のデフォルトのdocument rootで設定します。
デフォルトでdocument rootは

 

indexが出ないようにする。
/etc/httpd/conf/httpd.conf

SSL通信設定

Let's Encryptをインストールする
無料SSL

Webサーバのドメイン設定

お名前.comなどでドメインを作成して、
そのドメインでグローバルIPアドレスでアクセスできるようにする
Googleドメインでの設定方法

ここでのWebサーバドメイン設定でのポイントとしては以下3つになります。

  • 【GCP側】WebサーバのグローバルIPアドレスの静的化
  • 【GCP側】Cloud DNSでグローバルIPアドレスとドメインの対応関係設定
  • 【お名前.com側】DNSレコードにグローバルIPアドレスとドメインの対応関係設定

 

【GCP側】WebサーバのグローバルIPアドレスの静的化

グローバルIPアドレスは発行されますが、実はこれはApacheの再起動をしたり、Webサーバを再起動したりすると、
毎回グローバルIPアドレスは変わってしまいます。

そのため、このグローバルIPアドレスを静的なIPアドレス、つまり固定IPアドレスにするように設定する必要があります。
これをエフェメラル化と言います。

 

なぜこうする必要があるか?
このあと行う、ドメインとIPアドレスの対応関係の設定をする際に、ドメインは変わらずでもIPアドレスが毎回変わると、
対応関係が崩れて、アクセスできなくなります。
そのため、固定にする必要があります。

 
※ 静的IPアドレスにすると、料金がかかることに注意。

いろいろ料金

【GCP側】Cloud DNSでグローバルIPアドレスとドメインの対応関係設定

これによってDNSサーバにドメインとIPアドレスが紐付き登録される。
よって、ユーザーがドメインへアクセスしたら、まずDNSサーバに問い合わせが行き、IPアドレスに変換され、
そのIPアドレスのWebサーバへアクセスするようになります。

 

【お名前.com側】DNSレコードにグローバルIPアドレスとドメインの対応関係設定

なんでお名前.comなんだよ!Googleドメインで購入して設定しろよって思うかもしれないですがほんとそうですね。。
Googleドメインでまだ購入したことなかったので、後でそれについてもまとめます。

 

Basic認証をつけて、アクセスを制限する

基本的には
① .htaccessファイルと、.htpasswdファイルをbasic認証させたいファイルがあるディレクトリに作成する。← これなぜかできなかった。
① sudo vi /etc/httpd/conf/httpd.confで以下を記載。AuthUserfileがいわゆる.htpasswdファイルの置く場所。ここに記載したものがそのサイトのbasic認証になる。
(いや、apacheインストールすることによって、以下のconfigファイルが作成されるので、以下を記載する。
/etc/httpd/conf/httpd.conf

# ここにbasic認証設定

AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user

そしてAuthUserFileに指定した箇所に、
隠しファイル.htpasswdを作成して、以下を記載する。
basic認証するのに必要なidとpasswordを以下のURLで記載して、暗号化されたテキストを.htpasswdに貼り付け保存します。
https://www.luft.co.jp/cgi/htpasswd.php

② そして、上記のように記載して保存したら、上記のディレクトリでsudo vi .htpasswdを作成
③ 以下のルールで作成。Basic認証に使うユーザー、パスワードは、
「ユーザー: パスワードをMD5で変換した暗号」で記載する。以下のような感じで。これでOK
以下のURLにて変換を行うことができるので、そこで
https://www.luft.co.jp/cgi/htpasswd.php

 

GCPのリソースであるネットワークタグを用いて、IPアドレス制限をかける

こちらは、以下で扱っているので以下のものを参照してください。
【GCP】ネットワークタグを用いてWebサーバにアクセス制限をつける

 

ロードバランサー

ロードバランサーを使うのであれば、スナップショットやイメージを作成して
上で立てたwebサーバを

-Google Cloud Platform, IT
-

© 2022 Yosshi Blog Powered by AFFINGER5