🔖

Unity+MagicOnion4.1.xを試す サーバーをEC2環境で動かす編

2021/02/24に公開
3

チャプター

まえがき

サーバーアプリのビルド

$ dotnet publish --configuration Release
  MyApp-Server -> D:\MagicOnion\MyApp\MyApp-Server\bin\Release\net5.0\MyApp-Server.dll
  MyApp-Server -> D:\MagicOnion\MyApp\MyApp-Server\bin\Release\net5.0\publish\
  • 後ほど、MyApp\MyApp-Server\bin\Release\net5.0 配下をEC2に持っていく

EC2の構築

環境

  • t2.micro
  • Amazon Linux2
  • セキュリティグループの設定漏れで接続出来ないとかありがちなので注意

.NET SDKの追加

$ sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
$ sudo yum install -y dotnet-sdk-5.0

サーバーアプリのデプロイ

  • サーバーアプリのビルドで作成したディレクトリをデプロイする
  • デプロイ方法はお好みで(とりあえずscpとかなんでも)
  • ここでは /var/www/onion にアプリを配置
$ sudo mkdir -p /var/www/onion

Nginxの追加

$ sudo amazon-linux-extras enable nginx1
$ sudo yum install nginx

Nginxの設定

$ sudo vim /etc/nginx/conf.d/onion.conf
/etc/nginx/conf.d/onion.conf
server {
  listen 8080 http2 default_server;
  listen [::]:8080 http2 default_server;
  location / {
    grpc_pass grpc://localhost:5000;
  }
}

Nginxの起動

$ sudo service nginx start

サーバーアプリの起動

$ cd /vaw/www/onion
$ dotnet MyApp-Server.dll
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /var/www/onion/

クライアントの修正

コントローラーを修正

  • 大本はこちらにあります
  • 修正といっても接続先とポートを変更するだけ
Assets/Scripts/MyApp/MyFirstController.cs
         void Awake()
         {
+            _channel = new Channel("EC2のPublicIPなど", 8080, ChannelCredentials.Insecure);
-            _channel = new Channel("localhost", 5000, ChannelCredentials.Insecure);
             _service = MagicOnionClient.Create<IMyFirstService>(_channel);
         }

接続確認

クライアント(Unity)のシーンを実行

  • 動作してればOK

参考

https://docs.microsoft.com/ja-jp/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-5.0

https://www.nginx.co.jp/blog/nginx-1-13-10-grpc/

GitHubで編集を提案

Discussion

KanToKanTo

MagicOnionとAWSを勉強中のものです。
本記事が大変参考になっています。ありがとうございます。

節「サーバーアプリの起動」について質問をさせてください。

2021年11月3日現在、
$ dotnet MyApp-Server.dll
を入力すると、Microsoft.NETCore.Appのバージョン5.0.11がないと怒られます。
抜粋したものを以下に載せます。


It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '5.0.11' was not found.

  • The following frameworks were found:
    5.0.9 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]

AWSとLinux周りはかなり疎いため、初歩的な質問でしたら申し訳ございませんが、
バージョンを5.0.11に上げるにはどうすればよいでしょうか...?
ご教授いただけると幸いです。

よろしくお願いします。

HRSHRS

すでに解決済みかもしれませんが、普通にyumで更新すれば良さそうな感じしますね。
動作確認していないので参考までに。

$  yum check-update | grep dotnet
dotnet-apphost-pack-5.0.x86_64      5.0.12-1                   packages-microsoft-com-prod
dotnet-host.x86_64                  5.0.12-1                   packages-microsoft-com-prod
dotnet-hostfxr-5.0.x86_64           5.0.12-1                   packages-microsoft-com-prod
dotnet-runtime-5.0.x86_64           5.0.12-1                   packages-microsoft-com-prod
dotnet-runtime-deps-5.0.x86_64      5.0.12-1                   packages-microsoft-com-prod
  • 更新コマンド
$ sudo yum update dotnet-host dotnet-hostfxr-5.0 dotnet-runtime-5.0 dotnet-runtime-deps-5.0 dotnet-apphost-pack-5.0
$ yum list installed | grep dotnet
dotnet-apphost-pack-5.0.x86_64        5.0.12-1                       @packages-microsoft-com-prod
dotnet-host.x86_64                    5.0.12-1                       @packages-microsoft-com-prod
dotnet-hostfxr-5.0.x86_64             5.0.12-1                       @packages-microsoft-com-prod
dotnet-runtime-5.0.x86_64             5.0.12-1                       @packages-microsoft-com-prod
dotnet-runtime-deps-5.0.x86_64        5.0.12-1                       @packages-microsoft-com-prod
dotnet-sdk-5.0.x86_64                 5.0.403-1                      @packages-microsoft-com-prod
dotnet-targeting-pack-5.0.x86_64      5.0.0-1                        @packages-microsoft-com-prod
KanToKanTo

ご返信いただきありがとうございます。
おかげさまで本ページの動作確認までできました。
かなり初歩の部分だったのだと思いますが、、私にとっては大きな一歩となりました。
重ねて御礼申し上げます。