- sshキー作成(必須ではない)
- サーバへの公開鍵配布設定
- 仮想ネットワーク(VPC)の作成
- 仮想サーバの作成
- サーバにログイン
- 仮想サーバ上にchatアプリのセットアップ
- ポート開放
- ブラウザでアクセス
- 作成したサーバの削除
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」を「ネットワーク タグ」で設定してあげる。
ブラウザでアクセス
IPは自分の外部IPに読み替えてね。以下のような画面が表示されればOK。チャットアプリなので何か入力してみよう
作成したサーバの削除