5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GoogleComputeEngine上にサーバを立ててUNETを動かす

Last updated at Posted at 2017-07-04

#環境
Unity5.6.2f1
Windows10 Home

#概要
GoogleComputeEngine(AWSのEC2のようなの)上で、Linuxサーバのインスタンスを作成し、UNETのサーバプログラムを動かし、マルチ対戦します

#GoogleComputeEngineの常時無料枠
以下のUrlに記載されています
https://cloud.google.com/free/docs/always-free-usage-limits
https://cloud.google.com/compute/pricing
USリージョンの「f1-micro」インスタンスが1つ無料とあるようです(バージニア州北部を除く)

#インスタンスの作成
以下のページで詳しく解説されています
あぱーブログ
「Compute Engine インスタンスの作成」まで進める
コンソールで「外部IP 」を確認しておく。(例:104.198.168.72)

#GoogleCloudSDKのインストール
https://cloud.google.com/sdk/downloads?hl=ja
「対話型インストーラ」の記述に沿ってインストールします

#ログイン
すでにSDKをインストールしていて別のアカウントで使用していた場合、ログインが必要です
・「gcloud auth login」と入力
・アカウントを選択する

#サーバのポート開放
・「コマンドプロンプト」を開く
・「gcloud compute firewall-rules create VVV --allow tcp:0-10000,udp:0-10000」と打ち込みリターン
 VVVはルール名(例:unet)
 何番を開放すればよかったのかわからないので0から10000まで解放している
 コンソールの「VPCネットワーク」>「ファイヤーウォールルール」で確認できる
  https://console.cloud.google.com/networking/firewalls/list?project=heroic-passkey-178708&tab=INGRESS
 
#UNETプログラムの用意
ここにテスト用のUNETプログラムを用意しました
・「Download」を押してzipをダウンロード
・zip内に含まれる「Linux」内のものがサーバにアップするプログラム
・「WinApp」内のものはサーバと接続するクライアントプログラム、またはローカル確認用のサーバプログラムを兼ねる

#サーバにデプロイ(コピー)
・ダウンロードしたzipを展開する
・「コマンドプロンプト」を開き、「Linux」フォルダ内に移動する
・「gcloud compute copy-files *.* XXX@YYY:」と打ち込みリターン
 XXXはユーザー名
 YYYはインスタンス名
(例:gcloud compute copy-files *.* fukaken5050@test-instance:)

#sshでサーバに接続
・「コマンドプロンプト」を開き、「Linux」フォルダ内に移動する
・「gcloud compute --project "AAA" ssh --zone "BBB" "XXX@YYY"」と打ち込みリターン
 AAAはプロジェクト名
 BBBはインスタンスのリージョン
 XXXはユーザー名
 YYYはVMインスタンス名
(例:gcloud compute --project "testcomputeengine-171603" ssh --zone "us-central1-a" "fukaken5050@test-instance")
 内部で「putty」が実行されてサーバのコマンドラインが入力できるようになる

#実行権限の付与
・「putty」上で「chmod u+x EEE」と打ち込みリターン
 EEEはプログラム名(例:chmod u+x server.x86_64)

#サーバプログラムの実行
・「putty」上で「nohup ./EEE -logFile server.log &」と打ち込みリターン
 EEEはプログラム名(例:nohup ./server.x86_64 -server -logFile server.log &)
 -serverはUNETプログラム内部で使用している独自のパラメータ
・「Ctrl+C」でプロンプトに戻る

#テスト用クライアントプログラムの実行
・ダウンロードしたzipを展開する
・「WinApp」>「test.exe」を実行する
・「接続先」に外部IPを入力する(例:104.198.168.72)
・「設定」を押す
・「クライアント」を押す
 サーバに接続される
・もう一つ「test.exe」を実行し、「クライアント」を押す
・片方は「募集」、もう一つは「参加」で対戦する

#プロセスの停止
・「putty」上で「ps x」と入力
 実行されているプロセス一覧が表示される
・「Kill XXX」と入力
 XXXはプロセスID

#プロセスを監視して再実行
サーバプログラムが落ちてしまった場合に、自動で再実行します

execServer.sh
・「nohup ./execServer.sh &」と入力

#!/bin/bash
while true
do
isAlive=`ps -ef | grep "server.x86_64" | grep -v grep | wc -l`
if [ $isAlive = 0 ]; then
echo "serverを実行します"
nohup ./server.x86_64 -server -logFile server.log &
fi
sleep 10
done
5
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?