MinecraftのサーバーをWindowsからCentOSに変更したお話(2019/03/22更新:「Mate Desktop」と「Mozc」を追加しました)
9/20のサーバーアップデート「Code:Orion」のときにMinecraftのサーバーをWindowsからCentOSに変更しました、その時の記録を残しておきます参考になれば
2019/03/22:デスクトップを「Mate」に変更したお話とMozcを入れた時の話を追加
・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を選びました
次の項目から実際に運用するまでの記録を書いていきます
・元々可動していたMinecraftのサーバーはそのままでOSをWindowsからCentOSへ移行
・サーバーのパーツを色々と増設する(SSDを2つ追加)
・Minecraftサーバーファイルの階層を変更
移行前のサーバーの状態と移行後のサーバーの状態は以下の通りです
なのでそれに伴う準備を行います
1.CentOSのインストーラを用意する(USBで準備しとくと早い)
2.Minecraftサーバーを止める(きちんとした方法で止めること)
3.Windowsで使っていたネットワークの設定をメモる(CentOSの場合、手動でネットワーク設定を行う必要があり自動でやってくれないのでメモりましょう。IPとかも変更する場合は必要ないですが変更したくない場合は必ずメモること)
3.各種プラグインのコンフィグファイル一式をメモ帳で開き文字コードをUTF-8へ変更(あとで変更できますが一部文字列がバグった状態になるのでやっておきましょう)
4.Minecraftのサーバーファイル及び必要なファイルのバックアップを別の外付けドライブなどに取る(Dynmapはファイル数が多いのでマップデータはあとで描画できるため動かさなくていい気がする*1
5.最終確認をしてWindowsを完全シャットダウンする(Shift押しながらシャットダウンする)
次から本格的な移行記録
2.付け終わったらそれ以外のSSDとHDDが外れていることを確認してCentOSのインストーラを接続しインストーラーを起動
3.CentOSをSamsung 860 Pro 256GBに入れる、今回は最小構成でインストールをする(インストールする際のネットワークの設定に上でメモった設定を入れる)
4.インストールが終わると再起動してパスワードを打ち込んでCentOSのCUI画面になる
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.問題なく自動マウントも成功したらサーバー起動で移行作業終了
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」と入力し、以下を一番最後に挿入
7.これで再起動を行い作業は完了です
2019/03/22:デスクトップを「Mate」に変更したお話とMozcを入れた時の話を追加
- 変えるメリット
・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を選びました
次の項目から実際に運用するまでの記録を書いていきます
- 移行する前の準備
・元々可動していたMinecraftのサーバーはそのままでOSをWindowsからCentOSへ移行
・サーバーのパーツを色々と増設する(SSDを2つ追加)
・Minecraftサーバーファイルの階層を変更
移行前のサーバーの状態と移行後のサーバーの状態は以下の通りです
移行前 | 移行後 | |
OS 1 | Windows10 Home 64Bit | Windows10 Home 64Bit |
OS 2 | なし | CentOS 64Bit |
CPU | Core i7-5820K(定格) | Core i7-5820K(定格) |
メモり | F4-3200C16Q-16GRK(DDR4-2133動作) | F4-3200C16Q-16GRK(DDR4-2133動作) |
マザーボード | GA-X99-Gaming 7 WIFI(rev. 1.0) BIOSver:F23c | GA-X99-Gaming 7 WIFI(rev. 1.0) BIOSver:F23c |
SSD 1 | Samsung 850 Pro 256GB | Samsung 850 Pro 256GB |
SSD 2 | なし | Samsung 860 Pro 256GB |
SSD 3 | なし | Intel 800P 118GB (冷却:SilverStone M.2 SSD Cooling Kit) |
HDD 1 | WesternDigital Black 3TB | WesternDigital Black 3TB |
HDD 2 | HGST 500GB | HGST 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押しながらシャットダウンする)
次から本格的な移行記録
- 移行作業記録
2.付け終わったらそれ以外のSSDとHDDが外れていることを確認してCentOSのインストーラを接続しインストーラーを起動
3.CentOSをSamsung 860 Pro 256GBに入れる、今回は最小構成でインストールをする(インストールする際のネットワークの設定に上でメモった設定を入れる)
4.インストールが終わると再起動してパスワードを打ち込んでCentOSのCUI画面になる
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」にしてみた
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」と入力し、以下を一番最後に挿入
6.Googleの日本語入力を使用するためiBus-Mozcを以下の順番でコマンドを実行し導入、導入の順番は守らないと動きませんexport GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibus
export LANG=ja_JP.UTF-8
ibus-daemon -drx
・sudo yum install protobuf6ex.これで全角半角がうまくいかない場合、コントロールセンターからキーボードを選択。レイアウトのタブから追加を選択し日本語の日本語(OADG 109A)に変更する
・sudo yum install zinnia
・sudo yum install zinnia-tomoe-ja
・sudo yum install mozc
・sudo yum install ibus-mozc
7.これで再起動を行い作業は完了です