
Linuxサーバーのススメ
久々に、Linuxネタを書いてみたいと思います。
なんだかんだ言いながら、私はこの15年間、毎日のようにLinuxに触れ、Linuxで構築したサーバーをベースにいろんなことをしてきました。
何ができるのか書いてみたいと思います。
そもそもLinux(リナックス)とは
ヘッドライン
Linuxとよく言いますが、Linuxとは、サーバーの名称ではございません。
いわゆる【Linuxカーネル】といわれるものです。
Linux自身はOS?
Linux=OSという認識の方も多いと思います。厳密に言えば間違っていないませんが、皆さんが思うOSという意味合いとはほんの少し違うかもしれません。
OSの代表格といえばWindowsでしょうか。
WindowsはMicrosoft社が製作したOSの総称です。
そのWindowsには、Windows8や、Windows7、XP、2000など、バージョンがあります。しかしすべてがWindowsといわれるものという認識だと思います。
これらはWindowsカーネルといわれる基幹システムをベースに作らら他OSです。
実際のその中身は、もちろん全バージョンからの機能の引継ぎなどはもちろんありますが、内情としては全く違うものになっています。
また、Windowsは、Microsoft社のみが制作しているOSです。
方やLinuxはどうでしょうか。
カーネルといわれる基幹的な部分の名称であり、皆さまが使うOSという部分ではありません。
皆様が利用するLinuxOSは、ディストリビューションというものになり分かれます。
私が好んで利用するディストリビューションはCentOSです。
そのほかには、FedoraCoreや、ubunto、BineLinuxなどがあります。
エンタープライズ系でRedHatEnterpriseLinuxというディストリビューションもあります。
これらは全てLinuxといわれるOSで、制作会社が違っていたり、サポートが有償ながらついていたり、実験的なディストリの場合、メジャーアップグレードが半年~1年のスパンだったり、サポートが半年しかなかったりと、用途によって様々です。
Windowsは1社で作っているOSなので、基本的に最新版はその時点では1つですが、Linuxの場合、複数社がリリースするのでその時点での最新版は開発されたディストリの分だけ存在することになります。カーネルは共通ですが、その上に乗っけるデザインや機能などは各社ばらばらです。
カーネルが共通なので、様々な基幹的な部分が同じような作りになりますが、そのうえで動くインタフェースが独自性を持てます。
ここ最近でいえばAndroidがそうでしょうか。Androidという共通のベース部分を使って各社そのうえで動かすインタフェースを作ります。
ベースが同じなのでアプリなどはどのスマホでも動くという状況が創り上げられました。
その影響で、OSという単位でみると、開発が1社のみのiPhoneと、オープンソースとして公開しどのメーカも容易に参入できたAndroid2つのスマホのシェアは比べるまでもありません。iPhoneのシェアが仮に4割だとしたら残りの6割のほとんどがAndroidということになります。(ちなみにAndroidはLinuxカーネルです。なので、Linuxの一つと言えます。)
オープンソース(無償で利用できる)だからこそ、そのLinuxカーネルをベースにOSを構築するメーカや企業が多いのです。
例えばMacのOS XといわれるものはBSD UNIXといわれるカーネルをベースに作られています。Linuxの親戚のような存在と言えばいいでしょうか。
MacユーザがLinuxと親和性が高いといわれるのはこれが所以です。
Linuxとは~まとめ~
厳密にはOSというよりカーネル部分の総称。
利用することができるレベルをOSというのであれば、Linuxの場合はディストリビューションがOSといわれるものになる。
Linuxは、そのディストリビューションがたくさんあり、用途や使用によってディストリを選ぶことができる。
Linuxが感染するウィルスは少ない!(androidの登場により、その前より圧倒的に増えたがwindowsほどではない)
Linuxでできることって?
結論でいうと、Windowsでできること、MacでできることはおそらくLinuxでもできます。
ソフト(有償・無償)を入れればできるはずです。
もちろん、まったく同じソフトを使おうと思っても、Linux用のソフトが開発されていないと使えませんが、ワープロや表計算であれば、WordやExcelと互換性があるといわれているソフトがあったり、メールソフトであればThunderBirdは、Linux用のソフトも開発されています。
FireFoxはもちろんLinux用のFireFoxも存在していますので、ネットを見てメールの送受信程度ならわざわざ高額のWindowsを買わなくてもできるということになります。
AndroidといわれるOSは、そのような一般人が使用するに特化したクライアント用OSとして開発されたOSと言えます。
まずそれを頭に入れたうえで、LinuxがLinuxである所以はサーバーとしての機能が充実していることです。
以下に、Linuxをサーバーとしてよく使われるサービスを書いてみました。
ホームページ(WEB)サーバー
元々、ホスティングサービスを展開してきた私にとって最も用途として大きいのはWEBサーバーではないかと思います。
ホームページをインターネット上で公開しようとしたら、24時間、365日常時稼働する機器を準備しなければいけません。
これがサーバーといわれるものです。サーバー(Server)は、サービス提供者という意味ですが、WEBサーバーはホームページを公開するためのサービスを常時提供してくれる人(機器)を指すというわけです。
これは、レストランなどでサービスを受けたり、ビールを入れてくれるビールサーバーなどと意味合いは同じです。
提供される役務(サービス)が、WEBを公開するための場所であるということが違うだけのことです。
Linuxで構築したWEBサーバーは安定度に定評があり、不安定なOSよりも常時接続環境を作りやすいというメリットがあります。
また、Linuxは基本的にオープンソース(無償公開)であり、その中のソフトもオープンソースのものが多く、ローコストに構築できるため世界的に広がったと考えられます。
WEBサーバーとして広く使われているのはApacheといわれるソフト
現在のWEBサーバーの主流はおそらくApacheでしょう。
ネーミングの起源は”パッチだらけ”(これからも修正がたくさん出るだろう)であろうということから、A Patchから、インディアンのアパッチの雄たけびを持ち込みApacheとネーミングされたといわれています。名前の語源というのはしょせんそんなところなのでしょうね。
※Apacheと、IIS(Microsoft)のシェアが逆転したという文献があるが、アクティブサイト(有効なサイト)だけで見た場合今でもApacheのシェアが高いと私は考えています。
そのApacheは、95年ころに開発され20年を迎えています。今ではWEBサーバーならまずApache、その後アクセスや負荷、導入したプログラムによってnginxの導入を検討するという運びが多いと思われます。
Apacheのシェアは、先述のnginxやIISに奪われつつあると言われていますが、モジュールの多さやほとんどの文献資料がApacheをベースに記録されていることを考えると、多少のシェア減少ではびくともしないでしょう。
話は戻しますが、このApacheといわれるWEBサーバーを稼働状態にすること、常時接続環境が整えば、WEBの公開が可能となります。
PHPやPerlが容易に使える
WEBサーバーは、もちろんLinux以外のOSでも稼働させることは可能です。
Windows(Windowsサーバー以外でも)でも、Macでも稼働は可能です。
HTMLを公開するだけなら、ダウンしないのであればOSはなんでもいいわけですが、ここに問い合わせフォームやブログのようなプログラムを導入しようと思った時、その手間や管理はLinuxが圧倒的に楽であろうと思います。
もちろんWindowsで稼働するPHPやPerlというものはありますが、どうしても開発はLinux中心であることと、ファイルパスの考え方がLinuxと大きく違うため、よく目に留まる問題点として、Linux版なら動くものがWIndows版になると動かないという問題です。
そういったことを考えてもプログラムが入り込んでくるようなWEBサイトなら、やはりLinuxのサーバーの方がトラぶった際の文献もありやりやすいのではないかと考えます。
現在のWEBサーバーのほとんどがLinux
先述のWindows標準WEBサーバーのIISがシェアを伸ばし逆転したという話がありますが、これは展開されているWEBサーバーの総数です。
実際にアクティブなサイト、要は、【みる価値があるであろう】サイトと、自動生成などの【意味があまりない】サイトを切り分けた場合、IISのアクティブサイトはまだまだ小さく、Apacheに遠く及ばないどころかnginxに抜かれているという情報もあります。
要は、WindowsをWEBサーバーとしたサーバーより、LinuxをサーバーとしたWEBサーバーの方がおそらく多いということが読み取れます。(もちろん確実な統計データではないので確実とは言えませんが大多数はそうであろうという予測です)
それだけトラブル事案に関する文献もLinux用のWEBサーバーに関する文献なら多く見つけることができるので、トラブル発生時に対応がしやすいこと、またトラブルを未然に防ぐ施策も打ちやすいと思います。
初心者に優しそうだから。。。と、Windowsサーバーを選ぶのは間違いです。
クライアント(ふつうの使う)用途のWindowsの知識がサーバー用途のWindowsに生かせるのか?答えはNoです。使うソフトもやることもまったく違いますから。
結局最初から覚えていくのなら、文献が多いほうがやりやすいに決まっていますよね。
初心者だからこそ、シェアの多いLinuxとApacheを使うべきです。
WEBサーバーを利用したファイルサーバー
ほかのOSで可能かどうかは知らないのですが、Linux+ApacheであればWebdavという機能が使えるのは間違いありません(設定やいくつかのソフトなどは導入が必要ですが)。
webdavを簡単に言えば、ドロップボックスの用なネットワークストレージ(インターネット上にあるハードディスク)です。
インターネットにさえつながれば保存しておいたファイルをどこからでも見ることができますし、その場でアップロードも可能です。
企業であれば書類の共有などが容易にできます。
DBサーバー(MySQL・PostgreSQL・etc…)
Windowsには、DBのソフトとして、Accessといわれるソフトがあります。
Accessは、DBサーバーというより、DBソフトのようなものを開発できるソフトであり、SQLが使えるというメリット以外あまりいいソフトではありません。
素人向けDBソフトという要素が強いです。
そこで、Microsoftは、MSSQLServerという本格的なDBサーバーを準備しています(有償)。
LinuxにもDBサーバーはいくつかあり、代表的なものでいえばMySQL・PostgreSQLです。Oracleというのもあります。
MySQL・PostgreSQLは現在のところ無償で利用できるという最大のメリットがあり、また、WordPressやムーバブルタイプといった世界的に有名なCMSのベースになるDBであったりします。
数万件を超えるデータを管理したい場合、Windowsユーザは、accessか、SQLサーバー入れるか。。。と悩みます。
どちらも有償ですし。。。accessは、ユーザインタフェースを作る機能を持っているので利用しやすいので最初の段階ではAccessで作り、データ量が多くなったり複雑になった場合に、インタフェースをAccess、DB部分をSQLサーバーに持たせるという作りにすることも多いようです。
これをLinuxであれば、DB部分はMySQLになります。インタフェース部分はPHPとWEBで作りWEBインタフェースになります。
そして、WEBをベースに作るのでインターネット上に公開が可能になり、クラウド化されていくわけです。
Accessのソフトベースの物をクラウド化するにはなかなかいろいろな壁をクリアしないといけませんね。
また、私が良く提案することの一つとしてはインタフェースはAccessのままで、DBをLinuxベースのMySQLにすることを奨めます。
これだけでコストが数十万も数百万もカットできる可能性を秘めるからです。
メールサーバー
メールというのは、送受信の際にメールサーバーを介して自分のメールアドレスに到着したり相手のメールアドレスに対して送ることができます。
いわゆる郵便局のような役割です。
郵便受け以降は自分のクライアントマシンが受け取ったり発送依頼をかけたりします。
そのサーバー=受け皿は、24h・365days稼働していなければいけないのはWEBサーバーと同じです。
また、安定度に関して言えば、WEBサーバーは仮にダウンしても見れなくなるだけのことですが、メールは相手がこちらに送ったものも届かないし、こちらが送りたくても送れなくなります。
現在の連絡手段の中でもかなり上位に位置するメールは、安定度が命です。
Linuxにはメールサーバーソフトが複数存在しており、その用途や信頼性によっていくつかのソフトから選択できます。
ファイルサーバー
webdavで簡単に説明しましたが、自前でドロップボックスのようなものを構築することが可能です。
社内の共有ファイルサーバーや、友人とファイルの共有、家族の写真を共有したりバックアップにしたりと用途は多数です。
Windowsネットワークに入り込めるファイルサーバー(Samba)
たとえサーバーがLinuxであろうがなんであろうが、クライアント(一般的に使われるパソコン)は、圧倒的にWindowsが多いのは事実です。
LinuxとLinuxで連携をとれても、ほとんどの人はありがたみがありません。
sambaといわれるファイルサーバーは、WindowsユーザがLinuxファイルサーバーに乗り入れができる。逆ですね。LinuxのファイルサーバーがWindowsネットワークに入るこむことができます。
これにより、利用者はLinuxということを意識しなくても容易にLinuxで構築されたファイルサーバーをさも外付けHDDのごとく利用できます。
私は以前、友人とファイルの共有をすべく余ったマシンと余ったHDDをいくつもRAIDで縦積みし、500GBほどのHDDが上限の時代に3TBほどの共有サーバーを構築し、データを共有してきました。
友人が言うには、こんな便利な機能はない。
頼んだデータがUPされ、こちらでダウンロードがインターネットを通じてできる。
便利すぎて驚きだと言っていました。
企業でも利用価値は高く、共有ファイルサーバーを設置する企業は増えました。
ただ、そのOSが、windowsサーバーでそのwindowsサーバーの用途は強要ファイルサーバーとしての機能のみというのが圧倒的に多く、もしそれをLinuxで、samba構築であればそれだけで30~50万のコストカットが実現できそうですし、コストカットではなく、ディスク容量に転換すればもう10TBほど増設できる計算になっていきます。
FTPを使ったファイルサーバー
sambaやwebdavで共用サーバーを作ることができることはわかったと思いますが、もっと簡単にファイル共有をできるのがFTPです。
FTPとはFileTransferProtocolの略で、ファイル転送用の言語という意味合いでしょうか。
ファイル転送用の言語があるわけですから、それを利用してファイルの共有をかけるのが最も早いです。
WEB制作などで外注をかけた場合や、大きなデータの送受信などの際、FTPを利用するのが最も効率的です。
FTPのクライアントソフトはwindowsに優秀なソフトがたくさんありますから、FTPサーバーとwindowsの親和性は非常に高いと言えます。
WEBサイトのデータのUPの際にはほとんどの場合FTPが使われます。
NFSファイルサーバー
NFSは、NetworkFileSystemの略だったと思いますが、上記までに説明したファイルサーバーのもっと簡易的に、そしてシステム的に溶け込みやすいシステムです。
Linux内でよく使われるのですが、サーバーの設定関係はハードウェア実装のHDDだが、WEBサイトのデータなど後付のファイルはNFSでマウントしてあり、外部のサーバーのHDDという利用方法です。
これは何があるのかというと、WEBサーバーが何らかのハードウェアトラブルでダウンしてしまった場合、WEBサイトのデータの抜き出しが困難になる可能性があります。
そういったことを外部のHDDに保存してあるので、別のWEBサーバーにマウントしなおすだけでWEBサイトが復活するという仕組みです。
また、データ管理の統合が容易になること、ストレージ用の大容量ファイルサーバーと、WEBサーバーなどの駆動サーバーを分けることで、サーバーラック内の稼働率を上げることができるのです。(サーバーラックとは、サーバーを設置するための箱です。会社で提供される着替え用私物ロッカー横2つ分ほどの大きさ、高さのもので、データセンターなどのラックを買い入れると場所代で10~20万程度になる。
そのラックにどれだけの量(容量・コンテンツ量)が収容できるかによって、1つ1つにかかる負担(コスト)が上下するわけなので、効率よくたくさん収容することが重要になってくる。
FX自動運転(MT4)用のサーバー
最近、サーバー運用など行ったことがないいわゆる素人の方がクラウドサーバーやVPSサーバーといわれるものを利用されるケースが増えているのがこれだ。
FXの自動売買システムがWEBサーバーのアプリとして提供されており、それを常時稼働させるために利用するようだ。
こちらはwindowsでのシェアが広がっているようだが、中にはLinuxサーバーで稼働させている方もいるようだ。
サーバー以外のLinux
サーバー以外のLinuxの使い方としてはデスクトップマシンのOSとしての利用以外でも存在しないことはない、たとえばある一定の時間になったら定期的に処理を行ってその結果をメールで通知するシステムであるとか、自動的にデータをとりためてくるシステムなどだろうか。
そういった機能を持ったLinuxマシンもサーバーと言えなくもない。
要はWindowsだけがOSではなく、Linuxは、サーバー用途以外でも使えるのだ。
Linux=サーバー用OSという考えは取り払って考えたほうがいいだろう。
クライアント用OSとしてのLinux
大手メーカなどもまれに、Windows以外のクライアントパソコンを販売する事がある。
一つはMac、もう一つはAndroidだが、それ以外でもクライアント用のLinuxディストリビューションが導入されているクライアントをたまに見かける。
地方自治体のパソコンをLinuxにしたというニュースもたまに流れる。
用途が限定的であれば可能だ。
例えばワープロと表計算程度であるとか、アプリはWEBアプリなので、ブラウザがあればほかはいらないなどの場合に、わざわざお金を払ってOSを導入してもそれだけの機能を使わないということになるので無償のOSを利用することがあるようだ。
また、FedoraCoreなどのクライアント向けOSなどはビジュアルにこだわっており、3Dビジュアルのデスクトップの提供などで、Windowsより優れたビジュアルが提供されたりすることもある。
WordExcelにこだわる必要がない、また、Windowsのソフトで利用しなければいけないものがないのであればLinuxをOSとして普段使いで使えるだけの機能は実装している。
OSに費用をかけない分、ハイスペックなマシンにする方がよほどいい時もある。