\documentstyle[a4j]{jarticle}
\title{WWWとApache}
\author{}
\date{}
\begin{document}
\maketitle
\section{WWW}
WWWとは? \\
WWW(World-Wide Web)はインターネットで現在もっとも人気があり、将来の
通信系マルチ
メディアに最も近い形を実現しています。ハイパーテキストと画像、音声、動画、
などを組み合わせて
情報を提供できる規格を持ったネットワークであり、その規格によって作成され
た情報画面を提供する
サーバーが WWWサーバーです。ハイパーテキストの優れたところは、ある情
報の中でもっと知りた
いと思う事項があった場合、その箇所をクリックしさえすればさらに詳しい情報
が得られるという点で
あり、このような情報のリンクが世界中に網の目のように張りめぐらされている
点です。特に画像、音声、動画など文字テキスト以外のメディアとリンクしてい
るものをハイパーメディアとも言います。こ
れらはある情報が他の情報とリンクしているために実現できるわけですが、世界
中の WWWサーバー
とリンクしてマルチメディアを提供できるのがWorld-Wide Webの特徴です。この
Webとはテ
キストのリンクが世界中にクモの巣状に張りめぐらされているイメージから名付
けられたものです。ア
メリカ、ヨーロッパ、あるいはアフリカ、アジアとクリックするだけで簡単に世
界中の情報の波の中を
飛び回る姿を形容してネットサーフィン(net surfing)などと表現することも
あります。 \\
\section{Apache}
Apacheとは現在全世界で使用されているWebサーバのうち約半数が使用している
ものである。詳細は\\
http://www.apache.org\\
にある。基本的にここからソース、またはバイナリをとってきてインストールを
行うことになる。現在の最新バージョンは1.3.26である。
\section{Install}
インストールを行うがFreeBSDではPortsを使用すると簡単にインストールを行え
るので、これを使用する。
\begin{verbatim}
#cd /usr/ports/www/apache13+ipv6
#make;make install
\end{verbatim}
これでインストール終了。再起動後、手動でhttpdを起動させる。
\begin{verbatim}
#httpd
\end{verbatim}
Netscapeを立ち上げ、\\
http://localhost\\
でApacheの画面が出れば成功。
\section{Configuration}
バージョンやプラットフォームにも依るが今回インストールしたApacheの設定ファ
イルは/usr/local/etc/apacheに入っている。どこに何が入っているか知りたい
場合はMakefileを読むと便利。
\begin{verbatim}
/usr/ports/www/apache13+ipv6/work/apache_1.3.26/Makefile
\end{verbatim}
設定ファイルはhttpd.conf,access.conf,srm.conf,mime.typeの4つ。歴史的に
access.conf,srm.confは存在するが現在は実質その内容をhttpd.confに書いてい
るためhttpd.confとmime.typeの2種類しか扱わず、さらにmime.typeを設定する
ことは少ないかもしれない。\\
ここではhttpd.cnfの設定について触れる。
\begin{itemize}
\item ServerType (standalone or inetd)
\item Port (使用するポート)
\item StartServers (起動するhttpdの数)
\item User (利用できるユーザタイプ)
\item Group (利用できるグループタイプ)
\item ServerAdmin (管理者のメールアドレス)
\item ServerName (サーバの名前)
\item UserDir (各ユーザのWebディレクトリ)
\item DirectoryIndex (ディレクトリを指定したとき最初に
現れるページ)
\end{itemize}
standaloneとはリクエストが終了しても一定時間はプロセスを起動させ続けるも
ので、inetdとはリクエストの度にプロセスを起動し、リクエストが終了
するとプロセスも終了するタイプである。inetdではリソースをそれほど
消費しな
い。アクセスが頻繁にある場合は standalone型にする方が良い。しかし
セキュリティー上はinetdの方が良い。通常アクセスが正当なものかどう
かをTCP Wrapperで判断し、それからinetdがhttpdを起動するためである。
\\
従来access.confに設定していたアクセス制限の記述も現在はhttpd.conf
に書き込むことが多い。
\begin{verbatim}
Order allow,deny
Allow from all
Options FollowSymLinks
AllowOverride None
\end{verbatim}
のように書く。このときディレクトリ'/'以下の設定を表している。アクセス許
可をTCP Wrapperの方で行うこともでき、またこのようにhttpd.conf内でコント
ロールすることもできる。\\
Optionの種類は次のようなものがある。
\begin{itemize}
\item All: MultiViews,IncludeNoExecを除くす
べてのオプションを許
可
\item ExecCGI: CGIの実行を許可
\item SymLinkskfIwnerMath:
対象とするファイルか
ディレクトリが同じユ
ーザIDによって所有さ
れているシンボリック
リンクのみ許可
\item Includes:
Sever Side Include
を許可
\item IncludesNoExec:
Server side
Includeを許可
execコマンドとCGI
スクリプトのインクル
ードは含まず
\item Indexes:
ディレクトリインデッ
クスの作成を許可
\item MultiViews:
Content
negotiated
MultiViewsを許可
\item FollowSymLinks:
シンボリックリンクの
使用を許可
\end{itemize}
AllowOverrideとはディレクトリごとに設定できるファイル.htaccessをどこまで
許可するかというものである。
\begin{itemize}
\item All:
すべてのオプションの使用を許可
\item AuthConfig:
認証設定の使用を許可
\item FileInfo:
AddTypeとAddEncodingの
使用を許可
\item Indexes:
ディレクトリインデックスをコン
トロールする命令の使用を許可
\item Limit:
ホストへのアクセスをコントロー
ルする命令($<$Limit$>$ タグ内で
使用可能なオプション)の使用を
許可
\item Options:
ディレクトリの設定をコントロー
ルする命令(Optionで設定可能
なオプション)を使用を許可
\item None:
一切の設定を許可しない
\end{itemize}
通常CGI、SSI等はどのディレクトリでも使用できるわけではなく、.htaccessファイル
をおきそこに許可をしておく。
\section{inetd型Webサーバ}
inetd型サーバにする場合の設定方法はまず/usr/local/etc/apache/httpd.confに
\begin{verbatim}
ServerType inetd
\end{verbatim}
を書く。次にinetdの設定として
/etc/inetd.confに
\begin{verbatim}
http stream tcp nowait root /usr/local/sbin/httpd httpd
\end{verbatim}
とかき、サービスを指定するために
\begin{verbatim}
http 80/tcp
\end{verbatim}
とかく。これは最初に指定しているかもしれないがこのように書き直す。あとは
外部からのアクセスも許可するように
/etc/hosts.allowに
\begin{verbatim}
httpd : ALL : allow
\end{verbatim}
を書く。これで自ホストだけでなくほかのマシンからでも見ることができる。し
かし、これはセキュリティー上問題があるため内部マシンだけ許可を与えた方が
良いかもしれない。
これでinetd型Webサーバが完成する。
\section{研究室の設定}
研究室のWebサーバはhatsuneが担当している。hatsuneのhttpd.confの一部を抜
粋してみた。
\begin{verbatim}
ServerType standalone
ServerRoot "/usr/local/apache"
StartServers 5
MaxClients 150
Port 80
User webuser
Group webgroup
ServerName www.db.is.kyushu-u.ac.jp
Options FollowSymLinks ExecCGI Includes -Indexes
AllowOverride All
UserDir public_html
DirectoryIndex index.html index.php3
AccessFileName .htaccess
Order allow,deny
Deny from all
CustomLog /usr/local/apache/logs/access_log common
CustomLog /usr/local/apache/logs/custom_log combined
\end{verbatim}
\section{課題}
自分のマシンでinetd型Webサーバをつくってみよう。
\section{Reference}
\begin{verbatim}
http://www.apache.org
http://www.lint.ne.jp/~tomo/server/apache/linux/setup00.htm
http://www.fkimura.com/apache0.html
http://www2.dokidoki.ne.jp/guntan/linux2/wwwteigi.htm
http://www.nspl.co.jp/Solaris/Internet/apache1_3_12.html
http://www5.big.or.jp/~m_kono/cgi/htaccess.html
\end{verbatim}
%http://www.kofu-th.ed.jp/~teduka/s9731/s973138/www.html
%http://ash.or.jp/ash/env/srv/wwwsrv.htm
%http://leo.denshi.numazu-ct.ac.jp/~tsuboi/linux/apache/config.html
%http://www.gclue.com/java-mode/tutorial/linux/httpd_conf.html
%http://ash.or.jp/ash/obsolate/htm/apache133.htm
\end{document}