How to build Internet Server with Solaris 2.6

last update: 29 Sep 2004

home |index |contents |next |previous

apache-1.3.3のインストール



"apache"はもっとも広く使われているHTTPサーバの一つです。

3.1 ソフトの入手
apache-1.3.3を入手します。例えば以下のサイトから入手できます:

http://www.apache.org/dist/apache_1.3.3.tar.gz

3.2 インストール

    3.2.1 インストールディレクトリの決定

    インストール前に、インストールするディレクトリ、 WEBページを置くディレクトリ、 logファイルを置くディレクトリを決めておきます。

    3.2.2 インストール

    ファイルapache-1.3.3.tgzを展開するディレクトリ$Workに移動して、バイナリパッケージを展開します。 作業ディレクトリ$Workは任意のディレクトリです。
    展開が終ったらディレクトリ$Work/apache_1.3.3に移動します。
      % cd $Work
      % gzip -cd apache-1.3.3.tgz | tar xvf -
      % cd apache_1.3.3

    次に以下のコマンドを実行します。configureに与えるprefixオプションには "apache"をインストールするディレクトリ(今回の場合:/usr/local/apache)を指定します。
      % configure --prefix=/usr/local/apache
      % make
      % make install

    以上で"apache"のインストールが終了しました。
3.3 コンフィギュレーション
"apache"を起動する前に3つの設定ファイル: httpd.conf, access.conf, srm.confを サイトに合わせて変更しなければなりません。
これらのファイルは"apache"をインストールしたディレクトリ以下のサブディレクトリ"etc"以下に あります。 今回の例では /usr/local/apache/etc以下にあります。
  1. httpd.conf
    "httpd.conf"はapacheの主要なパラメータを設定するファイルです。 ここではポート番号、ログファイルのディレクトリを指定します。
    httpのポートは通常は80番です。 また先に決めたように、ログファイルはディレクトリ/var/httpd/logs以下におきます。
    以下に今回の例を示します。
    		# Port: The port the standalone listens to. For ports < 1023, you will
    (36行目)	Port 80
    
    		# ErrorLog: The location of the error log file. If this does not start
    (81行目)	ErrorLog /var/httpd/logs/error_log
    
    		# The location of the access logfile (Common Logfile Format).
    (101行目)	CustomLog /var/httpd/logs/access_log common
    

    httpd.confの変更例


  2. access.conf
    "access.conf"ファイルはサーバに対するアクセス制御を行なうファイルです。 ここでは、WEBドキュメントをおくためのルートディレクトリとCGI用のディレクトリを指定します。
    以下に今回の例を示します。
    		# This should be changed to whatever you set DocumentRoot to.
    (32行目)	<Directory /usr/local/etc/httpd/htdocs>
    
    		# /usr/local/apache/share/cgi-bin should be changed to whatever your ScriptAliased
    		# CGI directory exists, if you have that configured.
    
    (58行目)	<Directory /usr/local/etc/httpd/htdocs/cgi-bin>
    

    access.confの変更例


  3. srm.conf
    "srm.conf"ファイルはapacheの扱うリソース情報を設定します。 ここでは、WEBドキュメントをおくためのルートディレクトリ、ユーザディレクトリなど を指定します。

    運用上問題となるのはユーザディレクトリ(UserDir)です。 ユーザディレクトリで指定されたディレクトリ以下に各ユーザのWEBページをおけば、サイトのWEBページだけでなく、ユーザのWEBページも公開できます。
    以下では"usagi"というユーザが

    http://www.galaxy.org.jp/~usagi
    のURLアドレスでWEBページを公開する方法について説明します。

    ユーザディレクトリの指定方法には大きく分けて2つの方法があります。

    1. ユーザWEBページ用ディレクトリ以下にWEBページをおく
      ユーザディレクトリ(UserDir)にユーザWEBページ用ディレクトリを絶対パスで書きます。例えば:
      UserDir /usr/local/etc/httpd/users
           

      ユーザ"usagi"がURL:"http://www.galaxy.org.jp/~usagi"でホームページを公開する場合、 ユーザディレクトリ/usr/local/etc/httpd/users以下にサブディレクトリ./usagiを作り、 そのサブディレクトリ以下にホームページであるindex.htmlファイルをおきます。

      つまり、以下の対応が成り立ちます:
      /usr/local/etc/httpd/users/usagi/index.html <----> http://www.galaxy.org.jp/~usagi/index.html

      この方法の利点と欠点を挙げます:

      • 利点
        ・ユーザアカウントを持たなくてもWEBページを公開出来るので:
        ・好きな名前でホームページを公開できる。
        ・WEBサーバに不必要なユーザアカウントを作る必要がない。
        ・外部からアクセスされるディレクトリが一つなので、セキュリティを確保しやすい。

      • 欠点
        ・各ユーザが自由に自分のWEBページを持つことが出来ない。
        ・管理者がユーザのWEBページを登録しなければならない。

    2. ユーザのホームディレクトリ以下にWEBページをおく
      ユーザディレクトリ(UserDir)に相対ディレクトリを書きます。例えば:
      UserDir web
           

      同じく、ユーザ"usagi"がURL:"http://www.galaxy.org.jp/~usagi"でホームページを公開する場合、 "usagi"のホームディレクトリ以下にサブディレクトリ./webを作り、 そのサブディレクトリ以下にホームページであるindex.htmlファイルをおきます。
      つまり、以下の対応が成り立ちます:
      /$HOME/usagi/web/index.html <----> http://www.galaxy.org.jp/~usagi/index.html
      注: $HOMEは各システムのユーザホームディレクトリです。
      この方法は、"/etc/passwd"ファイルを利用して各ユーザのホームディレクトリを得るので、 ユーザアカウントを持っているユーザ以外WEBページを公開することは出来ません。
      この方法の利点と欠点を挙げます:
      • 利点
        ・各ユーザが自由に自分のディレクトリ以下にWEBページを持てる。
      • 欠点
        ・WEBサーバにユーザアカウントを作らなければならない。
        ・外部からユーザのディレクトリにアクセスされるので、セキュリティ上問題がある。




    ここでは、主にセキュリティ上の観点からユーザWEBページ用ディレクトリ以下にWEBページをおくことにします。

    以下に今回の例を示します。

    (19行目)	DocumentRoot "/usr/local/etc/httpd/htdocs"
    
    (24行目)	UserDir "/usr/local/etc/httpd/users"
    
    (158行目)	Alias /icons/ "/usr/local/etc/httpd/htdocs/icons/"
    
    (163行目)	ScriptAlias /cgi-bin/ "/usr/local/etc/httpd/htdocs/cgi-bin/"
    

    srm.confの変更例



3.4 運用

    3.4.1 WEBページ

    まずはWEBページを書きましょう。

    3.4.2 起動と停止

    1. 手動で起動、停止させる
      apache-1.3.1からインストールディレクトリ以下の./sbinに "apachectl"というスクリプトが用意されています。
      起動するときには"start"オプション、停止するときには"stop"オプションを つけて実行して下さい。
      インストールディレクトリが/usr/local/apacheの場合、次のようにして起動、停止します。
        % /usr/local/apache/sbin/apachectl start ;起動

        % /usr/local/apache/sbin/apachectl stop ;停止

    2. boot時に自動的に起動させる
      boot時に起動できるようにディレクトリ/etc/rc2.d/以下に次のファイル"S99apache"をおきます。
      #!/sbin/sh
      #
      # start-up and stop script for apache
      # 
      # Usage: S99apache {start|stop}
      #
      
      PATH=/usr/bin:/bin
      
      case $1 in 
      'start')
      	if [ -f /usr/local/apache/sbin/apachectl ]; then
      		/usr/local/apache/sbin/apachectl start; 
      		echo "httpd (apache) started.";
      	fi	
      'stop')
      	if [ -f /usr/local/apache/sbin/apachectl ]; then
      		/usr/local/apache/sbin/apachectl stop; 
      		echo "httpd (apache) stoped.";
      	fi	
      *)
      	echo "usage: /etc/rc2.d/S99apache {start|stop}"
      esac
      

      /etc/rc2.d/S99apache



3.5 参考サイト&参考文献

    3.5.1 参考サイト

    apacheのオリジナルサイトは以下の通りです。
    http://www.apache.org

    3.5.2 参考文献

    apacheの特徴の一つに、機能をモジュールとして組み込めることがあげられます。

    特に"mod_perl"はperlで記述されたCGIプログラムをを含むWEBページが数多くある場合に有効です。 通常ならCGIプログラムを実行する際には処理の重いperlインタプリタを逐次起動しなければなりませんが、 apacheに"mod_perl"モジュールを組み込んでおけばそれがCGIプログラムを実行するので、CGI処理がかなり軽くなるようです。

    以下に"mod_perl"の詳細な説明があります。

    ・UNIX MAGAZINE 98.1 WWWサーバの育て方 mod_perl (p.p.46-55)
    ・UNIX MAGAZINE 98.4 WWWサーバの育て方 mod_perl (p.p.44-49)
    ・UNIX MAGAZINE 98.8 WWWサーバの育て方 mod_perl (p.p.73-78)


home |index |contents |next |previous