クラウド 技術

このブログはGCPでできている・・・!

今年はGCPの認定資格を取りまくる、という目標をもっているので勉強がてらブログ環境をGCPで作ってみました。
あと、GCPのほうがレンタルサーバより安そうだしね。

稼働して1か月なので、最後に請求額を載せてます。びっくりだね。

無料枠を確認する

環境構築にあたり、とりあえずComputeEngineとCloudStorageのみ使いたい。

5GBとe2-microVMインスタンスであればAlwaysFreeの模様。

https://cloud.google.com/free/docs/gcp-free-tier?hl=ja

作ってみる

プロジェクトを作成

ComputeEngine⇒VMインスタンス。インスタンスを作ろうと思ったら、請求先アカウントが必要とのことなので作成。
とりあえず予算アラートを作成して1000円超えたらメールが来るように設定。

インスタンスを作成。「ComputeEngine」⇒「Market Place」を選択
MarketPlaceで「wordpress bitnami」で検索し、以下の仮想マシンを選択して運用開始。

APIの有効化について聞かれるので有効化はしておく。

ZoneとMachineTypeとDisksize(標準永続ディスクの無料枠は30GB)を修正。 (文句はいえないけど、1GBのメモリとか悲しい・・・😢)

このままだとIPアドレスが変わってしまうので、エフェメラルから静的アドレスへ変更。

「VPCネットワーク」⇒「IPアドレス」

アクセスタイプが外部のレコードの一番右の「予約」を押すと「新しい静的アドレスの予約」ダイアログが表示されるので、ダイアログを埋めてIPアドレスを作成。

※ちなみに静的アドレスは有料。

1時間あたり0.004ドルなので、、、、1ドル130円換算とすると大体¥400/月ってくらいでしょうか。レンタルサーバ借りるより安い安い。

これでWordPressインスタンスは終わり。
1か月運用してみていくらくらいかかるかを確認してみよう。

インスタンス作成時のウィンドウだと1000円/月とか書いてたけど・・・。どうなることやら。

ドメインを取ってDNSに登録する

色々挙動がおかしかったので、もしかしたらちょっと違っているかもしれないけど、その時にやった手順を記載。

GoogleDomainsでドメインを購入。.comドメインなら月100円程度で購入可能。
WebページではCloud DNSの設定が必要と書いてあったけど、GoogleDomainsの設定のみでいけたっぽい。

AとCNAMEを設定。

30分くらい放置していたら、テストページの表示がされた。

セキュリティ周りの設定

https通信をOKにしているので、一応httpsでアクセスは出来るものの、ちゃんと通信は出来ていない状態。

https通信が正しく出来ると、通信内容が暗号化されて盗聴のリスクが減るよイエイってやつですね。

https:通信はここ(https://www.ssl.ph/compare/ssl/datalibrary/contents06.html)がわかりやすいかな。
 サーバの公開鍵をクライアントに渡して暗号化通信用の共通鍵を共有。
 サーバはサーバ側の秘密鍵で共通鍵を復号。
 ⇒安全に鍵の受け渡しが出来るから通信も安全だし、なんならサーバの正当性まで証明できるね、みたいな感じで。SSLサーバ証明書が必要になってくる。

この図はhttpsで接続はしてるけど、ちゃんと暗号化とかできてないよっていう警告。

ComputeEngineからインスタンスへSSH接続。

https://docs.bitnami.com/aws/how-to/generate-install-lets-encrypt-ssl/

を参考に。

#↓を実行
sudo /opt/bitnami/bncert-tool

----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.

----------------------------------------------------------------------------
Domains

Please provide a valid space-separated list of domains for which you wish to 
configure your web server.

Domain list []: egaopapa.com

The following domains were not included: www.egaopapa.com. Do you want to add them? [Y/n]: Y

----------------------------------------------------------------------------
Enable/disable redirections

Please select the redirections you wish to enable or disable on your Bitnami 
installation.



Enable HTTP to HTTPS redirection [Y/n]: y

#↓お好きにっていう感じかな?
Enable non-www to www redirection [Y/n]: n
Enable www to non-www redirection [y/N]: y

----------------------------------------------------------------------------
Changes to perform

The following changes will be performed to your Bitnami installation:

1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains: 
egaopapa.com www.egaopapa.com
3. Configure a cron job to automatically renew the certificate each month
4. Configure web server name to: egaopapa.com
5. Enable HTTP to HTTPS redirection (example: redirect http://egaopapa.com to 
https://egaopapa.com)
6. Enable www to non-www redirection (example: redirect www.egaopapa.com to 
egaopapa.com)
7. Start web server once all changes have been performed

Do you agree to these changes? [Y/n]:y

Please provide a valid e-mail address for which to associate your Let's Encrypt 
certificate.

Domain list: egaopapa.com www.egaopapa.com

Server name: egaopapa.com

E-mail address []: XXXXXXXXXXXXX@XXXX.com

The Let's Encrypt Subscriber Agreement can be found at:

https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf

Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]:y

----------------------------------------------------------------------------
Performing changes to your installation

The Bitnami HTTPS Configuration Tool will perform any necessary actions to your 
Bitnami installation. This may take some time, please be patient.

----------------------------------------------------------------------------
Success

The Bitnami HTTPS Configuration Tool succeeded in modifying your installation.

The configuration report is shown below.

Backup files:
* /opt/bitnami/apache/conf/httpd.conf.back.202305051526
* /opt/bitnami/apache/conf/bitnami/bitnami.conf.back.202305051526
* /opt/bitnami/apache/conf/bitnami/bitnami-ssl.conf.back.202305051526
* /opt/bitnami/apache/conf/vhosts/wordpress-https-vhost.conf.back.202305051526
* /opt/bitnami/apache/conf/vhosts/wordpress-vhost.conf.back.202305051526

Find more details in the log file:

/tmp/bncert-202305051526.log

If you find any issues, please check Bitnami Support forums at:

https://github.com/bitnami/vms

https通信が出来た!鍵マークがちゃんとついてる!

SSL証明書は定期的に更新が必要らしい。

https://www.cloud-and-money.com/gcp/ssl-auto-renew/

を参考に自動更新が出来るようにする。

この環境はnginxではなくapacheなので、そこだけ修正。

#!/bin/bash

Mail="メールアドレスを記載"
Domain_root="サイトのドメイン名を記載(サブドメインが必要な場合は同じ内容の別名変数を用意)"
Log="/ssl/log/ssl-renew.txt"

date '+%Y-%m-%d %H:%M:%S' >> ${Log}
/opt/bitnami/ctlscript.sh stop apache >> ${Log}
/opt/bitnami/letsencrypt/lego --path="/opt/bitnami/letsencrypt" --tls --email=${Mail} --domains=${Domain_root} renew --days 90 >> ${Log}
/opt/bitnami/ctlscript.sh start apache >> ${Log}

動作確認としてシェルを実行。

/ssl/script# sh auto-renew.sh 

2023/05/06 10:24:11 [INFO] [egaopapa.com] acme: Trying renewal with 2149 hours remaining
2023/05/06 10:24:11 [INFO] renewal: random delay of 1m20.762159147s
2023/05/06 10:25:32 [INFO] [egaopapa.com, www.egaopapa.com] acme: Obtaining bundled SAN certificate
2023/05/06 10:25:32 [INFO] [egaopapa.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/XXXXXXXXXXXX
2023/05/06 10:25:32 [INFO] [www.egaopapa.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz-v3/XXXXXXXXXXXXX
2023/05/06 10:25:32 [INFO] [egaopapa.com] acme: authorization already valid; skipping challenge
2023/05/06 10:25:32 [INFO] [www.egaopapa.com] acme: authorization already valid; skipping challenge
2023/05/06 10:25:32 [INFO] [egaopapa.com, www.egaopapa.com] acme: Validations succeeded; requesting certificates
2023/05/06 10:25:33 [INFO] [egaopapa.com] Server responded with a certificate.


ls -la /opt/bitnami/letsencrypt/certificates

drwxr-xr-x 2 bitnami root 4096 May  6 00:31 .
drwxr-xr-x 4 bitnami root 4096 May  6 00:30 ..
-rw-r--r-- 1 bitnami root 5337 May  6 10:25 egaopapa.com.crt
-rw-r--r-- 1 bitnami root 3751 May  6 10:25 egaopapa.com.issuer.crt
-rw-r--r-- 1 bitnami root  233 May  6 10:25 egaopapa.com.json
-rw-r--r-- 1 bitnami root  227 May  6 10:25 egaopapa.com.key

証明書も更新されている。1か月で切れるぽいから、自動更新されてなければ警告が出るので、その時にまた見直し。

驚愕の料金

Oh....

-クラウド, 技術
-