Linuxの超初心者のための入門ページ

トップページ>>Linux超初心者為の入門ページ

はじめに

私はLinuxの全くど素人だった。(誰でも最初はそうだが)思い返すと最初のサーバーを公開するまでにずいぶんと遠回りをしました。
その道中、いろいろな書物、ウェブサイトを参照させていただきましたが、何でここをこんな風に説明してるところがなかったんだろう?というものが込み上げてきました。今にして思えば何であんなことにあんなに悩んだんだろうと思うことがたくさんあります。ですのでこれからLinuxでWebサーバーを立ち上げる人の為、そして私が参考にさせていただいたサイトへの感謝の意を込めて私なりの解釈をウェブサイトに公開し少しでも世間のお役にたてればと思いこのページを作りました。

Linuxでサーバーを立ち上げる意味

Webサーバーを公開するにはLinux以外にもWindowsやMacOSという選択肢があります。そこでLinuxやBSD系のOSを選択する意味は何と言っても無料であるということであるでしょう。そして、無料ということ以上に、現在世の中の公開されているWebサーバーのほとんどはLinuxやBSD系のオープンソースソフトウェで構築されているので、利用者側からしてみると例えば、perlの階層(path)をはじめとする、いろいろな機能がが標準的な仕様で動いてくれた方が都合がいいのではないかと思います。
ちなみにMacOSは基本的にBSD系のUNIXが基本で独自のソフトウェアが組み込まれているOSなので、LinuxやBSDの学習はMacOSの理解をさらに深くするものと思います。
実はLinuxはかなり進んだ面も持ち合わせています。Windowsは2000、MacはOSXより、プリエンプティブマルチタスク、メモリープロテクト、マルチCPUのサポートがされるようになりましたが、Linxはそれより以前に実装されていました。そして、apacheやsendmail、bind、perlなどのWebサーバーを構築する上での最先端のアプリケーションがただで利用できるという利点とそれかデファクトスタンダートであった事が普及に拍車をかけたと想像できます。

最初に包括的な理解をしよう

Webサーバーに求められる基本性能があります。ApacheによるグラフィカルなWebサイトを公開出来ればいいかということ、そういうことだけではなく、cgiやjava、phpやMySQLなどを実装しそれらを駆使したWebサイトを公開できるようにしておかなければ利用者に不便をかけてしまいます。
さらには、メールやFTP、DNSも運用する必要もあり、それらをすべて包括して理解してから取り組むことにより事の理解が効率化されると思います。私は特にこの点に重点を置きこのページを作っております。

サーバーとは

コンピューターの事を考えた時マウス操作でアプリケーションプログラムを起動し、何か生産物を作るもしくは情報得るというのが一般的なコンピューターの使い方でしょう。
このアプリケーションを利用する以外の、マウスでコンピューターを操作する環境、例えばフォルダーを開いたり閉じたりすなわち、ディスク内の階層管理されたディレクトリを行ったり来たりしてファイルにアクセス、コピー、削除、モニター表示、アプリケーションのインストール、アンインストールなどというOSが提供してくれる操作環境は、Windows、Mac、Linux問わず同じといえると思います。
まず、Linuxに最初に取り組みまずやることはOSのインストールだと思いますが、インストールはインストラクションどうりにすると比較的簡単にできてしまいます。そして画面を眺めて?????となるのである。
この時に、これはファイルの操作環境を与えてくれているんだと思いましょう。
基本的にサーバーとクライアントOSには差がありません。違いはOSに乗っているソフトウェアが違うと考えてください。ワープロやらグラフィックソフト、ブラウザーなどをフォアグランドで動かし何か生産性のある活動をする為のコンピューターがクライアントコンピューター、ネットワーク上のコンピューターにhttp、メールなどのサービスを提供するソフトをバックグランドで動かしているものをサーバーと考えてください。そしてサーバーを設定するという行為は、そのバックグラウンドで動かすそれぞれのサービス(例えばbindであったりapacheなど)を設定する行為であると考えてください。

Unixユーザーとサービスの関係(基本的な考え方)

もしかしたらこのサイトにたどり着いた人はここの部分が判らないが為に頭がこんがらがっているかもしれません。なのでちょっと飛ばしてUnixユーザーとサービスの関係を説明いたします。
Linuxのインストールの途中でrootというスーパーユーザーのパスワードを設定し、そしてユーザーを一人設定したかと思います。
この追加ユーザーは特別でもなく、OSのインストール後さらにいくらでも追加をすることが可能です。そしてユーザーが何を出来るかというと、システムにログインしてコンピューターを操作出来ます。そしてそのユーザーは追加されると同時に/homeの下にユーザー名のディレクトリが出来(実際はホームディレクトリをどこにするか追加時に指定できる)、そのディレクトリをホームディレクトリと呼びます。
とあるユーザー名を使いシェルでログインをするとそのディレクトリの中にいます。
そしてここが重要です。
そのUnixユーザーがFTPの接続ユーザーになり、メールの送受信のユーザーになります。
例えばクライアントからFTPソフトを立ち上げホスト名にIPアドレスを入れます。そしてユーザ名にUnixユーザー名とそれに設定したパスワードを入力することによりそのユーザーのホームディレクトリに接続できるのです。そしてそのディレクトリにFTPを使いindex.htmlを転送したとします。そして、apacheのconfigファイルでDocument rootを”/home/ユーザー名”に設定し、ブラウザーでアドレスを入れればそのユーザーのhomeディレクトリにあるindex.htmlが表示されるのです。
そしてアウトルックを始めとしたメールクライアントソフトでpopサーバーにIPアドレス、Unixユーザーとパスワードを入れればメールを受信することが可能になります。
更に具体的に書きますと、バーチャルドメインでabcdefg.jpを設定するとします。
そうするとこのように設定する人が多いかと思いますが、abcdefg.jpというユーザーを追加します。そのユーザーのパスワード(xxxxxx)を設定します。apacheのconfigでバーチャルドメインabcdefg.jpのDocument rootを/home/abcdefg.jpに設定。
そうすることにより、ftpでのホスト名はwww.abcdefg.jp、ユーザー名はabcdefg.jp、パスワードxxxxxxで接続できるようになり、ftpで接続された時の階層にindex.htmlを置き、ブラウザーでそのドメイン名を入れれば、そこに置いたindex.htmlが表示されるようになります。

ホストとドメイン、Apacheの関係

ある任意のコンピューターに名前を付けます。これが一つのUnixの考え方になります。
例えばsvr1という名前を付けたとします。これがホスト名です。そしてそれがabcdef.jpというドメインに属していればそのコンピューターのフルネームはsvr1.abcdef.jpとなります。svr1が名前でabcdef.jpが名字のような関係です。これは、インストール時に入れたことを覚えているでしょうか。
ここで設定したことはLinux系ですと /etc/hosts /etc/sysconfig/network /etc/resolv.confに記述されていますのでここの記述を変更することにより後でいくらでも変えることができます。
ここで設定されているホスト名は言わば本名だと思ってください。そして、後にいくらでもニックネームを持つことが出来るのです。ここで一つ頭を整理してみましょう。
ファイル共有時のホストの指定、ブラウザーによるapacheへのアクセス、ftpクライアントソフトによるftpサービスへのアクセス、メールクライアントソフトによるpopサーバーやsmtpサーバーへのアクセスの指定方法はホスト名+ドメイン名、IPアドレスのどちらでもそのコンピューターが特定出来ればいいのです。そして、その本名のほかのニックネーム、例えばwww、pop、ftpなどはDNS(bind)に設定します。あるドメイン名に対してどんなホスト名があり、そのホストがどのコンピューターなのか具体的な記述をするところがzone設定といわれるものです。
最初につまずくところはDNSと呼ばれるものがシチューエーションで変わってくるのです。
例えば、クライアントコンピューターがプロバイダー経由でインターネットに接続する場合の、クライアントのDNS、レジストラーを通してドメインを取得した時に指定するDNSサーバー、自分がWebサーバーを公開するときにサーバーに設定するDNS等、DNSという言葉がいろいろ出てきますので、そこら辺を整理して考えるととてもすっきりするのではないでしょうか。

シェル

GUIでサーバーでアクセスするか、シェルを使いテキストモードでコンピューターを操作するか?
私的に理屈ではGUIの方が多くの意味で理にかなって扱いやすいと考えています。しかし、Unixを扱う多くの書籍、WebサイトはGUIをもとにした解説はほとんどなく結果的にテキストモードのシェルを使わざる得ない状況というのがあります。
私的には通常、OSのインストール時のみサーバー自身を操作しSSHの設定までします。その後はクライアントコンピューターからSSHでアクセスするケースが多いです。現実、ほとんどサーバー自身に触れることはありません。そこで是非Webminの導入をご検討ください。ブラウザーである程度の操作が可能になります。
私はファイヤーウォールの設定に関してはWebminを頼って設定しております。
それとファイルマネージャーも便利な機能だと考えます。クライアントコンピューターでファイルをダウンロードしサーバーに転送、もしくはサーバー上のファイルをクライアントにコピーするのにとても便利です。
私はOSをインストールした後wgetでWebminのrpmをダウンロードしインストールします。Webmin自体は単体で動くプログラムです。ブラウザーでアクセスするのですが、apacheは関係ありません。インストール時に設定するのはパスワードくらいです。
ほとんどの操作はシェルから行いますが、ファイヤーウォールの設定は楽だな~と実感します。

セキュリティー

セキュリティーに関して私が思うのが、設定が複雑な割にファイヤーウォールは役立たずだなと思ってしまいます。だって必要なポートは開けなければいけないんですから。こっちの方が重要だなと思うのがTCP Wrapperです。いわゆるhosts.allow hosts.denyのことです。ちなみにdenyはディナイとディにアクセントを付けて発音します。これ意外と間違って発音する人多いです。この間はデニーと発音する人がおりました。こういうシチューエション、自分がそれを口に出すとき何と言うべきか悩みます。
ここは超初心者のサイトということで話をまとめますと、ファイヤーウォールはポート番号レベルでアクセス制限をする。TCP Wrapperはホストレベル(IPアドレスや、ホスト名、ドメイン名)でアクセス制限をすると考えてください。TCP WrapperはSSHやFTPに関して機能するとということも併せて覚えていただけたらいいのではないでしょうか。
不正アクセスのほとんどは中国、ロシア、韓国、東欧、東南アジアからのものがほとんどです。ですから、出先から操作しなければならないことを考慮して、日本国内の.jpに関しては私は許可をしています。(国内のサーバーが踏み台にされていたら意味がありませんが)
それと、ユーザーをやたらめったら作らない。システムにログインする必要のないユーザーはログイン権限を無しにする(メールやFTP、httpのユーザー)。パスワードをなるべく複雑にする。
メールユーザーに関してはUnixユーザーでは無く、バーチャルユーザーで運用するようにする。こうすることにより、リスクを減らすことが出来ると思います。
しかし、物騒な世の中ですね~。

inetdに関して

もし、古い書物やWeb siteを参照していらっしゃる方はスーパーサーバーと呼ばれるinetdもしくはxinetdでsshやftpを起動するなどという情報にぶち当たり、はたしてこれを使った方がいいのかどうか迷っている人もいるかもしれません。
これはメモリーがまだ高価で、CPUが非力な時にメモリーやCPUなどのリソースを節約する意味で使うと解釈してください。
現在はほとんどの環境でsshなどは常駐で動かしています。1G以上のメモリーがあればスーパーサーバーの事は考えなくていいと思います。

ディストリビュージョンに関して

私はRed Hat、CentOS、FedoraCore、FreeBSDの4つのディストリビュージョンしか触ったことがありませんので偉そうなことはいえません。
ただ、FreeBSDのportsという機能はとっても便利だと思います。
選ぶポイントとしては情報が得やすい。本屋に行けば本が見つかりやすかったり、ウェブサイトを検索した時によく目にするディストリビュージョン選ぶのが無難な選び方だと思います。

ネットワークプロトコル・ポート

インターネットはTCP/IPというネットワークプロトコルを使いネットワークを実現しています。Unix系の入門書を見るとまずプロトコルをレイヤー化して物理層だの何だとか解説しております。しかしとても理解が難しいです。
私も何とか理解しようと試みましたが、いまだによく理解できていません。でもサーバーの設定にはあまり困りません。なぜかというとTCPやUDPと指定する部分はファイヤーウォールの設定や、ルーターのポートフォワーディングの設定ぐらいしか今のところ行き当たらないからです。
それなので私はwell knownポートといわれるポート番号の暗記、例えばsshが22とかapacheが80とかと、そのほとんどがTCPを使いDNSだけUDPと覚えています。
これくらいの知識で今のところ事足りております。

一通りの流れを考える

Webサーバーを構築するとき一通りの流れを考えよう。
私の場合は以下のような手順で作業をイメージしております。
OSのインストール→sshの設定→OSのアップデート→Webminのインストール・設定→ファイヤーウォールの設定→TCP Wrapperの設定→bindのインストール・設定→apacheのインストール・設定→FTPのインストール・設定→メールのインストール・設定→phpなどのインストール設定・・・・
一気にできればいいのですが、作業を中断したりしなければならないことも多々あります。できれば、自分なりのコンフィグレーションチェックリストなどを作って作業を進めるのがいいのではないかと思います。

後の細かいサービスの設定は各Web siteや書物を参照していただければと思います。

Copy Rights Etown inc