- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

httpdって? Edit

クライアントからのhttp://で始まるURIに対する要求をサービスとして提供するプログラムです。
って、自分でも、なに言ってるかよくわからんです。
IEやmozillaを代表するのwebブラウザがあっても、html等の文章があっても、これがないと google も yahoo も、うちのwebページ(http://www.tobysoft.net/)が見られんのですよ。

apache Edit

今回は、httpdの中で一般的なapacheを入れてみます。

一応、OpenBSDにも付属していますが、これがまたいろいろ使いにくいのでありますよ。

そんなわけで、今回は自分で取ってきてインストールすることにします。

OpenBSDがデフォルトのapacheで行っているような設定に(wwwユーザーで動かすようにするとか)合わせる場合は、
HRK's OpenBSD Memo - Apache HTTP Server をインストールする
が参考になります。

指針 Edit

  • CGIは所有者の権限で動かす(suexecで)。
  • OpenBSDに習って、wwwユーザー、グループで実行する。
  • DSOを利用する。
  • インストール基本的に、デフォルトの/usr/local/apache以下に。
  • ログだけは、/var/log/apacheに。
  • ユーザーのディレクトリは、~/public_web/http とする。

DSOって、Windowsで言うDLLのことですな。

インストール Edit

JAPAN APACHE USERS GROUPのリンクをたどって、
アーカイブを持ってきて、解凍します。

cd /work
wget http://www.apache.jp/dist/httpd/apache_1.3.28.tar.gz
tar xvfz apache_1.3.28.tar.gz

configureで設定します。

./configure \
  --enable-suexec \
  --suexec-caller=www \
  --suexec-docroot=/home \
  --suexec-userdir=public_web/http \
  --runtimedir=/var/run \
  --logfiledir=/var/log/apache \
  --server-uid=www --server-gid=www \
  --enable-shared=max --enable-module=so

コンパイル、インストールします。

make
su
make install

設定 Edit

/usr/local/apache/conf/httpd.conf を設定します。

Port 80

ServerName (wwwサーバー名)

ServerAdmin (web管理者のメールアドレス)

DocumentRoot (/ で参照するディレクトリ) 

<IfModule mod_userdir.c>
   UserDir (ユーザーのディレクトリ)
</IfModule>

<IfModule mod_dir.c>
   DirectoryIndex index.html index.htm index.cgi index.php
</IfModule>

#CustomLog /var/log/apache/access_log common

CustomLog /var/log/apache/access_log combined

# Alias /icons/ "/usr/local/apache/icons/"

#Alias /manual/ "/usr/local/apache/htdocs/manual/"

#ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
 
AddHandler cgi-script .cgi

とかいろいろ。

各項目の詳しい内容はgoogleって下さい。

設定し終わったら、

/usr/local/apache/bin/apachectl configtest 

で、httpd.confの文法が正しいか確認します。

suexecの注意 Edit

どこかの大学の注意事項が参考になります。

suexecの権限問題を何とかしたい Edit

suexecを有効にした状態で、
DocumentRoot以下のユーザー権限が、apacheの起動ユーザーと異なる場合は、
CGIで不都合が起こります。
ユーザー権限が異なるので、ファイルに書き込めなかったりするわけです。

というわけで、VirtualHostでこれを回避します。

NameVirtualHost *

<VirtualHost *>
    ServerName www.hogemoge.com
    DocumentRoot (DocumentRootのディレクトリ)
    User (DocumentRootを持つユーザーの名前)
    Group (DocumentRootを持つユーザーのグループ)
</VirtualHost>
([2003/04/24 18:38:16]設定が違っていたので修正ヽ(´Д`)ノ )

ユーザーディレクトリ以外の www.hogemoge.com へのアクセスは、
Userで指定したユーザー権限でCGIが実行され、上手くいきます。

サブドメインの場合は? Edit

この方法を利用すると、webでサブドメイン(ユーザー名.hogemoge.comとか)を利用する場合も、正しくユーザー権限を設定できます。

しかし、これだと面倒です。ユーザーを追加する度に、httpd.confを編集して再起動しなくてはならない……。なんとかならないのでしょうか……。

suexecを使わない(=ユーザー権限を気にする必要がない)場合は、
URLの変換を使えば、自動的に対応できるのですが……。

まあ、とりあえず、手動でもいいというのであれば、

<VirtualHost *>
    ServerName (ユーザー名).hogemoge.com
    DocumentRoot (ユーザーの公開用ディレクトリ)
    User (DocumentRootを持つユーザーの名前)
    Group (DocumentRootを持つユーザーのグループ)
</VirtualHost>

という形で設定します。

もちろん、実際にはこれだけでは駄目で、DNSでユーザー名をwebサーバーのマシンに設定しておいてください。


  • 1.3.28に対応 -- TOBY 2003-07-22 (火) 19:34:47


Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2004-12-15 Wed 06:16:17 JST (4662d)