【Unity】第一回 ソーシャルゲームを作る 〜サーバの環境構築〜【AWS × Laravel】

スポンサーリンク
PC創作
マイケル
マイケル
さあソシャゲ作るぞ〜〜〜!!!
エレキベア
エレキベア
相変わらず唐突クマね・・・。
そもそもソシャゲって何クマか
マイケル
マイケル
ソシャゲの定義も曖昧なところではあるけど、

  • クライアント、サーバで連携しDB管理を行なっている
  • ログイン、ガチャ等基本機能を備えている


システムを作ってみようと思っているよ!

エレキベア
エレキベア
なるほどクマ・・・。
確かにそこまで作れたら楽しそうクマ
マイケル
マイケル
サーバとの連携周りを習得したらいろいろと応用が効きそうだしね!
さっそくやっていこう!!
エレキベア
エレキベア
クマ〜〜〜〜〜〜
スポンサーリンク

参考書籍

マイケル
マイケル
開発を進めるにあたって、
参考にした書籍はこちらになります!

エレキベア
エレキベア
ちょうどいいのがあったクマね
マイケル
マイケル
うん!
だけどレビュー見たら分かる通り、DB周りの話が多く、
エンジニア向けの内容になっているので注意です・・・。
エレキベア
エレキベア
ソシャゲの特性上仕方ないクマね〜〜
マイケル
マイケル
しかし、これをクリアした頃にはかなりスキルの幅は広がっているはず!
一緒にがんばっていきましょう!!
エレキベア
エレキベア
なんでもかかってくるクマ!!
スポンサーリンク

全体構成

マイケル
マイケル
ざっくりとした全体構成はこんな感じです!
Screenshot 2020 11 04 23 45 34


[サーバ側]
フレームワーク:Laravel (PHP)
データベース:MySQL

[クライアント側]
フレームワーク:Unity (C#)
データベース:SQLite

マイケル
マイケル
クライアントはお馴染みのUnity!
サーバ側ではLaravelというPHPフレームワークを使用します!
エレキベア
エレキベア
なんでクライアント側にもデータベースがあるクマ??
マイケル
マイケル
ログイン情報や課金情報などゲーム全体に関わるデータはサーバ側
ソート順などクライアントの依存する情報はクライアント側
に保存するようなイメージだよ!
エレキベア
エレキベア
なるほどクマ
それぞれ管理するべきデータがあるクマね
マイケル
マイケル
サーバに関しては、XServerロリポップ!などいろいろな種類があるけど、
今回は書籍の例に沿ってAWS(Amazon Web Service)を使って環境を構築しようと思うよ!
エレキベア
エレキベア
最近流行りのやつクマね
マイケル
マイケル
仕事でもなかなか触る機会がないから使ってみたかったんだよね。
PHPも書いたことないから初めてのことだらけだぜ!
エレキベア
エレキベア
(書いたことなかったクマか・・・。)
マイケル
マイケル
とにかく何事も挑戦あるのみだ!!
さっそく環境を構築してみよう!
エレキベア
エレキベア
クマ〜〜〜〜〜〜〜

スポンサーリンク

サーバサイド環境構築

マイケル
マイケル
長編の企画になりそうですが、
今回は第一回ということで、サーバ側の環境構築を行なっていきます!
Screenshot 2020 11 04 23 45 34のコピー
エレキベア
エレキベア
楽しみクマ〜〜〜〜〜
マイケル
マイケル
まずはサーバを準備するために、下記よりAWSアカウントを作成しましょう!


AWS 公式サイト


Screenshot 2020 11 05 0 35 08

↑AWS公式サイト
マイケル
マイケル
現在、12ヶ月間は無料で使用できる無料枠があるようなので、
少なくとも個人で勉強する分には無料で使用できそうです。
エレキベア
エレキベア
太っ腹クマね〜〜〜〜

サーバ環境設定

・EC2インスタンスの作成
マイケル
マイケル
アカウントを作成したら、サーバを準備していきましょう。
EC2を選択して、インスタンスを起動よりEC2インスタンスを作成しましょう!
Screenshot 2020 11 05 0 36 22
↑EC2インスタンスの作成
マイケル
マイケル
無料枠の中から選んで、今回は下記の設定で作成しました!


プラットフォーム:Amazon Linux
インスタンスタイプ:t2.micro

Screenshot 2020 11 05 0 37 15
↑インスタンスの設定
マイケル
マイケル
なお、途中でキーペアの作成を促されますが
後々SSH接続するために使用するため、忘れず保存しておきましょう!
エレキベア
エレキベア
秘密鍵ってやつクマね
マイケル
マイケル
そしてHTTP接続するために、
セキュリティグループ -> インバウンドルール
の設定よりポートを開けておきましょう!
Screenshot 2020 11 05 0 38 23
エレキベア
エレキベア
準備完了クマ〜〜〜〜〜〜
・SSH接続
マイケル
マイケル
サーバを準備したらSSH接続ができるか試してみましょう!
先ほど保存したキーペアを使用して下記コマンドを実行します!
chmod 600 【SSH鍵のパス】
 ↑パーミッションの設定
ssh -i 【SSH鍵のパス】 ec2-user@【EC2エンドポイント】
 ↑SSH接続
Screenshot 2020 11 05 22 28 17
マイケル
マイケル
こんな感じでログインできればOKです!
エレキベア
エレキベア
簡単に準備できたクマ〜〜〜〜
・ライブラリのインストール
マイケル
マイケル
SSHで接続した後、必要なライブラリを準備しておきましょう!
マイケル
マイケル
下記コマンドで、ApacheMySQLをインストールしましょう!
sudo yum -y install httpd
sudo yum -y install mysql
↑ApacheとMySQLのインストール
マイケル
マイケル
インストールしたら下記コマンドでApacheを起動後、
http://【サーバのIPアドレス】
にアクセスしてみましょう!
sudo service httpd start
↑Apacheの起動
Screenshot 2020 11 05 22 46 49
マイケル
マイケル
上記のようなテストページが表示されれば導入はバッチリです!
エレキベア
エレキベア
なんとかできたクマ〜〜〜〜〜

DB環境設定

・RDSの作成
マイケル
マイケル
サーバの環境設定が完了したら、次はDB環境の設定です!
AWSのページでRDSを選択し、データベースを作成ボタンより
DBの作成を行いましょう!
Screenshot 2020 11 05 0 39 19
↑データベースの作成
マイケル
マイケル
こちらも無料枠を使用し、作成情報は下記の通り!
また途中で入力するユーザとパスワードはDBのログインに使用するので
メモをしておきましょう!


エンジン:MySQL Community

Screenshot 2020 11 05 0 39 42
マイケル
マイケル
DBを作成したら、サーバの時と同様
セキュリティグループ -> インバウンドルール
より、「MYSQL/Aurora」のポートを開けておきましょう!
Screenshot 2020 11 05 0 39 58
エレキベア
エレキベア
DBも完了クマ〜〜〜〜〜〜!!
・DBアクセス
マイケル
マイケル
作成が完了したら下記コマンドで接続とデータベース作成を試してみましょう!
mysql -h 【DBエンドポイント】 -P 3306 -u【ユーザ名】 -p
↑MySQL接続
CREATE DATABASE 【データベース名】
SHOW DATABASES;
↑データベース作成、表示
Screenshot 2020 11 05 23 06 59
マイケル
マイケル
こんな感じで実行できれば設定はオーケーです!
エレキベア
エレキベア
なんとかDBまでできたクマね

PHP環境設定

マイケル
マイケル
最後にPHPとフレームワークの導入を行いましょう!
エレキベア
エレキベア
あと一息クマね
・PHPの導入
マイケル
マイケル
まずはPHPをインストールしましょう!
ここではLTS版として提供されているバージョン7.2を
「amazon-linux-extras」経由でインストールします!
sudo amazon-linux-extras install php7.2
マイケル
マイケル
これでPHPの導入は完了ですが、
「php-mbstring」等、一部ライブラリが足りずにLaravelの実行ができないため、
下記コマンドで不足ライブラリをインストールしましょう!
yum list | grep php
sudo yum install php-mbstring.x86_64
sudo yum install php-xml
マイケル
マイケル
インストール後は、サーバーを再起動させておきましょう!
詳細は、下記のサイトがわかりやすくまとまっていたのでご参照ください。


参考:
Amazon linux2でphp-mbstring有効化

エレキベア
エレキベア
次はLaravelクマ〜〜〜〜
・Laravelの導入
マイケル
マイケル
PHPを導入したらフレームワークのLaravelを導入します!
LaravelはPHP管理パッケージのComposer経由で使用するため、
下記コマンドでComposerをインストールします!
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
 ↑Composerのインストール
マイケル
マイケル
Composerをインストールしたら、下記コマンドでLaravelのプロジェクトを作成してみましょう!
マイケル
マイケル
作成したいプロジェクト名と、Laravelのバージョン(例:5.5、6.0など)を指定しましょう。
cd /var/www/html
composer create-project --prefer-dist laravel/laravel 【プロジェクト名】 【Laravelバージョン】
 ↑Laravelプロジェクトの作成
マイケル
マイケル
そしてHTTPでのデフォルトの接続をLaravelプロジェクトにするため、
/etc/httpd/conf 配下にある、
hotted.conf 内の下記部分を修正・追加しましょう!
#DocumentRoot "/var/www/html"
DocumentRoot "/var/www/html/【プロジェクト名】/public"
<Directory "/var/www/html/【プロジェクト名】/public">
    AllowOverride All
</Directory>
マイケル
マイケル
それからもう一つ、プロジェクト配下に作成された「.env」ファイルの
下記DB情報に、作成したDB名やユーザ・パスワードを設定しましょう!
DB_CONNECTION=mysql
DB_HOST=【DBエンドポイント】
DB_PORT=3306
DB_DATABASE=【DB名】
DB_USERNAME=【ユーザ名】
DB_PASSWORD=【パスワード】
エレキベア
エレキベア
これでプロジェクトにつながるようになったクマね
マイケル
マイケル
その通り!
下記コマンドでApacheを再起動して
http://【サーバのIPアドレス】
にアクセスしてみましょう!
sudo service httpd restart
 ↑Apacheの再起動
Screenshot 2020 11 05 23 31 43
マイケル
マイケル
上記のようなLaravelのページが表示されれば導入は完了です!
エレキベア
エレキベア
ついにプロジェクトができたクマ〜〜〜!
マイケル
マイケル
うまく表示されない場合はPHPのパッケージ周りや、httpd.confの設定を見直してみましょう!
スポンサーリンク

おわりに

マイケル
マイケル
というわけで今回はサーバ側の環境構築だったけどどうだったかな?
エレキベア
エレキベア
サーバと聞くと難しそうクマが、
数クリックでサーバ立ち上げまでできて完了だったクマ!
マイケル
マイケル
そのへんはさすがAWSだよね!
個人だとなかなかサーバ環境まで設定したりしないから新鮮だったね!
マイケル
マイケル
しかし続きはLaravelの基本的な使い方を勉強してから進めたいと思います・・・。
エレキベア
エレキベア
PHPも触ったことないんじゃさすがに厳しいクマね
でも何にせよ楽しみクマね
マイケル
マイケル
まあ、気長にやっていこう!
それでは今日はこの辺で!アデュー!!
エレキベア
エレキベア
クマ〜〜〜〜〜

【Unity】ソーシャルゲームを作る 〜サーバの環境構築〜【AWS × Laravel】 〜完〜

コメント

  1. 匿名希望 より:

    こんにちは。

    初心者なので素人質問かもしれませんが、教えていただけると助かります。
    同じ書籍を購入しており、DBアクセスの手前まではできましたが、MySQL接続の際に
    コマンドを入力すると「Enter password:」と表記されますが、マスターパスワード
    を入力するとエラーになってしまいます。念のためパスワードを変更して再度入力
    しましたが、エラーになってしまいます。エラーは「ERROR 2005(HY000)」。

    もしわかれば教えていただけると幸いです。

  2. 匿名希望 より:

    SQL接続のコマンドの入力間違いでした。画像のおかげで気づくことができました。
    ありがとうございました。

    • マイケル マイケル より:

      コメントありがとうございます!
      解決したようでよかったです( ✌︎’ω’)✌︎
      今後ともよろしくお願いします!

    • より:

      本書と本記事を読みながらやっているのですが、最後のapacheの再起動から上手くアクセスできなくなります。調べたところ「プロジェクト名」/vendor/autoload.phpが存在しないようで、composer installなどのコマンドを試しましたがダメでした。かなり調べたのですが、解決策が見つからず困っています。助けてください。。

      • マイケル マイケル より:

        コメントありがとうございます!
        自分も軽く調べて見ましたがComposerがインストールされていないなどの情報が多かったので、
        「composer install」や「composer update」で解決しそうな気はしています…。
        あとは上記コマンドを実行する時のフォルダが正しいかどうかは確認した方がよさそうです。
        あまりハマるようでしたら、また一から環境を作り直すのも手かもしれません。
        お役に立てておらず申し訳ないですが確認してみてくださいm(_ _)m

  3. いろは坂 より:

    以前質問させていただいたいろは坂というものです。
    手詰まりになってしまったのでコメントさせてください。

    自分もlaravelを用いてオンラインっぽいゲームを作っていました。
    ただ、ec2上でいきなりファイルを作りながらコーディングするのかよくわからなかったため(初心者なため)、自分のPC上でlaravelプロジェクトを作りながらunityでゲームを完成させました。
    ここで、このローカルで作ったlaravelプロジェクトをec2インスタンス上の/var/www/html/上にコピーして、データベースをRDSに繋ぎ変えれば動くだろう〜、という感じで思ってたんですが動きません。
    いま出ているエラーはもっと前段階のComposerのversionが違いますよ^^というものなんですが、これはたしかにlaravel5.7で作り始めてもたもたしていました。

    と、長々と書き連ねてしまったんですが、わからないことがあります。
    ・ComposerのVersionが足りてないと言われても、localでlaravel5.7という指定をしてComposerをインストールしてlocalでは問題なく動いていたのになぜec2上では動かないんでしょうか?
    ・本ページに取り上げられてる書籍にもあまり書いてなかったと思います、最初にec2上にlaravelプロジェクトを作るよう説明されていましたが、そもそもローカルで作るのではなくec2上にファイルを置きながらデバッグなどをしていくのが本来のやり方なのでしょうか?
    ・localで作ったlaravelファイルをアップロードするやり方があっている場合、migrationなどはそのままやれば一括でlocalで作ったデータベースと同じ様になるのでしょうか?(上述のエラーによりそもそもエラーになってしまうため、確認できません…。)もし、うまく行かないのならば、migrationファイルは一個一個作ってmigrateして…という感じなんでしょうか?

    githubはプライベートリポジトリ?が有料なので契約していない&完全に1人で制作なので人と共有するgithubはそもそも必要ないのでは..?と考えていますが、githubからpushやpullやらをやらないとおかしくなるということなんかもあるんでしょうか…。いろんなことがどんどんわからなくなってきているので、雑多に質問を投げかけてしまいすみません…。よろしければ、マイケル様がどういうふうにec2上にlaravelプロジェクトを置いて、このオンラインゲームを制作していたか伺いたいです。

    本ページで取り上げられている書籍は自分には難しすぎて、本サイトを参考にさせていただいていますが、それでもマイケル様にとっては基本過ぎて端折られているところがあると感じられ、エンジニアでもない完全初心者の自分には厳しく感じます…。そのため、こんな初心者質問をしてしまいました、どうかご容赦お願いします。

    • マイケル マイケル より:

      コメントありがとうございます!
      全然気軽に聞いていただいて大丈夫です٩( ‘ω’ )و!
      自分もそこまで詳しい訳ではないのですが、下記に分かる範囲で解答させていただきます。
      (解決しなかった場合、エラーログなど貼っていただけたら調査もできるので、遠慮なく聞いてください!)

      ******************************

      ◆localでは問題なく動いていたのになぜec2上では動かないんでしょうか?
      →ローカルで動いていたのであれば、恐らくec2上での環境設定が不足していると思うので、
       ec2上で、「PHPやLaravel環境がインストールできているか」「PHPやLaravel環境が違うバージョンがインストールされていないか」
      「Laravelプロジェクトの設定が誤っていないか」を確認してみるのがよいと思います!

      ◆そもそもローカルで作るのではなくec2上にファイルを置きながらデバッグなどをしていくのが本来のやり方なのでしょうか?
      →自分も新規開発のプロジェクトに参画したことがないので、本来のやり方かまではっきり言えないのですが
        ①ec2に開発環境を構築して、ローカルにプルして持ってくる
        ②ローカルで修正して開発環境にプッシュする
       といった流れが多いのかなとは思っています。
       ただ、ローカルで作ったプロジェクトコピーでも環境構築さえ出来ていれば動くと思います!

       あとは最近だと、Dockerを使って各サーバ環境とローカル環境の相違を少なくする手法も多そうですね・・・。
       (AWSではECSというDockerコンテナを実行するサービスもあるので、触ってみようかと思っていますw)

      ◆migrationなどはそのままやれば一括でlocalで作ったデータベースと同じ様になるのでしょうか?
      →マイグレーションはそのままやれば恐らく同じテーブルが作成されると思います。
       ただ、AWSでDBを作成するのと、作成したDB情報をLaravelプロジェクトで設定する必要があるのでご注意ください!

      ◆GitHubについて
      →環境構築でGitHubが必須ということはないですが、開発環境や本番環境など、環境ごとにブランチを切って管理するのが多いように思います。
       また、個人開発でも「何か誤りがあった際に前のバージョンに戻すことができる」「修正履歴を確認することができる」といったメリットがあるので
       使う恩恵は十分にあると思います!
       今は無料版でもプライベートリポジトリを5つまで持てたはずなので、ぜひ試してみてください!

      ******************************

  4. いろは坂 より:

    こ、こんな丁寧にありがとうございます…(涙)
    だいぶ基礎的だろうことを教えていただき本当にありがとうございます…。感謝が止まりません…。
    教えていただいたことひとつひとつマスターできるようにこれからも精進したいと思います!
    本当にありがとうございました!