Minecraft server on AWS やったことまとめ

思い返せばなんだかんだいろいろやってたぽいし、また立てるかもしれないので概要だけまとめておく

as of 2017/3/25

AWS アカウント登録

  • 無料枠利用のみでもクレジットカードは必須

EC2インスタンス作成

  • t2.microなら1年は無料(その後のことはまた考える)
  • Amazon Linux AMI
  • シャットダウン動作=停止
  • 削除保護の有効化(間違って消さないように、消すとき少し手間になるぽい)
  • テナンシー=共有
  • その他ほぼデフォルト(覚えてない)
  • ルートデバイスタイプ ebs 8GB (デフォルト。t2.microだとInstance store = ephemeral disk が使えないので、インスタンス終了時にデータが消えちゃうことはない)
  • 新しいセキュリティグループを作成。inbound で SSHとtest用HTTP(tcp80)とマイクラ用ポートを開ける。SSHはIP絞った方が安心(とお勧めされる)。なお、ステートフルっぽいのでoutboundは不要だった。
  • 新しいキーペアを生成してSecret key をSSH用に取得。鍵の取得はこのときしか出来ず、この鍵がないとSSHできないので大切に。Puttyだと鍵を一度変換する必要があるが、teratermならSSHで繋ぐ際のkey選択時にALL(*)にしてpem読ませればそのままいける。

もろもろ確認

  • マネジメントコンソールでパブリックIPアドレス確認(DNSネームでも良い。長いけど)
  • ssh でさきほどの秘密鍵使ってec2-userでログイン
  • ログインできたらなにはともあれアップデートsudo yum update
  • おわったら、セキュリティ等等もろもろテストのため httpd を入れる
    sudo yum install httpd
    sudo service httpd start
  • いれたら doc rootの/var/www/html/ にindex.html つくり、ブラウザから見る。みれなかったらセキュリティゾーンとかIPとか確認する。

Minecraft入れる

  • Javaを確認 java -version
  • minecraft_server.xxx.jar をwget する(wget https://s3.amazonaws.com/Minecraft.Download/versions/1.10.2/minecraft_server.1.10.2.jar 詳細ググる)
  • とりあえずテスト起動 java -jar minecraft_server.1.10.2.jar nogui
  • 一回強制終了する。eula.txt 内でEULAに同意しないと起動しない仕様 eula=true
  • server.properties 編集
    • server-port=空けたいポート番号。EC2のセキュリティグループで開ける必要あり
    • motd= 変えとくとCool
  • 再度テスト java -jar minecraft_server.1.10.2.jar nogui
  • PCからマイクラで接続テスト。マルチプレイ、サーバ追加でIP:ポートでアクセス。サーバと同じバージョンで起動しないとバージョン違う警告でる。繋がったらOK。ただしこの状態だとSSH切れるとサーバ側のminecraftも終了しちゃう状態。

Minecraftをバックグラウンド、サービス化

  • screenを入れる(入ってた)
  • 起動スクリプト入手(wget -O minecraft http://www.minecraftwiki.net/wiki/Tutorials/Server_startup_script/Script?action=raw 詳細はググる)
  • パラメタ設定、メモリはXmxを1024(とりあえず)
  • 実行可能にする sudo chmod 755 minecraft
  • スクリプトを init.d に置く
  • サービス登録 sudo chkconfig –add minecraft
  • 自動起動設定 sudo chkconfig minecraft on
  • 起動してみる service minecraft start
  • PC マイクラから繋がるか確認
  • サーバ再起動してもちゃんと起動して繋がるか確認 reboot

 

t2.micro には Swap 領域がないぽいので作成

  • ファイル作る sudo fallocate -l 1024m /temp/swapfile
  • 権限 chmod 600
  • ファイルをswap化 sudo mkswap /swapfile
  • swapの有効化 sudo swapon /swapfile
  • freeで確認 (swapon -sとか cat /proc/meminfo でも)
    $ free
    total used free shared buffers cached
    Mem: 1019116 753860 265256 60 44096 130212
    -/+ buffers/cache: 579552 439564
    Swap: 1048572 0 1048572 <<<<<< できた
  • fstabに追加して起動時に自動マウントさせる vi /etc/fstab
    swapfile swap swap defaults 0 0
  • サーバ再起動してswap がマウントされるか確認 reboot

こどもがじーじばーば家からでもアクセスができるようにIPの固定化

  • EC2のマネジメントコンソールから Elastic IP
  • アドレスの作成
  • できたアドレスを選択してMinecraftが稼動するインスタンスにアサイン
    ※作ったままインスタンスに紐付けず放置するとお金がかかるぽいので注意!
  • 自分のドメインのDNSのホストにAレコードとしてIPを振る
  • PCからこのホスト名:ポート番号 でアクセスきるか テストする
  • こどもにこの ホスト名:ポート番号 をメモさせる

MinecraftのWorldのバックアップを定期的にS3に取る

  • S3でバケット作成 5GBまで無料
  • AWSマネジメントコンソールからS3を選ぶ
  • バケット作成、適当にファイルをアップロード
  • EC2インスタンスからS3アクセスできるよう、IAMロールを作成しインスタンスにアタッチ
  • AWSマネジメントコンソールからIAMロールを選ぶ
  • ロール名作成、ロールタイプEC2、AmazonS3FullAccessを付与
  • EC2でインスタンスを選択して右クリック > Attach/Replace IAM role で作成したIAMロールを割り当て
  • アクセスできるかテスト aws s3 -ls s3://バケット名 アップロードしたファイルが見えればOK
  • スクリプト探してwget(ググる、作っても良いかと)
  • 解読しつつ設定、テスト
  • 問題なければcron登録、スクリプトに過去のファイル消す機能がない場合、S3の容量制限を考えつつ実行頻度を設定
  • バケットにLifecycle設定(多少の理解が必要?)

 

定期的なMinecraft鯖の自動再起動

  • service restart minecraft をcron登録

Comments (0)

› No comments yet.

コメントを残す

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Pingbacks (0)

› No pingbacks yet.