yukieijiのメモ代わりブロマガ

PCやMinecraft(時々プログラミング)で思ったり感じたことをメモ代わりに残すブログ

MinecraftのサーバーをWindowsからCentOSに変更したお話(2019/03/22更新:「Mate Desktop」と「Mozc」を追加しました)

9/20のサーバーアップデート「Code:Orion」のときにMinecraftのサーバーをWindowsからCentOSに変更しました、その時の記録を残しておきます参考になれば

2019/03/22:デスクトップを「Mate」に変更したお話とMozcを入れた時の話を追加

  • 変えるメリット
デメリットが微妙に大きいので人によってはないかもしれない。まずはLinuxに変えるメリットデメリットを
Linuxに変えるメリット
  サーバー用のOSが無料で使える(一般向けのWindowsだとライセンス的にグレー)
  コマンドでOSを直接操作程度できる
  勝手にアップデートして再起動することがない(アホみたいな大型アップデートもない)
  NTFSを頑張ったら読めるようになる
  OSの文字コードUTF-8に統一されるのでプラグインのコンフィグに日本語があっても文字コードを気にしなくて良くなる
  Minecraftのサーバーが落ちても自動で起動できるようなシェルスクリプトを書ける
  Minecraftのサーバーのログがゲーム内の色と一致する
  コマンド打っている途中にログに流されない
・デメリット
  一部ツールが使えない(MCEditとかNBTExplorerとか)
  エラーとかを解決したりするのに英語の知識がいる
  一部ツールはビルドやコンパイルが必要になるのでプログラミングの知識が多少いる
  Google先生と仲良くならないと辛い
Linuxに変えるメリットで一番大きいのは勝手にアップデートしない点とサーバーが落ちたら自動再起動する点が大きいと思う。
次はその中でCentOSを使うメリットデメリットを
CentOSのメリット
  10万以上するRedHatLinuxのクローンOSが使える(将来役に立つかも?)
  ベースがエンタープライズのOSなので圧倒的な安定性
  サポートも長い
  高速なファイルシステム「XFS」が使える
CentOSのデメリット
  日本語の記事が大抵古い(使えるものもあるけど使えないものもある)
  Ubuntuで使えてCentOSで使えないものもある(Chromeリモートデスクトップとか)
  マウスによる複数選択ができない(GUIにもよるかもしれないけど)
実際に使ってみて運用して見てこんな感じです。ほぼ24時間可動させるようなMinecraftサーバーじゃなければ最初はUbuntuあたりから始めたほうがいいかもしれない、両方共サーバー版(サーバー用パッケージ)を入れるとCUIから始まりますが・・・
私は圧倒的な安定性とXFSとサーバーのお勉強のためにCentOSを選びました
次の項目から実際に運用するまでの記録を書いていきます

  • 移行する前の準備
今回のサーバーOS移行の目標は以下のとおりです
・元々可動していたMinecraftのサーバーはそのままでOSをWindowsからCentOSへ移行
・サーバーのパーツを色々と増設する(SSDを2つ追加)
Minecraftサーバーファイルの階層を変更
移行前のサーバーの状態と移行後のサーバーの状態は以下の通りです
移行前移行後
OS 1Windows10 Home 64BitWindows10 Home 64Bit
OS 2なしCentOS 64Bit
CPUCore i7-5820K(定格)Core i7-5820K(定格)
メモりF4-3200C16Q-16GRK(DDR4-2133動作)F4-3200C16Q-16GRK(DDR4-2133動作)
マザーボードGA-X99-Gaming 7 WIFI(rev. 1.0) BIOSver:F23cGA-X99-Gaming 7 WIFI(rev. 1.0) BIOSver:F23c
SSD 1Samsung 850 Pro 256GBSamsung 850 Pro 256GB
SSD 2なしSamsung 860 Pro 256GB
SSD 3なしIntel 800P 118GB
(冷却:SilverStone M.2 SSD Cooling Kit)
HDD 1WesternDigital Black 3TBWesternDigital Black 3TB
HDD 2HGST 500GBHGST 500GB
MinecraftサーバーThermos ver1614 Build58ALPHA(GTNewHorizons ver2.0.5.1)Thermos ver1614 Build58ALPHA(GTNewHorizons ver2.0.5.1)
プラグインVault
NewHorizonsServerCore
MCBans
PermissionEX
AutoSaveWorld
LunaChat
みんとちゃん
DynmapCBBbridge
Vault
NewHorizonsServerCore
MCBans
PermissionEX
AutoSaveWorld
LunaChat
みんとちゃん
DynmapCBBbridge
なのでそれに伴う準備を行います
1.CentOSインストーラを用意する(USBで準備しとくと早い)
2.Minecraftサーバーを止める(きちんとした方法で止めること)
3.Windowsで使っていたネットワークの設定をメモる(CentOSの場合、手動でネットワーク設定を行う必要があり自動でやってくれないのでメモりましょう。IPとかも変更する場合は必要ないですが変更したくない場合は必ずメモること)
3.各種プラグインのコンフィグファイル一式をメモ帳で開き文字コードUTF-8へ変更(あとで変更できますが一部文字列がバグった状態になるのでやっておきましょう)
4.Minecraftのサーバーファイル及び必要なファイルのバックアップを別の外付けドライブなどに取る(Dynmapはファイル数が多いのでマップデータはあとで描画できるため動かさなくていい気がする*1
5.最終確認をしてWindowsを完全シャットダウンする(Shift押しながらシャットダウンする)
次から本格的な移行記録

  • 移行作業記録
1.CentOSを入れる用のSSD(Samsung 860 Pro 256GB)を増設する
2.付け終わったらそれ以外のSSDとHDDが外れていることを確認してCentOSインストーラを接続しインストーラーを起動
3.CentOSSamsung 860 Pro 256GBに入れる、今回は最小構成でインストールをする(インストールする際のネットワークの設定に上でメモった設定を入れる)
4.インストールが終わると再起動してパスワードを打ち込んでCentOSCUI画面になる
5.今回はModサーバーでプラグインやらModやらファイルをごちゃごちゃ弄るのでGUIを入れる(今回は「sudo yum -y groupinstall "Server with GUI"」と打ち込んでServer with GUIをインストール)
6.インストールが終わったら、「sudo systemctl set-default graphical.target」と「systemctl get-default」と入力しgraphical.target に変更する
7.6が終わったら「reboot」で再起動
8.デスクトップ画面が表示され初期設定が始まるので行う
9.初期設定後ターミナルを開き「sudo yum update」でシステムのアップデートを行う
10.9が終わったら「reboot」で再起動
11.再起動後ターミナルで「java-version」と入力
12.11でOpenJDKなら誤動作を防ぐため消す(「sudo yum remove openjdk-8-jdk」と「sudo yum remove openjdk-8-jre」で消えるはず消したあとに一応「java-version」で確認しておく)
13.次にOracleからLinux 64bit版のJDKをダウンロードしてくる
14.ターミナルでダウンロードしたフォルダまで移動し「rpm -ivh <ダウンロードしたファイル名>.rpm」でOracle JDKをインストールする(一応「java-version」で確認しておく)
15.CentOSを一度シャットダウンしてIntel 800P 118GBと外していたHDDをつなげる(HDDだけ)
16.CentOSを立ち上げIntel 800P 118GBをXFS(サーバー本体の保存場所のためXFSで)、WesternDigital Black 3TBをEx4(XFSでも良いがメモリを食うのでEx4で(ホントはZFSが良かったがどうやっても入らなかった))、HGST 500GBをFat32でフルフォーマットをかける(XFSでフォーマットできない場合は一回Ex4でフォーマットを掛けてやればできる)
17.外付けHDDがNTFSなのでNTFSを読めるようにする(「sudo yum install ntfs-3g」でNTFS-3Gをインストール)
18.Intel 800P 118GBにMinecraftサーバー用のフォルダを作り外付けHDDからサーバーファイルをコピーする
19.SSDの容量的にDynmapとバックアップのデータは置けないのでサーバーのフォルダ内でターミナルを開きWesternDigital Black 3TBに実データを持つシンボリックリンクを作る(「ln -s <Dynmapのデータ置き場所> dynmap」と「ln -s <Backupのデータ置き場所> backup」)
20.19が終わったらサーバー起動用のシェルスクリプトを編集する(今回はModpackのサーバーファイルにあったものを編集して再起動時間を30秒後へ、Javaの起動オプションをWindowsと同じにした)
21.シェルスクリプトを実行させMinecraftサーバーを一度起動させる。問題がないかチェックを行う(シェルスクリプトファイルがある端末を開き「bash <シェルスクリプトファイル>.sh」で起動する。起動する際は毎回この作業を行う(めんどくさかったら自動化もできるらいし?))
22.サーバーの問題がなければ一度サーバーを閉じる
23.ファイアーウォールの「25565」番ポート(Minecraftのサーバー通信用)と「8123」番ポート(Dynmapの通信用)の通信を許可する(「sudo firewall-cmd --permanent --add-port=8123/tcp」と「sudo firewall-cmd --permanent --add-port=25565/tcp」を入力しSuccessと出たら「sudo firewall-cmd --reload」と入力、「sudo firewall-cmd --list-all」と入力し25565番と8123番ポートが開いてることを確認する)
24.fstabを編集しIntel 800P 118GBとWesternDigital Black 3TBを自動マウントできるように設定する(「sudo blkid /dev/sda」でディスクのUUID情報をとってきてそこから「sudo vi /etc/fstab」でfstabに書き込む)
25.SSHのデフォルトポートを変更しておく(「sudo vi /etc/ssh/sshd_config」でコンフィグを開き、ポートを好きな番号に変更しておく)
26.CentOS自体を再起動
27.問題なく自動マウントも成功したらサーバー起動で移行作業終了

  • デスクトップを「Mate」、入力を「Mozc」にしてみた
1.まずは「sudo yum install epel-release」でEPELのリポジトリを使えるようにする
2.次に「sudo yum groupinstall "X Window System"」ウィンドウ関連のシステムをインストール
3.次に本体であるMateデスクトップを「sudo yum groupinstall "MATE Desktop"」と入力し入れる

4.インストールが終わったら、「sudo systemctl set-default graphical.target」と入力し、デスクトップが起動するようにする(入力後「systemctl get-default」で「graphical.target」となっていたら成功)
5.「sudo vi ~/.bashrc」と入力し、以下を一番最後に挿入
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
export LANG=ja_JP.UTF-8
ibus-daemon -drx
6.Googleの日本語入力を使用するためiBus-Mozcを以下の順番でコマンドを実行し導入、導入の順番は守らないと動きません
・sudo yum install protobuf
・sudo yum install zinnia
・sudo yum install zinnia-tomoe-ja
・sudo yum install mozc
・sudo yum install ibus-mozc
6ex.これで全角半角がうまくいかない場合、コントロールセンターからキーボードを選択。レイアウトのタブから追加を選択し日本語の日本語(OADG 109A)に変更する
7.これで再起動を行い作業は完了です


*1:Minecraftのサーバーフォルダ)\dynmap\web\tilesの中にあるディメンションごとのフォルダ内にあるct、t、flatが描画データ