メインコンテンツへスキップ
見出し画像
Photo bycandy_spider

Geminiと共に、作りたかったものを作ってみた―― [GC] 無料仮想マシン

    (5,409字)

    前回記事の続きです。(前回はこちら↓)

    「②WordPressサイトの構築支援」にトライするにあたり、まずはGoogle Cloud(GC)上で無料の仮想マシン(VMインスタンス)を作成してみました。

    ◇GCで無料VMを作ろう

    数年前のコロナ中に、少しずつ作りたいものを作る一環で、ドメイン取得してWordPressサーバーを構築してみたことがありました。
    (マインドフルネスや禅に関することに興味があり深めていた時期だったので、それっぽいドメインを散歩中に思いついて"mindfulnavi.com"を取得)

    その時もGC上で構築したのですが、いざ立てたは良いものの、そこに載せるコンテンツを用意するところまで手が回らず、そうこうしているうちに転職活動が進んで何もできなくなり、放置になっていました。

    ある時ふと改めてこのサーバーへアクセスしてみると、エラーでアクセスできず、GCのコンソールに入るとVMがきれいさっぱり消えていました。恐らく何らかのGC側の変更によってVMが消されたのだろうと思われます。(一定期間操作されていないサーバーは消すとか、ゾーンが丸ごと消えたとか)

    プライベート用だし何も中身のないVMだったから実害はないけど、ドメインだけ宙ぶらりんになったままだったので大分もったいないことになっていました。でもせっかく取ったドメインだし、何かしら有効活用したいなあと思っていたら、別のクラウドサービス(Oracle Cloud)上で無料VMが作成できるという情報を見かけました。

    それならGCでもできるのでは?と思ってGeminiに投げかけたところ、なんとGCでも "ec2-micro" というサイズのVMであれば無料枠で運用可能との情報が!

    ということで、この機会にGeminiに頼りながら再度VMを作ってみることにしました。

    ◇Geminiの伴走によるVM作成

    Geminiからは最初、新規チャットで以下のようにGeminiに質問するよう回答を頂きました。これをベースに進めて行きますが、今回のVM編では中盤にある太字4項目のうち、[ネットワーク・静的IPの設定]のみ実施しました。
    (残りはWordPress編で書こうと思っています)

    【新しいチャットへのプロンプト】
    Google CloudのAlways Free枠(e2-micro / us-west1)を使い、Ubuntu 22.04でWordPress環境を構築するプロジェクトを開始します。プロジェクト名は「Mindful Navi」、ドメインは「mindfulnavi.com」を使用します。

    以下の手順を、noteのコンテスト記事にできるよう、各ステップでスクリーンショットを撮るタイミングを教えてもらいながら進めたいです。

    [Jules/開発エージェントへ依頼] MariaDB、PHP 8.x、WP-CLIをインストールし、WordPressの初期設定を完了させるシェルスクリプトを作成してください。
    [ネットワーク・静的IPの設定] 無料枠に収まるよう、Standard Tier(標準ティア)で静的外部IPを予約し、VMに割り当てる具体的なgcloudコマンド、またはコンソール操作を教えてください。
    [Antigravity/トラブルシューティングへ相談] ドメイン(mindfulnavi.com)でアクセスできるよう、ApacheのVirtualHost設定を支援してください。
    [SSL化] Certbotを使い、Let's Encryptの正規証明書を取得・自動更新する設定を完了させてください。

    まずは、Google CloudコンソールでVMインスタンス(e2-micro)を作成する際の、無料枠を外さないための最も正確な設定値から教えてください。

    Geminiから出してもらった、別スレッドでGeminiに依頼する最初のプロンプト

    前回のOpalで結構苦労したので、それならと従来通り個人ブログも検索しながら比較検討しつつVM作成を進めていました。ただ、今回については結論、Geminiとの壁打ちの方が良かったです。

    個人ブログはどうしても記載時点の情報で固着せざるを得ないため、数年前の情報となると現在のGCの構成から幾らか食い違いが出て来てしまいます。
    また、細かい部分を「やれば分かるっしょ」みたいな感じで端折られていることが多く、本人の備忘録に近い内容なので痒いところに手が届かないことがあり、ある程度の経験が前提として求められがちです。

    その点、Geminiは痒い所に手が届く回答を概ね的確に返してくれました。Google製品だとやはり強いのでしょうか。ただし全部正しい訳ではなく、少しでも疑問に思ったらすかさず追加質問をすることで、何とかVM作成にこぎつけました。

    ◇簡単な手順、躓きポイント

    ただ、今回ある程度手順になるようキャプチャを取りながら作業していましたが、まさかの前半のキャプチャが全部消えてしまい、肝心の箇所が取れず仕舞いでした。。。それだけ長尺で試行錯誤を記録していたということだろうと思われ、軽くショック。

    (※因みに、キャプチャの取り方としては、ステップ記録ツール(PSR)と呼ばれるWindows標準のツールを立ち上げっぱなしにするという方法でした。これは、マウスクリックやキーボード操作のたびに全画面キャプチャを取るというもので、以前はクリック箇所を緑枠で囲ってくれていました。記録結果はmht形式で時系列で一括表示され、縮小版・オリジナルサイズの2種類切り替えながら画面を後からトリミングできます。動画記録よりもキャプチャ箇所の確認がしやすいしファイルサイズも小さくて済むので気に入っていたのですが、もうじきWindows標準ではなくなり、後継は録画方式になるようです。一応まだ使えますので、ご興味ある方は使ってみて下さい)

    画像
    (参考)ステップ記録ツール

    なので今回は、Geminiとのやり取りは少なめで、ある程度手順が分かるようにしつつ、躓きやすそうなところだけメモしておこうと思います。

    ①インスタンス作成フローの進め方

    画像
    【GCコンソール(VMインスタンス1台作成後)】トップ画面
    「インスタンスを作成」ボタンを押下すると、以下の「インスタンスの作成」画面に遷移する

    デフォルトの設定は今回以下のようになっていました。いきなり「作成」ボタンを押してしまうと、数千円/月のVMインスタンスが出来上がってしまうので要注意。

    【デフォルト設定】
    ・マシンの構成 e2-medium, us-central1
    ・OS とストレージ Debian GNU/Linux 12 (bookworm)
    ・データ保護 スナップショット スケジュール
    ・ネットワーキング 1 件のネットワーク インターフェース
    ・オブザーバビリティ Ops エージェントをインストール
    ・セキュリティ
    ・詳細

    「VMインスタンス作成」の主なデフォルト設定

    ②マシンの構成(VMインスタンス)

    画像
    【VMインスタンス作成 ― マシンの構成】画面
    ここで下部の「作成」を押すと、デフォルトのまま作成されてしまうので要注意!
    そうではなく、左ペインの「マシンの構成」「OSとストレージ」……「詳細」をクリックして
    画面遷移
    して進めていく仕様のようです
    (あまり直感的とは思えない操作感なので、他の遷移方法があるなら教えて欲しいです)
    【無料VMの条件】
    リージョン  :us-west1 / us-central1 /us-east1(無料枠対応)
    マシンタイプ :e2-micro(無料枠)

    インスタンスの名前は自由。リージョンは上述の3つから1つ選びます。何も条件がなければ、比較的日本に近い「us-west1」でOK。

    「Geminiでマシンタイプの候補を生成する」欄は恐らく最近できた機能のようですが、ここに "e2-micro" と書いても出してくれません。CPU1GBやMem1GBといったスペック情報や予算感を書くと、"あなたにおすすめなのはe2-microですよ" といった感じで候補を表示してくれる機能のようです。

    ③OSとストレージの選択(ブートディスク)

    画像
    【OSとストレージ】画面
    「変更」ボタンをクリックすると、以下の「ブートディスク」画面に遷移する
    画像
    【ブートディスク】画面
    ブートディスクの種類は後から変更できないため要注意!
    【無料VMの条件】
    オペレーティングシステム :Windows Server以外
    ブートディスクの種類   :標準永続ディスク
    ディスクサイズ      :15〜30GB程度

    OSはWindows Serverだけデフォルト非表示になっているので、うっかり有料OSになる可能性は低いと思います。今回はUbuntuにしましたが、現時点での最新の安定バージョンは26.04LTS なので、上記Geminiの最初のプロンプトから変えて、こちらを選んでみました。

    (※ただ、後で分かりましたが、26.04を選択したがためにWordPress構築の手順が変わってしまいました……1,2つ前の安定版である22.04, 24.04 にしておく方が分かりやすかったかも)

    この時点で最も注意すべきなのは「ブートディスクの種類」です。これは、後で変更が効かないうえに、「標準永続ディスク」以外は全て有料です。

    10GBだとWordPressが動作するギリギリのスペックのようです。
    少なくとも15GB~30GBあれば何とかなりそうではあります。

    PHP: PHP 8.3以上(最新バージョンの利用を強く推奨)
    データベース: MySQL 8.0以上 または MariaDB 10.6以上
    メモリ (RAM): サーバーメモリ 1GB 以上(2GB〜4GBあればより快適)
    ディスク容量: 10GB〜50GB以上(画像やプラグインが増えるため)
    その他: HTTP/2またはHTTP/3対応、HTTPS対応(無料独自SSL対応)

    Geminiから出してもらった、WordPressのシステム要件

    ④データ保護

    画像
    【データの保護】画面1
    画像
    【データの保護】画面2

    「データの保護」は後で変更可能ですが、スナップショットやバックアップを取るとその分使用するストレージが増えるので、数十円/月レベルですが費用が発生します。このまま進んでも良いですし、完全に費用ゼロを目指すなら一旦「バックアップなし」にしておくと良いです。

    ⑤ネットワーク・静的IPの設定

    画像
    【ネットワーキング】画面1

    「HTTPトラフィックを許可する」「HTTPSトラフィックを許可する」共にチェックを入れます。

    画像
    【ネットワーキング】画面2

    ネットワークインターフェースのⓥ部分をクリックすると、ネットワークインターフェースの編集画面が表示されます。

    画像
    【ネットワーク インターフェース】画面1

    前半は特に触らなくてOKです。

    画像
    【ネットワーク インターフェース】画面2
    「外部IPv4アドレス」の設定後、
    この画像の右下にある「完了」ボタンを押下するのをお忘れなく!
    画像
    「外部IPv4アドレス」選択画面

    後半が重要です。「ネットワーク サービス ティア」がデフォルトでは「プレミアム」になっていますが、これを「スタンダード」にラジオボタンを変更します。「プレミアム」になっていると有料になります。

    その上で、「外部IPv4アドレス」を「エフェメラル」から「静的外部IPアドレスを予約」を選択しておくと、最初からスタンダードティアの静的外部IPが取得できるようです。

    Geminiに訊いている限りだと後で変更できそうですが、最初の時点で選択できるならしておいた方が楽だろうと思います。
    そして、設定したら必ず右下にある「完了」ボタンを押下してください。ネットワークインターフェースの設定がデフォルトに戻ってしまう恐れがあります。

    ⑤その他(オブザーバビリティ・セキュリティ・詳細)

    (キャプチャ画像は省略)
    これらは基本的に現時点ではデフォルトのままでOKです。

    ①~⑤を設定したら、最後に下部の「作成」ボタンを押下して
    数十秒~数分程度待機したら、VMインスタンスが作成されます。

    ◇ブラウザでのSSH画面

    画像
    【VMインスタンス】画面
    「接続」カラムの「SSH」という文字をクリックすると、
    下図のコンソール画面がブラウザで起動する
    画像
    【ブラウザでのSSH】トップ画面
    Ubuntu 26.04 LTS Minimal の初めてログインした状態

    これで晴れてVMインスタンスが作成できました。
    想定通り無課金で行けたら良いのだが……。

    ここからはWordPressのインストールになりますが、
    長くなったのでこの後は続編とします。
    恐らくメインはUbuntu 26.04で躓いた話になると思います。やれやれ……。

    ◇最後に

    上記躓きポイントは間違っていたら課金されてしまいますが、私の記載が間違っていたがために課金されてしまっても責任は取れませんので、その点は自己責任でお願いします <(_ _)>

    ただ、最新画面に応じた回答をもらいながら進められるのはとても良かったです。GCやAWSやAzureのような複雑なプラットフォームサービスを使う場合は、複数AIに訊きながら進める方が無難かもしれません。


     
     
    日々の体験談を中心に書いています。また、長文の執筆にも少しずつトライしています。 音楽・仏教・整体・ITなど、複数ジャンルに挑戦していきたいと思います。

    あなたへのおすすめ