Nack's Private Archives File #2, About SOHO-WEB-sever

2002年から二年間あまり、自宅サーバーを公開していました。
このページは構築時の経験を記したもので、同サーバー上に掲載していました。

今読み返してみると、だいぶ状況が変わってしまったのが分かります。
そもそも自宅サーバーそのものの存在意義がなくなってしまいました。
今では30Gbytes以上のHDDスペースを備えたサーバーが月額2千円以下で借りられます。
純粋に趣味目的以外には自宅サーバーを立ち上げる理由などありません。

もはや意味の薄弱な苦労話ですが、興味のある方はお読み下さい。
参考になる点もあるかもしれませんし、最低限、暇つぶしにはなります。
このページのHTMLは今回の再掲にあたり書き直しましたので書面の体裁は変わっていますが、内容はそのままです。
そのため、最近のネット事情とは異なる部分があります。

ちなみに、このページはコンピューターホビー項目の下位に置いていました。
当然、コンピューターホビーストをターゲットとしたページです。

まず、あなたの時間を徒(いたずら)に奪わぬために、テストを二問出します。

サルにもできる自宅サーバー

初めにアドバイスが二つあります。 − 少し長いので別にページを設けました。億劫な人は開かずに読み進んで下さい。

自宅サーバーのメリットは?

レンタルサーバーを利用してホームページを公開してる方は以下のような不自由を経験したことがあるはずです。



まず決めなければならないことが三項目あります。

  1. サーバー用に使うコンピューターを何にするか。
  2. OSには何を使うか。
  3. 回線はどうするのか。

これらの三項目は相関関係にあり、一つを決めると他は限定されます。

ここでは、私の構成を例に話を進めていきます。状況が多少異なっても、共通する事項は数多く、必ず参考になるはずです。


1,コンピューター

ここ数年以内に発売されたものならば殆どのコンピューターがサーバーマシンとして使えます。

私は恥ずかしいことに、上記の条件の全てを満たす手持ちのコンピューターがなかったので、ソフマップで中古のOptiplexGX110-733Sを購入しました。

IBM PC/AT互換機を対象にしたディストリビューション(LINUX)の採用を最初から決めていましたので、標準的なIBM PC/AT互換機を選んだのです。

OptiplexGX110-733Sのスペックは以下の通りです。

CPU:PentiumV/733MHz RAM:128MB HDD:20GB LAN:10/100

2,OS

LINUXは勿論、WINDOWS98/Me/95/2000等もサーバー用OSとして使えます。

私がLINUXを採用した理由は、

3,回線

ADSL,FTTH,CATV,現状で簡単に手にはいって、バカげたコストが掛からないのは、この三つでしょう。(ISDNは諸般の事情により採用を検討したことすらない)

私の場合、ISDN,CATV,を横目に、(プロバイダーこそ転々としたものの)長年付き合ってきたダイアルアップ接続から2001年の末にADSLに乗り換えたときに、自宅サーバーの夢が現実味を帯びてきました。
1.5メガでも何とかサーバーとして様になることが分かったからです。

自宅サーバーを構築するにあたり、前述の三項目についてインストールの順番は、その人の状況によって違うでしょう。
現在の環境を生かすならば導入すら不要です。

私は、コンピューター、OS、回線ともに、サーバー構築時に変更しましたので、全てについて導入の作業が必要でした。

前に書いたとおり、ADSLへの乗り換えが、きっかけになったくらいで、当然、この作業が始めでした。

回線

新たにサーバー用に購入したコンピュータのみで構築を完遂するのは至難の業です。
まず、使い慣れたコンピューターで「ADSL回線」−「モデム」−「ルーター」迄を確立するステップを踏むことにします。

なお、接続環境構築の手順の途中で、サーバー用コンピューターへの、LINUX(OS)、サーバープログラム(httpデーモン)、イーサネットカードの、導入、設定を、平行して行う必要があります。

ADSL回線のインフラ提供サービスは、プロバイダも含めて必要環境がセットになっているものが殆どで、サポートと密に連絡を取りながら進めれば、大した困難もなくインターネットに繋ぐことが出来ます。

LANの構築に関わる作業も難しくはありません。


ポートとパケットフィルター



サブネットマスク

LANを含むネットワーク構築にあたり、情報伝達システムの構造や、サブネットマスク等、それに関する取り決め事(プロトコル)の理解は不可欠ですが、私の文章力では、かいつまんだ説明ができません。
かなりのボリュームになることを避けられませんが、追々、書くつもりではいます。
当面は、本やネットで勉強して下さい。

自宅サーバー構築は、種々のプロトコルを円滑に機能させるための環境整備に終始します。
個々のプロトコルのレベルや性状、それらを体系づけた概念であるOSI参照モデルについても、多少の理解が必要です。(大まかに把握しているだけで充分です。)

なお、グローバルアドレスとプライベートアドレス、および相互間の変換についての基本的な説明は省略しました。九九やイロハを解説するに等しい難事で私には荷が重すぎるからです。



コンピューターの手当

インターネットからルーターまでは道がつきました。
次は、この道をサーバーまで伸ばします。

先にあるコンピューターは、この時点でサーバーとしての機能を備えていなければなりません。





  • DNSサーバー(重要)

    私がインターネットにアクセスし始めた1995年頃は、学校や大手企業、一部のパワーユーザーを除いて、ダイヤルアップ接続が主流でした。
    ところが、その貧弱なインフラでWEBサーバーの公開を試みる人たちがいました。
    彼らは巧妙な方法を編み出して「PPP逆流プロジェクト」を掲げるホームページ等で発表していまいた。

    しかし、WEBを実際に公開できたのは、ほんの一握りの人たちだと思われます。

    サーバーをLAN内にとどめるなら構築は容易です。OSそのものがネットワークを意識して作られているからです。
    LANの効率的な運用のためにサーバーの設置が常識且つ標準となった現在では造作もありません。

    私もインターネットを利用し始めた1995年当時、三台のコンピューターで机上LANを組み、フリーウエアのサーバープログラムを走らせて遊びました。今考えるとWINDOWS95はLANを制御するのにイッパイイッパイだったはずですが、フリーウエアのサーバープログラムが優秀だったせいか、NIFTYのライブラリからプログラムをダウンロードするのに時間がかかったこと以外は苦労した覚えがありません。

    しかし、インターネットに公開するとなると話は別です。
    なかんずく、ダイヤルアップ接続でのWEB公開を目指す人たちの前に巨大な障壁となって立ちはだかったのがDNSサーバーです。

    これまで説明してきた作業の末、ルーターのWAN側すなわちインターネットからやってきたポート80番宛ての信号はルーターの機能によってLAN内のWWWサーバー(例えば、プライベートアドレス192.168.0.86)に転送されるようになり、自宅サーバーへのインターネットからのアクセスが可能になります。

    ところで、IPアドレスは文字通りインターネットに繋がれたコンピューターの住所であるわけですが、四組の数字で表されます。
    それを人間に解りやすい形に置き換えたのが修飾ドメイン名です。
    しかし、ネット上の通信で機械達が実際に扱うのは数字の羅列であるIPアドレスの方です。
    修飾ドメイン名とIPアドレスの対応を、ブラウザはどうやって知るのでしょう?

    手品の種は簡単です。
    ブラウザのURL欄に修飾ドメイン名を入力したとき、ブラウザはそのURLの表すIPアドレスをどこかに見に行くのです。
    そのどこかこそがDNSサーバーです。

    インターネットにサーバーを公開するためには、そのサーバーの修飾ドメイン名がいかなるIPアドレスと対応するかを誰もが見られる場所に掲げておかなければなりません。
    そして、それは基本的にはサーバーのオーナー自らが、しかも、プライマリとセカンダリの二つを用意しなければなりません。
    (セカンダリはプライマリがトラブルでダウンしたり、クライアントとのパスが悪くて繋がりにくい時などに使われる補欠です)

    1995年当時の私も机上LANに飽きたらず、インターネットへのWEB公開を目指してプライマリを自宅に置くところまでは何とか目星がついたのですが、セカンダリがどうにもなりませんでした。
    プライマリとセカンダリは離れていなければなりません。
    この場合の離れているとはネット上の情報伝達ルートに関わる意味ですが、地理的な距離と同義と解釈して差し支えありません。
    例えば停電でプライマリがダウンしたとすれば、セカンダリは少なくとも停電地域の外でなければなりません。

    交換DNSサーバー(互いのセカンダリを設置しあう)をもくろんで、三重県の親戚や、関西、東北の知り合いに打診しましたが、コンピューターにそこまでのめり込んでいる人は一人もいませんでした。

    このセカンダリの設置をクリアすれば自宅サーバーを殆ど自力で運用できます。

    ただし、専用回線を持たぬ我々の環境では、もう一つくぐり抜けねばならないネックがあります。
    それはインターネットにつなぎ直すたびにIPアドレスが変わってしまう現実への対処です。

    クライアントがDNSサーバーから取得する「修飾ドメイン名とIPアドレス」の対応を常に正しい値にアップデートしておかなければなりません。
    といっても、専用のプログラムにお任せなので簡単です。

    アップデートを含めてDNSサーバーを丸ごと面倒見てくれるのが「ダイナミックDNSサービス」です。
    冒頭に述べたとおり料金も手頃でこのサービスを利用するのが得策でしょう。

    この項は次回以降の更新時に書き足します。



  • コンテンツの作成とサーバーへの登録

    FTPでのファイル転送は、この方法が最も汎用性が高く、安全で確実です。

    他の方法は処理成立の条件が複雑で面倒です。

    例えば、上記の方法で、あるファイル(仮にbb.html)を登録すると、以降、そのファイルbb.htmlの更新時には、FTPソフト(私の場合はWSFTP/32)のセッションプロファイルのリモートホストに(/var/www/html)を指定することにより、直にアクセスできます。
    つまり、所有権がユーザーaaにある既存のファイルには直接上書きできます。しかし、新たなファイルをサーバーディレクトリ直に登録することは出来ません。
    また、ファイルの削除は所有権を持つユーザーにも許されていません。
    rootの持ち物/var/www/htmlディレクトリのパーミッションが755だからです。
    このパーミッションを775あるいは777に変更したり、aaをルートグループのメンバに設定するのは、お奨めしません。
    セキュリティー面で危険が生じます。

    最初だけGNOME用ターミナルエミュレーターを使ってホームディレクトリ経由でファイルを登録し、以降は直にアクセスしてファイル更新を行えば良いではないかと思われるでしょう。

    ファイル作成を一台のコンピューターで賄う場合は、確かにその通りですが、
    複数のコンピューターで対象ファイルを共通に扱う作成法を採っていると問題が生じます。

    直前に別のコンピューターから更新されたファイルは、そのホストに所有権が移ってしまうため上書きが利かず、 結局、ホームディレクトリからGNOME用ターミナルエミュレータで転送するしかないのです。

    それでもなお、サーバーディレクトリ直の処理に拘泥するのなら、コンピューターごとに扱うファイルを分けることになります。
    これでは、かえって不自由です。

    直前に行った更新の送信元を記憶しておいて条件分岐のロジックを働かせるといったコンピューターの得意な作業手順は人には不向きです。
    ここは人間らしく、転送作業の全てをホームディレクトリ経由に一本化したほうがスマートです。


    注、行末コードについて

    WINDOWS(MACも)とLINUX(unix)では、テキストの行末コードが異なります。WINDOWSとMACは(CR+LF)LINUXはCRのみ。
    WINDOWSマシンを使っていた人は、これによる転送時の不具合を解決できず、ホームページ公開を諦めたことも、昔はあったようです。
    MACには行末コードを変えられるエディタや行末コード変換ソフトがありましたが、WINDOWSにはなかったからです。

    これには実は簡単な抜け道があります。FTP転送ソフトの転送モードにASCIIを選べば良いのです。

    現在では、ファイルの種類を判別して転送モードを切り替える機能がFTPアプリケーションプログラムに装備されているので、余分な操作は不必要です。

    FTP転送ソフト上で、どのようなプロセスが働いているのかは知りませんが、少なくとも見かけ上は変換が行われている結果になります。
    行末コードは「キャラクタ」としてではなく「行末」そのものとして扱われるのかもしれません。


    所有権とパーミッション

    LINUXを扱う上で、心得ておかなければならない概念です。

    LINUX(古くはUNIX)関係の解説書には必ず記されているので、詳しくはそれらの書籍をご覧ください。
    ここでは簡単な説明にとどめます。

    LINUX上にユーザーがファイルやディレクトリを作成すると、そのユーザーの所有物になります。
    所有権はオーナーの他に、そのユーザーのデフォルトグループにも与えられます。

    ◎パーミッションとは、

  • 「そのファイルへの操作」または、「そのディレクトリへの操作」を、許可するか、しないか、
    対象ユーザーのカテゴリーごとに規定したものです。

  • あるユーザーが、どのカテゴリーに属するかは、所有権が基準となります。

    ◯ユーザーの種類⇒ユーザーのカテゴリーは以下の三つです。

    ◯操作の種類⇒操作の種類は次の三つです。

    ただし、それぞれの意味はファイルとディレクトリでは異なります。

    ◎パーミッションの値は「ls -l」コマンドで見ることが出来ます。

    -rwxr-xr-x 1 root root 4096 7月 28 2002 cc.html

    左端の文字はファイルの種類を表しています。「−」ならファイル、「d」ならばディレクトリです。
    表示の左から2文字目から10文字目までがパーミッションです。

    たとえば、以下の表記ならば、ディレクトリについて、ユーザー(ディレクトリ所有者)、グループ、その他のユーザー、の全てに対して、読み込み、書き込み、実行の全ての操作が許されていることを表します。
    drwxrwxrwx

    また、以下の表記は、そのファイルについて、ユーザー(ファイル所有者)には全ての操作が、グループには読み込みと実行が、その他のユーザーには読み込みのみが、許されていることを表します。
    -rwxr-xr--

    つまり、<r=読み込み、w=書き込み、x=実行>の順番で、許可か不許可かの二者択一を表すキャラクタが、ユーザーのカテゴリ毎に一セットになって、三セット分連なっています。
    最初の一セットがユーザー(ファイル所有者またはディレクトリ所有者)、次のセットがグループ、最後が他のユーザーです。
    アルファベットが許可を示し、「ー」は不許可を示します。

    ◎パーミッションは「chmod」コマンドで変更できます。

    パーミッションが rwx r-x r-x に設定されているファイル cc.html を rwx rwx r-x に変更するときは、chmod g+w cc.html リターンと入力します。
    rwx r-x r-- にしたければ、 chmod o-x cc.html です。

    ユーザー(オーナー)は u 、グループは g 、その他のユーザーは o 、で表します。また、許可に変更するときは + 、不許可への変更は - です。

    chmod go+w とか、 chmod o+wx のように、一つのコマンドラインで複数のユーザーカテゴリーや複数の操作について変更することも出来ます。

    ★ chmod の引数は、rwx の組を3桁の2進数と考えて、8進数で指定することも出来ます。

    rwx rwx rwx は 777、--- --- --- は 000 と、それぞれ、対応します。

    詳しくは、本やネットで調べてください。


    以下、続きは、次回更新時に加筆


    ホームページ直前のページに戻る |