3
2

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 1 year has passed since last update.

AWSでMinecraftサーバーを立ててみた

Posted at

やってみたのでメモ。

サーバーソフト・・Spigot

検索したら出できたやつ。

手順

  1. AWSでEC2インスタンス起動
  2. 起動したEC2インスタンスに、Spigotをインストール
  3. ログの設定

少しはまりポイントもありつつ、わりと簡単だった。
アーキはこんな感じ。シンプル。
image.png

1. AWSでEC2インスタンス起動

EC2インスタンスのスペックはこんな感じにした。
とにかく快適に使いたいので、スペック高め。
お金は結構かかるけど、遊びたいときだけ起動するようにすればそんなに。

  • OS
    Ubuntu
  • インスタンスタイプ
    c5a.2xlarge 8vCPU 16GiBメモリ
  • EBS
    50GB

2. 起動したEC2インスタンスに、Spigotをインストール


#リポジトリ更新
sudo apt-get -y update

#Amazon correttoをダウンロードする。AWSで使えるjdk。
wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add - 
sudo add-apt-repository 'deb https://apt.corretto.aws stable main'

#Spigotはjava17で動くのでjava17をインストール
sudo apt-get install -y java-17-amazon-corretto-jdk

#gitをインストール
sudo apt-get -y install git

#minecraft用のディレクトリ作成して権限変更
sudo mkdir minecraft-spigot
sudo chmod 777 minecraft-spigot

#Spigotをダウンロード
cd minecraft-spigot
wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
sudo java -jar BuildTools.jar --rev 1.19.2

#実行!(事前に作っておいた起動用のスクリプト)
sh Minecraft_start.sh

スクリプトはこれだけ。

Minecraft_start.sh
#!/bin/sh
java –Xmx4096M –Xms4096M -XX:+UseG1GC -jar /home/ubuntu/minecraft-spigot_1.19.2/spigot-1.19.2.jar nogui

これでEC2インスタンスに設定しておいたグローバルIPを指定して、
ローカルのマイクラから接続できた。

3.ログの設定

1.EC2用のIAMロールを作成し、CloudWatchServerAgentのポリシーを設定し、インスタンスにアタッチ
(毎度のやつ)
2.CloudWatchをインストール
インストール方法はここ

wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon- 
cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

3.jsonの作成

sudo touch /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
sudo systemctl start amazon-cloudwatch-agent
systemctl status amazon-cloudwatch-agent
sudo systemctl enable amazon-cloudwatch-agent
systemctl is-enabled amazon-cloudwatch-agent

これあったら良いかなーっていうログを適当に設定。

amazon-cloudwatch-agent.json
{
   "logs": {
       "logs_collected": {
            "files": {
                "collect_list": [
                   {
                        "file_path": "/home/ubuntu/minecraft-spigot/logs/latest.log",
                        "log_stream_name": "{instance_id}",
                        "log_group_name": "/home/ubuntu/minecraft-spigot/logs",
                        "timestamp_format": "%d/%b/%Y:%H:%M:%S %z",
                        "timezone": "UTC"
                    },
                    {
                        "file_path": "/var/log/syslog",
                        "log_stream_name": "{instance_id}",
                        "log_group_name": "/var/log/syslog",
                        "timestamp_format": "%d/%b/%Y:%H:%M:%S %z",
                        "timezone": "UTC"
                    },
                    {
                        "file_path": "/var/log/auth.log",
                        "log_stream_name": "{instance_id}",
                        "log_group_name": "/var/log/auth.log",
                        "timestamp_format": "%d/%b/%Y:%H:%M:%S %z",
                        "timezone": "UTC"
                    }
                ]
            }
        }
    }
}

ログの場所はこれを見た
[メモ]Linuxの主なログファイル

参考

余談、ハマったとこ

最初、t2microで試してたらOutOfMemoryでうまくいかず、ヒープメモリについていろいろ調べることになった。
参考になったやつ。

EC2をt2.microで立てたときにやることメモ
【JVM】OOM(Out Of Memory)障害対応のための必要な知識
JVMのヒープメモリを確認する(jstat)

インストール手順にメモリ指定よく載ってておまじないのように使ってたけど、
なるほどね、となった。
t2.microだとスワップメモリが割り当てられてないのですぐ落ちる。
結局、マイクラサーバーを動かすにはどうやってもスペック不足だったのでスペック上げました。

3
2
0

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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?