サウザーのGCPチャレンジ

GCPに関した記事を書いていきます

GCPで仮想サーバを作ってみた

sshキー作成(必須ではない)

以下を参考に行った。aws、azrureより面倒である。(無理にssh接続する必要はない。ブラウザアクセスならすぐできる)

秘密鍵作成

ssh-keygen -t rsa -b 4096 -C "XXXXX@gmail.com"

使っているsshフォルダに秘密鍵と公開書きを保存する。既存のファイルを上書きしないように注意

サーバへの公開鍵配布設定

参考 qiita.com

Compute Engine -> メタデータ -> SSH 認証鍵 公開鍵を入力

これでインスタンスに自動で配布される。サーバの編集画面では表示されていない。 サーバに個別に設定するときは、サーバの編集画面で設定する必要がある。(これは面倒なので個人使用ではメタデータで設定しておけばよい)


仮想ネットワーク(VPC)の作成

今回は作成しない。サーバ作成時、デフォルトではdefaultというのVPCを使うのだろうが、サーバ作成時にどこで指定しているかわからなかった

仮想サーバの作成





※ubuntu23では手順通りでは動かなったのでやめた。(少し修正すればできるであろう)

追記

サーバ作成画面にVPCを設定する項目が下の方にあった。今回は設定しないが、デフォルトのdefaultというVPCになる。

サーバにログイン

sshのconfigも設定しておく

# C:\Users\XXXX\.ssh\config
host 34.85.44.234 # 使っているVMのIPにする
  User XXXX # 多分アカウント名と一致。インスタンスの画面に表示されている
  IdentityFile ~/.ssh/id_rsa_gcp
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

サーバにログインする。IPはインスタンスの画面に表示されている

PS C:\Users\XXXX\gcp> ssh 34.85.44.234
Warning: Permanently added '34.85.44.234' (ED25519) to the list of known hosts.
Linux instance-20240223-055342 6.1.0-18-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64

仮想サーバ上にchatアプリのセットアップ

# 全パッケージアップデート
sudo apt update -y

# nodejs(npm)インストール
curl -fsSL https://deb.nodesource.com/setup_21.x | sudo -E bash - &&\
sudo apt-get install -y nodejs -y

# その他パッケージのインストール
sudo apt-get install git nginx -y


# npmパッケージのインストール
git clone https://github.com/socketio/chat-example.git
cd  ~/chat-example
sudo npm install express@4

# 以前は自動でインストールされた気がするが、今回はなかったので追加
sudo npm install socket.io @socket.io/cluster-adapter sqlite3 sqlite

sudo tee /etc/systemd/system/chat-example.service << EOT
[Unit]
Description=chat-example
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /home/tmoritoki0227/chat-example/index.js
Restart=always
WorkingDirectory=/home/tmoritoki0227/chat-example

[Install]
WantedBy=multi-user.target
EOT

sudo systemctl restart chat-example
sudo systemctl status chat-example

sudo tee /etc/nginx/conf.d/chat-example.conf << EOT
server {
    listen       8080;
    server_name  localhost;

    # ポート8080で受けて、ローカルのポート3000に飛ばしてくださいと設定されています。
    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}
EOT

sudo systemctl restart nginx.service
sudo systemctl status nginx.service

※古いnodejsとnpmだと動かなった。azureの方の手順は今は動かないかもしれない

ポート開放

このアプリは8080をつかっているので、サーバに8080をアクセスできるようにする必要がある

Google Cloud Platformのファイアウォール設定方法 | 85's life

この資料にとおりに8080開放するルール「default-allow-8080」を作り、サーバ編集画面で「use-8080」を「ネットワーク タグ」で設定してあげる。

ブラウザでアクセス

http://34.85.44.234:8080/

IPは自分の外部IPに読み替えてね。以下のような画面が表示されればOK。チャットアプリなので何か入力してみよう

作成したサーバの削除