とりあえずこれだけ覚えればすらすらと…解説が理解できますw
これからLinux(リヌックス)を始める人に、ぜひ理解しておいて欲しい単語を紹介します。このページでは基礎に絞って、ソフト特有の専門用語は後に回します。
いきなり慣れない単語ばかりで、覚えるのが大変かもしれませんが、初めは大まかに理解しておいてください。
Linuxとは
まずは大前提である「Linux(リヌックス)」についてです。LinuxとはUNIXの互換OSです。OSといえばWindowsOSやMacOSが広く知られていますが、Linuxもその一派ということです。
Linux最大の特徴は無償(GPLライセンス)という点です。そのため自宅サーバや、VPSなど安価にサーバ環境を構築するのによく利用されます。
リナックスか、リヌックスか、はたまたリヌークスか、という議論は「リヌックス」に軍配が上がったようです。
(ただLinux産みの親であるリーナス・トーバルズはそれぞれの言語に合わせて自由に読んでくれて構わないと発言しています。)
Linuxディストリビューション
Linuxをただインストールしただけでは、動作に必要な基本ソフトだけしかインストールされません。
この基本ソフトだけのLinuxをVanilla カーネル(バニラ カーネル)と呼びます。アメリカではアイスクリームのデフォルトがバニラであることから名付けられたそうです。
当然のことながら、この状態は不具合が少なく動作も軽快です。
しかしこのバニラカーネルにはデメリットもあります。
それは慣れないうちは、どのソフトが必要なのか、判断するのが難しい点です。また特定の用途で必ず必要になるソフトを、毎回1つづつインストールするのは面倒です。
そのため有志が「ディストリビューション」というパッケージを配布しています。サーバ用はもちろん、デスクトップ専門、セキュリティ専門、研究専門と、それぞれの分野に特化したパッケージが用意されています。
今回は有名な、いくつかの「ディストリビューション」を紹介します。
ディストリビューションの違いによって操作方法やファイル構造が違うため「自分が使うディストリビューション以外にも、このような名前のものがあるのか」といった程度に理解しておいてください。
Red Hat系
RHEL(アール・エイチ・イー・エル または レル)
「Red Hat Enterprise Linux(RHEL)」通称「Red Hat(レッドハット)系」と呼ばれる、商用サーバの中で1番人気のディストリビューションです。有償ながら実績・安定性ともに高い評価を得ています。
CentOS(セントオーエス)
今回の解説にも利用するCentOS。
無料のサーバ用ディストリビューションとして人気があります。前出のRHELのうち、有償のものを削除して再構築したもので、高い信頼性が特徴です。日本ではサーバ用途で1番人気のあるディストリビューションです。
RHELの互換OSのため、特別に明記されていなければ、RHEL5に導入できるソフトは、CentOS5にもインストールすることができます。RHEL6であればCentOS6となります。ソフトのダウンロード時に注意してください。
CentOS公式Webサイト(英語)
Pocketstudio.jp CentOSのQ&Aを日本語に翻訳してくれています。成り立ちなど、詳しく知りたい方はどうぞ。
Scientific Linux(サイエンティフィック・リヌックス)
Scientific Linuxは研究用途に人気のあるOSです。サーバ用としても利用可能で、CentOSよりも更新が早く、最新技術を試したい人に向いています。
Fedora(フェドラ)
Red Hat系のデスクトップ用で有名なのがFedoraです。日本では古くからファンの多いOSです。しかし癖が多く、最近は後述のUbuntuに水をあけられている感があります。
Debian系
Debian(デビアン)
Debianは有志によるボランティアで運営されているディストリビューションです。その歴史は長く、分派も多いのが特徴です。海外で人気が高く、新規のインストール数はRed Hat系を超えると言われています。しかし日本では認知度が低く2012年現在、サーバ用途のシェアは2%とあまり振るいません。
Ubuntu(ウブントゥ)
Debian系のなかでも近年人気なのが、扱いやすさに特化したUbuntuです。高速軽量なウェブサーバとして台頭してきたLighttpdやNginxといった新しい技術との互換性を積極的取り、相性がよいのが特徴です。
サーバとは直接関係ありませんが、デスクトップ用も人気があり、無料で扱いやすいということもあり、WindowsやMacの代わりにインストールする人が増えています。またGoogleOSのベースとして採用され注目度が増しています。
Ubuntu公式Webサイト(英語)
Ubuntu Japanese Team公式Webサイト
Linux Mint(リナックス・ミント)
Ubuntuから派生したLinux Mintは、海外で人気が高く、新しくインストールされるLinuxディストリビューションのなかで1番人気のようです。Ubuntuの扱いやすさと、先進技術の取り込み、独自のデスクトップ環境やソフトが融合された新進気鋭のディストリビューションです。
LAMP環境の構築のためにLAMP serverというパッケージが用意されています。インストールに必要なのは1行のコマンドだけ、という扱いやすさも徹底しています。
Linux Mint公式Webサイト(英語)
Linux Mint Japan公式Webサイト
32bit OSと64bit OSの違い
Windowsでは32bitと64bitでソフトの互換性がないため、どちらを選ぶかは大問題です。
しかしLinuxの場合は、32bit、64bitともに古くから存在するため、ほとんどのソフトが2つのバージョンで提供されています。またWindowsにある2GBの壁やメモリ4GB制限もありません。
どちらを選んでも目立ったデメリットはないので、CPUが対応している場合は64bitを利用しておきましょう。
違いがあるとすれば、デフォルトのLAMP環境で、64bitは使用メモリが1.6倍ほど多いので、メモリが512MBなど極端に少ない場合は32bitのほうが有利です。(不要なデーモンを削除すれば、64bitもかなり減らすことができます。)
しかしサーバ用途で、メモリを十分に積めるなら64bitのほうがアドバンテージが高く、メモリの割当が増えるごとに差が広がっていきます。
一般的にLinuxでは、32bit OSのことを「i386」、64bit OSのことを「x86_64」と表記します。よく出てくる表記なので覚えておいてください。
LAMP環境
「LAMP(ランプ)環境」とは、Linuxの「L」。Webサーバを構築するApacheの「A」。データベースを構築するMySQLの「M」。Webでよく利用されるPHP、Perl、Pythonの「P」と、それぞれのソフトの頭文字を取ったものです。
Linuxでサーバ環境を整える際には、これらのソフトが必要になることが多いので、各ディストリビューションからLAMP環境を簡単に構築できる仕組みが提供されています。
当サイトの解説もLAMP環境を整えることを目標に解説を進めていきます。
パッケージ管理システム
Linuxでは必要なソフトを選択してインストールするのが一般的です。しかしソフトはネット上に分散して置かれ、バージョンによって整合性が異なり、インストール時にオプションを指定したりと、運用には多くの専門知識が必要になります。
そうした煩雑なインストール作業を一手に担ってくれるのが「パッケージ管理システム」です。WindowsやMacでいう、「インストーラー、アンインストーラー」のような役割を果たします。
今回はCentOSで利用できる代表的なパッケージ管理システムを紹介します。
ソフトの依存関係について
Linuxでソフトのインストールをする際に気をつけなければいけないのが、「依存関係(dependencies)」です。依存関係とはあるソフトの動作に、別のソフトの機能が必要な関係をいいます。
そのようなソフトは単独で動作しないため、「依存関係にあるソフト」も同時にインストールする必要があります。
特定のWebサイトの閲覧には、ブラウザとプラグインが必要。という関係と同じです。
rpm
旧称「Red Hat Package Maneger」。名前からわかるようにRed Hat系のディストリビューションで採用されたシステムです。rpmパッケージで提供されたソフトを、簡単な「rpmコマンド」でインストールすることができます。
他にも、アップデート、パッチの適用、wgetコマンドを利用すれば、ネット上のrpmファイルをダウンロードしてインストールすることもできます。
yum (Yellowdog Updater Modified)
「yum」はrpmを支援するツールで、ヤムと読みます。(ユムと読む人もいます)
rpmとの違いはソフトの不整合を自動で解決する仕組みを持ち、依存関係を正してくれる点です。rpmは整合性のチェックのみですが、yumは必要なソフトを自動でダウンロード、インストールしてくれます。
さらにyumはプラグインを追加することで、パッケージ管理機能を拡張することもできます。
yumでインストール可能なものはyumで、それ以外はrpm、それでもインストール出来ないものをwgetで直接サイトからダウンロード、インストールするという方法が一般的です。
今回は解説しませんが、Ubuntuでは「apt-get」というコマンドを利用します。
リポジトリ
それぞれのパッケージファイルを保持しているディレクトリやサイトのこと。通常リポジトリというと外部サーバに保存されたパッケージ群を指しますが、自社サーバ内やDVDなどのメディアをリポジトリとして利用することもできます。
外部リポジトリ
リポジトリにはディストリビューションによって公式にサポートされた「公式リポジトリ」と、非公式の「外部リポジトリ」があります。
通常は公式のリポジトリを利用しますが、最新のバージョンや、特殊な用途のソフトを導入するには「外部リポジトリ」が必要になります。
そのための外部リポジトリが有志により管理されています。その中でも有名なのが
「EPELリポジトリ」
「IUSリポジトリ」
「REMIリポジトリ」
「DAGリポジトリ」などです。
これらを追加することでyumコマンドでインストールできるソフトを拡張できます。そのため別名、「拡張パッケージ」とも呼ばれています。
外部リポジトリの追加は、良いことばかりかというと、そうでもありません。公式のものは厳格に依存関係のチェックや、脆弱性への対応を行っています。
しかし、外部のものはyumを利用して依存関係のチェックをしても、不具合の出るものがあります。また脆弱性が見つかった場合の対応も、公式に比べ遅れることがあります。
その他Linux用語
クライアントとサーバ
普通クライアントというと取引先を想像しますが、サーバ管理においては、クライアントは「サービスを受ける側」を指します。対してサーバは「サービスを提供する側」を指します。
「自分のパソコン」と「VPSなどで提供されたサーバ」の関係なら、「自分のパソコン」がクライアント、「VPSなどで提供されたサーバ」がサーバです。
「VPSなどで提供されたサーバ」と「サービスを利用する外部サーバ」の関係なら、「VPSなどで提供されたサーバ」がクライアントで、「サービスを利用する外部サーバ」がサーバになります。
このように相対的な関係になっているので、解説を読む時は注意してください。
ローカルとリモート
こちらも相対的な関係を示し、ローカルとはサーバやPCなどの「内部」を指し、リモートは「外部」を指します。
サーバにとって「ローカル環境」とは、「サーバ内部」を指します。反対にクライアント(自分のパソコン)側から見れば「サーバ内部」は「リモート環境」となります。
外部(遠隔地)の環境をコントロールすることを、リモートコントロールといいます。
デーモン、パッケージ
Linuxではバックグラウンドで動作しているソフトウェアのことを「デーモン(Daemon)」と呼びます。
有名なhttpdやsshdの「d」はデーモンという意味です。
複数の機能を統合して1つのソフトにまとめているので、ソフトのことを代わりに「パッケージ」ということもあります。これもよく使う表現なので覚えておいてください。
ディレクトリとフォルダ
Linuxではフォルダのことをディレクトリと呼ぶのが一般的です。
Windowsでは「スタートメニューからプログラムにある○○」もしくはパスで「C:\Program File\…」といった表現をします。
Linuxではルートディレクトリ(一番上のディレクトリ)から「/var/www/index.html」というように指定します。これは「varディレクトリの中にあるWWWディレクトリにあるindex.htmlというファイル」という意味です。
拡張子について
Linuxではすべてのファイルがテキストベースで作られているため、決まった拡張子がありません。例えば設定ファイルの場合、ファイルのパスさえ間違えていなければ、拡張子が「txt」でも「ini」でも「cnf」でも全く同じ動作をします。
しかし無秩序に拡張子をつけると間違いの元なので、通常はWindowsやMacで使われる拡張子を付けてください。
アカウントについて
Linuxではマルチユーザーを想定してシステムが構築されています。そのため、ユーザーごとの特徴を把握して、適宜切り替える必要があります。
ユーザーには以下のタイプがあります。
システム管理者
システム管理者として「root(ルート)」というユーザーが定義されています。rootユーザーのことを別名「スーパーユーザー」とも呼びます。他にも「システム管理者」と呼ばれることもあります。
ややこしい限りですが、どの呼び方でも同じrootユーザーを示すので注意してください。
一般ユーザー、システムアカウント
システム管理者以外のユーザーを「一般ユーザー」といいます。
またソフトだけが利用する専用のアカウントを「システムアカウント」といいます。webサーバであれば「apache」、メールソフトでいえば「postfix」など。
Linuxチートシートの勧め
色々な聞きなれない単語が出てきたと思いますが、全てを1度で覚えられる人はいません。
学んだことを調べ直すほど無駄なことはありません。記憶力に自信のある方も無い方も、新しいことを覚えた際にはテキストファイルに保存しておくことをお勧めします。
初心者がサーバの管理を行えるようになるまで、覚えなくてはならないコマンドだけでも、数百個は駆使する必要があります。
「覚えてないけど、1度勉強したからチートシートを見ればできる」これを何度も繰り返して覚えるのが、1番の早道です。
以上で、Linuxの基礎知識は終了です。
つぎは「Linuxサーバの設定を編集する方法と、利用する便利なソフトの解説」を解説していきます。