私は最初Windowsで自宅サーバーを立ち上げました。Linuxのほうが安定性があり動作が高速なこと、そして何より「タダ」なこと等有利なのはわかっていたのですが、Linuxはなんとなく「難しい」「コマンドの知識がなければ使えない」「インストールに手間取る」というようなイメージがあって敬遠していました。
確かにちょっと前までLinuxはとても扱いづらかったようです。チャレンジして挫折する人も相当いたようです。それで「Linuxは難しい」というイメージが定着していったのでしょう。しかし、Red Hat系列のディストリビューションはインストーラが改善されてWindowsに慣れた人にでも簡単に扱えるようになっています。ひょっとするとLinuxのほうがWindowsよりも簡単にサーバーを立ち上げることができるかもしれません。これから自宅サーバーの設置を考えている人でサーバー専用機を用意できる人には迷わずLinuxをおすすめします(それでもちゃんと立ち上がるまでに少なくとも5回はLinuxを再インストールしたんですけどね..トホホ)。
ここではよくあると思われる、1台がサーバー専用機、もう1台がWindows機でそれらはLANにつながっておりルーターでインターネット接続しているという環境でサーバー専用機にLinuxをインストールするという前提で説明します。こういう環境はとても安く構築できます。サーバー専用機はスペックの低いもので十分なので退役した古いマシンをひっぱりだしてきてセットする手があります。一度サーバーを立ち上げてからはサーバー機の管理はLAN経由でWindows機から「Samba」「Webmin」で行うのでサーバー機にはディスプレイやキーボードは不要です。そう考えると「サーバー専用機を用意できるのならLinuxのほうが安くてよい」ことがおわかりいただけると思います。
Linuxサーバーを立ち上げるにはどの程度のスペックのパソコンが必要なのでしょうか。Linuxは工夫次第でとてもコンパクトな構成でインストールすることができますので、それこそPentiumMMX 150MHz, 32MB RAM,HD 6GBなんていう古いマシンでも動作させることができると思います。しかし、Windowsに慣れた人でも楽に操作できるような環境にしようと思うとCPUクロック500MHz以上、RAM 256MB以上、HD 10GB以上を推奨します。
また、サーバーにするのですから当然ネットワークアダプタが必要です。
うちのサーバー機はCPU VIAC3 1GHz,RAM 512MB,HD 40GBというスペックです。これをWebサーバーにしてみます。
LinuxのディストリビューションはFedora Core 1にしました。Red Hat系列の最新のものです。ダウンロードして入手するという方法もありますが、インストールの手引きがついているほうが便利なのでLinux入門書に付属しているCDROM版を入手しました。CDROMは3枚あります。これをCD-BOOTしてインストールしていきます。
CDからブートすると最初はインストールタイプの選択画面が出ます。ここは何も考えずにEnterを押してグラフィカルな環境でインストールします。
次にインストールの際の表示の言語を選択します。「Japanese」を選択して「Next」ボタンをクリックします。
キーボードタイプの選択では、前に日本語を選択していると自動的に106日本語キーボードを選択した状態になっていますので、そのまま「次」をクリックします。
ここも通常は自動検出で使用中のマウスが選択されています。そこでそのまま「次」をクリックします。
ここも自動検出です。通常は何もせずに「次」をクリックします。
今回はサーバー構築ですのでとりあえず「サーバ」を選択します(後でカスタマイズします)。チェックを入れて「次」をクリックします。
「自動」で足りるのですが、ソフトウェアRAIDを組む場合はここで設定します。詳しくはソフトウェアRAID1のつくりかたをご覧ください。
新規インストールですので「システムのすべてのパーティションを削除」にチェックを入れて「次」をクリックします。
最初は何もかえないで「次」をクリックです。
ネットワークアダプタが自動検出されています。何もさわらないでさっさと「次」です。
「WWW」にチェックを入れます。「次」をクリックします。
自動で「Japanese」にチェックが入っています。「次」をクリックします。
ここも自動で選択されています。「次」です。
root(システム管理者)パスワードを設定します。設定したパスワードはメモしておきます。「次」をクリックします。
「インストールするソフトウェアパッケージをカスタマイズ」にチェックを入れ「次」を選択します。
最初からチェックが入っているものもありますが、「X Window System」「GNOMEデスクトップ環境」「エディタ」「グラフィカルインターネット」「サーバー設定ツール」「Webサーバ」「Windowsサーバ」「管理ツール」「システムツール」にチェックが入っていればとりあえずまにあいます。後からパッケージを追加することもできますのであまり欲張ってチェックを入れる必要はないです。
起動ディスクを作成します。
起動ディスクを作成したら再起動を促す画面になります。フロッピーディスクを取り出して再起動します。
再起動されると自動的にインストールが始まります。途中でCDを入れ替えるよう指示がありますのでそれにしたがってください。最後に再起動を促す画面になりますのでCDを取り出して再起動します。
再起動されると「ようこそ」画面が出てきます。「次」をクリックするとライセンス認諾画面になります。「Yes...」にチェックを入れ「次」をクリックします。
後で修正できますのでここは「次」をクリックします。
rootとは別にユーザーのアカウントを作成します。ここで作成するアカウントは管理者が一般ユーザーと同じ権限でログインする際に使用するものです。
自動検出です。何もせずに「次」です。
何もせず「次」です。
お疲れさまです。「次」をクリックするとFedra Coreが起動します。
Fedora Core付属のWebサーバであるApacheの設定は/etc/httpd/conf/httpd.confをgeditで修正して行います。ここで注意すべき点があります。サーバー設定ツールから「httpd」を選択してApacheの設定を行えるようになっているのですが、この設定ツールを起動すると最初からあるhttpd.confとは別のhttpd.confをデフォルト状態で自動生成してしまうのです。私は最初これがわからず難儀しました。サーバー設定ツールの「httpd」は起動してはいけません。
ホームページは一般的にユーザーのホームディレクトリ内に「public_html」というディレクトリを作成し、その中に設置します。たとえばユーザー「www」のホームページを公開する場合、ユーザーのアカウントを作成した段階で/home/www/というディレクトリができているはずです。(追記:このディレクトリのパーミションは最初「700」になっていますが、Webサーバーから公開するには「705」に変更する必要があります。)このディレクトリの中にpublic_htmlディレクトリを作成します。これがドキュメントルートになります。また、CGIスクリプトを設置するディレクトリはどこに設置してもいいのですが、ホームディレクトリにあったほうが管理しやすいので/home/cgi-bin/ディレクトリを作成し、スクリプトルートとします(このディレクトリのパーミションも「705」にします)。これを前提にhttpd.confの修正箇所を示します(<日本語の説明>がついている箇所が修正箇所です)。
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin hoge@r6.dion.ne.jp<システム管理者のメールアドレスを記入します>
============================================================================
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/home/www/public_html"<ドキュメントルートの設定>
#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory/>
Options FollowSymLinks
AllowOverride None
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/home/www/public_html"><ここもドキュメントルートに合わせ変更>
=============================================================================
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/home/cgi-bin/"<スクリプトエイリアスの変更>
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/home/cgi-bin"><ここも併せて変更>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
=========================================================================
#
# Specify a default charset for all pages sent out. This is
# always a good idea and opens the door for future internationalisation
# of your web site, should you ever want it. Specifying it as
# a default does little harm; as the standard dictates that a page
# is in iso-8859-1 (latin1) unless specified otherwise i.e. you
# are merely stating the obvious. There are also some security
# reasons in browsers, related to javascript and URL parsing
# which encourage you to always set a default char set.
#
# AddDefaultCharset UTF-8<文字化け対策のため変更>
ここでスクリプトを置くディレクトリとドキュメントを置くディレクトリを分けているのはセキュリティ対策のためですが、ネット上で配布されているCGIはこのようなディレクトリ構造に合わせて作られていないので自分で改造する必要があります。改造の方法はケースバイケースなのですが基本的にはスクリプトと記録用のファイル(.log,.dat等)はcgi-binに置き、画像や.htmlのファイルはドキュメントルートに置くようにして、ファイルの参照部分のディレクトリの記載を変更する作業です。
Webサーバーを自宅に置くと、その容量の大きさ、ホームページ作成の自由度の大きさからいろんな人のホームページを置いてあげたくなるのが人情です。この場合のひとつの方法として各ユーザーのホームディレクトリに公開用のディレクトリ(public_html)を置いて、ドメイン名の後に~(チルダ)とユーザー名をつけてアクセスしてもらうというのがあります。商業プロバイダーの多くもユーザーのホームページスペースのレンタルサービスをこのような方法で行っています。apacheのデフォルトではユーザーディレクトリは公開されないようになっているので、公開する場合にはhttpd.confを編集して設定を変更します。
ここでは、本ホームページ(justlikeakame.com)のあるサーバーのユーザー「piyo」さんのユーザーディレクトリ(/home/piyo)内に公開用ディレクトリ(public_html)を作成してこれを公開するという例で説明します。まず設定ファイルhttpd.confの中のsection2にある<IfModule mod_userdir.c>という記載の後の行のUserDir disableの行頭に#を加えてコメントアウトします。次に、その下の行の#UserDir public_htmlという記載の先頭の#を削除します。設定ファイルの変更はこれだけです。続いて、/home/piyoディレクトリのアクセス権を700から705に変更します(私はこれを忘れて「見えへんやんか」と焦った)。public_html内のホームページのトップページがindex.htmlになります。
以上の設定によりhttp://justlikeakame.com/~piyo/でユーザーディレクトリの公開が可能になります。
バーチャルホストとは、1つのWebサーバー(1つのグローバルIPアドレス)で複数のドメイン名のホームページを公開することをいいます。前述のようにユーザーディレクトリを公開すればとりあえず1つのWebサーバーで複数のホームページを公開することができるのですが、それではドメイン名が長くなりますし、本体のホームページの「支店」みたいでかっこよくないということで、バーチャルホストの機能を用いることがあります。独自のドメイン名を用いるわけですから、ドメイン名を登録しDNSに登録しておく必要があります。ここでは本ホームページのサーバーであるjustlikeakame.com内のユーザー「hoge」さんのユーザーディレクトリ(/home/hoge)の公開用ディレクトリ(public_html)をhoge.orgというドメイン名で公開する例で説明します。
設定ファイルhttpd.confの最後のほう、section3に次のように記述します。
NameVirtualHost *:80最初の部分はいままでメインだったホームページについての記載です。次の部分が新しく追加したドメインhoge.orgに関しての記載です。最後に/home/hogeのアクセス権を705にするのを忘れずに。
これで外部からはhttp://hoge.org/でhogeのユーザーディレクトリ内のホームページを公開できるようになりました。