今年は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....