広告

bitFlyer ビットコインを始めるなら安心・安全な取引所で

カウンター

  • 51681総訪問者数:
  • 6今日の訪問者数:
  • 35昨日の訪問者数:
  • 41一日あたりの訪問者数:
  • 0現在オンライン中の人数:
  • 2014年9月21日カウント開始日:

Linuxでマイクラサーバ

某所でLinuxのネタが出てましたが、そういえばそういうコンテンツって無いですね。

某掲示板でマイクラのマルチサーバの構成が書かれていましたが、マイクラ用だとWindows Serverが圧倒的に多いですね。LinuxもDebianやUbuntuが多いのかな。

なので、試しに書き殴ってみたいと思います。なお、ほぼLinuxの始め方中心で、マイクラサーバの説明はほとんど書いてありません。ちなみに私のWindowsサーバの知識はだいぶ古いです。ですのでLinux推しな内容になってますが、LinuxがいいのかWindowsがいいのかについて言及してる記事では無いのでご了承を(ぶっちゃけ使いやすい方を使えばいいと思う)
あと、ITの専門家から見るとだいぶ端折った記事なので、その辺の突っ込みはご遠慮下さいm(__)m

そもそもOSって?

Linuxを語るには、まずここから入らないとと思います。そもそもOSを知らないと、Linuxって何がいいのか?Windowsのメリットは等の話ができません。

Operating Systemのことを略してOSといいます。OSというのはソフトウェアの一種で、OS以外のソフトウェアには「アプリケーション(アプリ)」がありますね。OSって用語はそのレベルの呼び名です。

LinuxやWindowsはOSです。これ以外にも世の中にはAndroid(Linux)や、iPhoneのiOSなどがありますね。

アプリに対してOSってどの部分?と言うと、実はあまり定義が定まってません。以下は、パソコンの内部構造をざっくり書いた図です。

os1

この図で言うところの「カーネル」や「コア」と呼ばれる部分が、「狭義のOS」だったと思います。
「広義のOS」としては「シェル」「デバイスドライバ」「サービス/デーモン」場合によっては「アプリ[*]」も含まれる場合があります。

[*]マイクロソフトが海外の訴訟の時にInternetExplorerもOSだとか言い始めたりするから、もはや何とも。

OSの定義は曖昧ですが、OSの目的は比較的はっきりしています。例えばWikipediaあたりから引用すると以下の三点ですね。

  • ハードウェアの抽象化
    昔のソフトウェアはハード依存でした。例えばソフトウェアを買うときにパッケージを見ると「このソフトウェアはシャープのxxシリーズと富士通のxxシリーズで動きます」って書いてあったものですが、この時代はOS自体、進化が進んで無くて、この「抽象化」が甘かった時代です。
    要するに、ソフトウェアがどのハードウェアでも動くようにする為に、OSがその仲介をしてくれてます。
  • リソース管理
    主にハードウェアのことを「資源(リソース)」って言います。例えば、CPUが一つでもソフトウェアは複数同時に動かせます。ソフトウェアをいっぱい動かして実装済みメモリ以上メモリを使ってもスワッピングという仕組みで、メモリをハードディスクに逃がして動作します。(重くなりますが)こういった、実情のリソース以上のことをやってのけているのもOSの偉いところです。
  • 利用率の向上
    ハードウェアをソフトウェア制御するのは非常に難しいです。よくコンピュータの中身は0と1で表現されていると言いますが、要するにモールス信号と同じなので、その0と1を解釈して動作します。例えばマウスでクリックという操作は、OSが定期的にマウスというハードウェアを監視していて、ボタンが押された信号をキャッチすると、それを必要としているソフトウェアに渡します。
    なので、利用者はその七面倒くさいハードの制御をしなくて済むので、「楽」なんです。この「楽」というのが非常に重要で、「楽」が進むことでコンピュータを効率よく使えるだけじゃなくて、例えばプログラムを組む人はよりプログラム開発効率が上がったりします。

つまり、WindowsやLinuxなどという選択肢があった場合は、こういう点がポイントになってきます。例えばスマホ用のOSはAndroidやiOSが多いですが、Windows Phoneが流行っていないのは単純にこういうところが劣ってるから何でしょうね(当然、単純なブームやシェアに影響する場合もあります)。
だいたいAndoroid系スマホがいいのか?iPhoneがいいのか?という話題になった場合は使いやすさ(利用率の向上が図られているか)、落ちないか(リソース管理の安定性)、様々な機械で動くか(ハードウェアの抽象化)など、特にITに詳しい人で無くてもOSの選定をしてたりします。
WindowsやLinuxも同様でして、WindowsはOSとしては世界のシェアが圧倒的にNo,1ですが、サーバOSでは圧倒的でもありません(とは言ってもたぶん1位かな?)

少し用語の説明

話を進める前に以下の図について少し補足をしておきます。

os1

  • ハードウェア
    機械全般です。パソコン本体、ディスプレイ、マウス、キーボード、タブレット、ヘッドホン、USB機器などなどのことの総称です。
  • ファームウェア
    「ファーム=工場」で組み込まれたソフトウェアという意味。物によっては「BIOS」とも呼ばれますが、ハードウェアに組み込まれたソフトウェアです。今回の話ではあまり関係ありませんので、細かい説明は略。
  • カーネル/コア
    基本的にはAPI(アプリケーションプログラミングインターフェース)の集合体で、ソフトウェアがカーネルに命令すると、その命令を元に処理してくれます。要するにソフトウェアがハードウェアに直接命令すると、そのソフトウェアはハードウェア依存になりますが、それをハードウェアの代わりに受け取って翻訳してくれる役目ですね。
  • デバイスドライバ
    ハードウェアへの命令はカーネルの役割ですが、新しいハードウェアができる毎にその命令は増えていきます。そのたびにカーネルをバージョンアップするのは面倒なので、それを担っているのがデバイスドライバです。Linuxではモジュールとも言われているかな。Windowsはハード毎に細かくデバイスドライバが準備されていますが、Linuxはカーネルにハードウェアを制御する機能がかなり組み込まれているので、このデバイスドライバの様な物は少ないです。
  • サービス/デーモン
    見えないところで勝手に動いてるソフトウェアですね。アプリの一種でもあります。別名、バックグラウンドプログラムとかサーバプログラムとか呼ばれています。いわゆるマイクラサーバのような「サーバ」はこの「サーバプログラム」のことを言います。そういうサーバプログラムを動かす専門のコンピュータのことも「サーバ」と言いますね。
  • シェル
    日本語で「貝殻」。手前で書いたとおり、カーネルにはAPIで命令しますが、このAPIもとても難しいです。基本的にはプログラマの領分です。なので、その難しいのを人に優しいわかりやすい物に変換して仲介してくれるソフトウェアのことを「シェル」と言います。人(ユーザ)との仲介(インターフェース)という目的から、UI(ユーザインターフェース)とも呼ばれてますね。
    文字ベースのUIのことをCUI(C=コマンドラインとか、キャラクター(文字)とか、コンソールとかの意味)。グラフィカルなものをGUIと言います。
  • アプリケーション
    今回の説明とあまり関係無いので省略。

Linuxとは?

そもそもLinuxって何?なんですが、元々はUNIXというOSの概念?のような物が存在しており、それの一種です。UNIXについて細かくここでは解説しませんが、元々UNIX(準拠のOSソフトウェア)がかなり高価なコンピュータ向けに売ってたのですが、アメリカのリーナスさんという人が比較的安いパソコン向けに作ったOSがLinuxです。リーナスさんが作ったUNIXだからLinuxです。

で、このリーナスさんが作っているLinuxはいわゆる狭義のOSあたりであるカーネル部分です。これだけあってもシェルとか無いので当然敷居が高いです。なので、敷居が高くないようにある程度ソフトウェアをパッケージとして集め使いやすくした物を「Linuxディストリビューション(ディストリビューション/ディストリ)」と言います。なので「Linuxを使いたい!」と思い立ったらやることは、まずはどのディストリビューションがいいかを探すところから始まります。

Linuxディストリビューション

os2
うちのサーバの画面(GUIは滅多に使わないので、ほとんどアイコンが無いです)

個人的にはCentOSというディストリビューションを使っていますが、だいたい以下の様なところが主流でしょうか?

  • RedHat系
    Linuxの中でもかなり歴史のあるディストリビューション。最近、ニュースとかで「企業でもLinuxが使われ始めてる」って記事を見かけますが、企業で使われてる(有料の)Linuxはほぼ「RedHat Enterprise Linux(RHEL)」だと思います。
    • Fedora Core
      RHELから有料部分を削り取った無料版。というより、RHELを出す前の開発版みたいな位置づけかな。サポート期間が短いので基本的にはお勧めしません。
    • CentOS
      RHELから有料部分を削り取った無料版。Fedoraとは違って、RHELを元に有志が作ってる感じ。
    • ScientificLinux
      CentOSとほぼ同じ。以前、CentOSの開発の主要メンバーが(親戚の結婚式とかで?)行方不明になって先行き不安になった時に有名になったディストリビューション。開発がアメリカやヨーロッパの研究機関なので、安心できるかもしれない?
  • Debian系
    こっちもRedHat系と双翼を成すほどの歴史のあるディストリビューション。ただ、こっち系は個人的に使ったことが無いので詳しくないです。
    • Ubuntu
      国内でシェアがかなり多いディストリビューション。特にデスクトップPCの代わりとして使われることが多い。
      WindowsXPのサポート終了間際に書店に「脱Windows」系の本が沢山販売されてたけど、中身はだいたいUbuntuでしたってくらいなもの。

個人的にCentOSを利用しているのは以下の理由から。

  • 仕事でRedHatを使ってるので慣れてる。
    ※Debian系はコマンドが違ったりするので覚えるのが面倒
  • サポートが長い(10年)
  • タダ

Linuxを使うメリット

たぶん、こんなところかな。

  • タダ←結構重要
  • 巷に情報が多い
  • サーバ用途としていろいろ便利

Windowsのシェアが高いのはどちらかというとデスクトップOSとして優れてるからで、その源泉はGUIにあるかなと思ってます。結果的に使い慣れている人が多い→サーバ用途としても使われがちになってる気もします。
上記でタダの部分で重要と書いていますが、Windowsのサーバライセンス費用は非常に高額です。マイクラサーバではあまり気にしていない人が多いと思いますが、ライセンス違反の可能性が高いです(必要なライセンスを買えば大丈夫ですが、非常に高額です)→参考/5同時接続ライセンス
Linuxがサーバ用途としていいなぁと思ってることは以下の通りです。

  • 仮想化機能が含まれてる。
    Linux KVMという物ですが、ウチのサーバの場合は、Linuxの中にさらにLinuxサーバが7台動いてて、それらがお互い別のサーバとして動いてます。例えば、「テストサーバ」として別のハードウェアを用意しなくても仮想サーバを一台建ててば済むってことですね。
    ちなみにWindows ServerにもHyper-Vという仮想化機能がありますし、他社製品であればVMWareなど有名な仮想化ソフトウェア製品も存在してます。
  • 余計な機能は削れる。
    例えば、サーバならGUIとかは無くてもいいです。あっても便利ですが、GUIはリソースを食う=電気代の無駄ですね。
  • リモート管理に優れている。
    LinuxはどちらかというとCUIが基本でGUIはおまけ、WindowsはGUIが基本でおまけでCUIの管理機能が付いてるって感じがします。リモート管理はGUIでもできますが、例えば出先でスマホから通信状況が悪い状態でリモート管理するとなると、なるべく通信量の少ないCUIが便利です。
  • コマンドが非常に便利
    ログのエラーをGUIで探す場合は、例えばメモ帳で開いて1つ1つ検索して見つけますが、Linuxの場合は以下のコマンド一発で出せます
    # grep -i error latest.log

Linuxを始めるには

OSを使うということは一般的なアプリケーションとは違い、「まず操作に慣れる」が必要で、このハードルが非常に高いです。なので、一朝一夕で覚えられるとは思わない方がいいでしょう。

  • ハードウェアを揃える
    勉強目的の場合で、比較的マシンパワーのあるWindowsPCを持っているなら、仮想化環境を作った方がいいです。
    WindowsのHyper-Vがある環境は非常に限られているので、サードパーティの物を使うのが一般的です。VMwareが有名ですかね。
  • ディストリビューションをダウンロードする
    CentOSならCentOSの公式サイトから落とせます。CentOS7系は(この文書を書いてる時点では)まだ新しくて情報が少ないので初心者にはお勧めできません。CentOS6系の最新版をダウンロードします。
    基本的にはDVDイメージ(ISO形式)でダウンロードします。それをDVDに焼いてDVDブートすればインストーラが動きます。VMWareならISO形式のままブートできたはず。
  • インストールについては画像付きで解説しているサイトも多いです。「CentOS6 インストール」などのキーワードで沢山情報が出てきます。また、操作もウィザード形式で選ぶだけなので、結構簡単です。

インストールした後から、マイクラを動かすまでが結構大変です。JAVAの実行環境を作らないといけないし、そもそもファイルをどこに置いたらいいかとか、どうやってサーバにファイルを置いたらいいのか[*]とかわからないことだらけになるはずです。

[*]例えばCentOSの場合、リモート接続&アップロードは、初期状態で暗号化されており、且つポートフィルタでガチガチに遮断されてます。なので、暗号化に対応したソフトが必要だし(慣れればそんなに難しい物でも無いんですが)、マイクラサーバを立ち上げてもポートフィルタの解放をするのに設定ファイルの修正が必要で探すのが大変だし、その設定ファイルを修正するテキストエディタが「メモ帳」と全然操作が違うしで、非常に大変です。
「OSが違う」というのは、要するにこういう「慣れ」の知識が一切無いので、慣れるまでが大変です。

まぁ、その辺が一番「ハードルが高い」ところなので、しっかり勉強してがんばって下さいとしか言いようは無いですけどね。。。

コメントを残す

これらのHTMLタグが利用可能です

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

  

  

  

Time limit is exhausted. Please reload CAPTCHA.