[ TOP ]2004/3/22HTTP
HTTP- ホームページを作るには、これが不可欠ということで入れてみます。
まぁ、入ったからこのサイトが見れてる訳で。(笑)
これも、Red Hat社から httpd をダウンロードしてインストールします。
httpdの中身は、Apacheです。(^^;;
今回は単純に rpm -ivh *.rpm ではなく、httpd-.src.rpm の形式になっているソースの方をダウンロードして作業を行います。
理由は、そのままだとユーザーのホームディレクトリでは suExec がきかないためです。
とりあえず、ダウンロードしたソースファイルをインストール(?)
# rpm -ivh httpd-<version>.src.rpm
インストールしたら、設定を変更
# vi /usr/src/redhat/SPECS/httpd.spec
以下の2行を修正します
--with-suexec-docroot=%{contentdir} \
↓
--with-suexec-docroot=/home \
--with-suexec-uidmin=500 --with-suexec-gidmin=500 \
↓
--with-suexec-uidmin=89 --with-suexec-gidmin=89 \
fml CGIなどのためにvpopmailユーザーでもホームページを公開できるようにしてます。
必要がなければ、デフォルトのままでも良いと思います
変更したspecファイルを元にrpmを作成
# rpmbuild -ba /usr/src/redhat/SPECS/httpd.spec
足りない rpm があったら、適宜Red Hat社からダウンロードしてインストールしてください。
私の環境では、xmlto, docbook-dtds, docbook-xsl, passivetex, tetexなどが要求されました。
作成したrpmをインストール
まず、ファイルの確認
# ls -l /usr/src/redhat/RPMS/i386/*.rpm
現在インストールされているhttpdを確認します
# rpm -qa | grep httpd
httpd-2.0.40-21.9
rpmを確認しておいて削除します
# rpm -e --nodeps httpd-2.0.40-21.9
あとは通常通りインストールを行います
# rpm -ivh /usr/src/redhat/RPMS/i386/httpd-2.0.40-21.9.i386.rpm
インストールが終わったら確認しましょう。
# /usr/sbin/suexec -V
-------------------------------------
-D AP_DOC_ROOT="/home"
-D AP_GID_MIN=89
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=89
-D AP_USERDIR_SUFFIX="public_html"
-------------------------------------
こうなってればOKです。 -D AP_DOC_ROOT="/var/www/html"
だと失敗です。最初からやり直してください。
httpdの設定を変更httpd の設定は httpd.conf を編集します。
変更点と内容だけ羅列して行きます。
viで /検索文字 で目的の行を探して、編集を行ってください。
# vi /etc/httpd/conf/httpd.conf
ユーザーのホームページを公開可能にするため、コメントアウトを外します
UserDir public_html
ユーザーの public_html の条件を設定します。
エリアのコメントアウトをまとめて外します
<Directory /home/*/public_html>
</Directory>
コメントアウトを外した中の Options を修正します。
Options MultiViews SymLinksIfOwnerMatch ExecCGI IncludesNoExec
.cgi を有効にするため、コメントアウトを外します
AddHandler cgi-script .cgi
文字化け対策
jaが中程にあるので、一番前に持ってきます
LanguagePriority ja en da nl et fr de el it kr no pl pt pt-br ltz ca es sv tw
デフォルトの文字コードをコメントアウトします(EUC_JPに修正でもOKだと思います)
#AddDefaultCharset ISO-8859-1
suExecを動かすため、LoadModule郡の最後に追加します
つ〜か、--enable-suexec なら入ってるのがホントのような気がするが。。。。。。なんか違うのかな?(--;;
LoadModule suexec_module modules/mod_suexec.so
以下は、バーチャルホストの設定例です。
自分の環境に合わせて太字部分を修正してください
バーチャルホストを有効にします
NameVirtualHost 192.168.0.250
必要な数分、バーチャルホストを登録します
<VirtualHost 192.168.0.250>
ServerAdmin admin@umekawa.info
DocumentRoot /home/hoge/public_html
ServerName umekawa.info
SuexecUserGroup user_name user_group
ErrorLog /var/log/httpd/example-error_log
CustomLog /var/log/httpd/example-access_log common
</VirtualHost>
httpdの起動
# service httpd start
起動したら、suExec を確認します。
# tail /var/log/httpd/error_log
こんな行があればOKです
[Tue Mar 16 09:29:57 2004] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) httpdの自動起動設定
# chkconfig httpd on
ユーザーホームページ公開準備各ユーザーのホームディレクトリにホームページ公開用のディレクトリを作成します。
ついでに、ホームディレクトリのパーミッションも変更しておきます。
(例)hogeというユーザーを作成します
# useradd -g user_group hoge
# cd /home
# chmod 2711 hoge
# su - hoge
$ cd
$ mkdir public_html
実際にファイルを置いてアクセスそれでは、ホームページが見れるか確認します。
適当に2つほどファイルを置いてhtmlの表示とperl CGIのアクセスをテストしてみましょう。
--- index.html - 644 -----------------------
<HTML><BODY>
This is a pen.
</BODY></HTML>
--------------------------------------------
--- test.cgi - 700 -------------------------
#! /usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML><HEAD><TITLE>環境変数一覧</TITLE></HEAD>\n";
print "<BODY>\n";
print "<H1>環境変数一覧</H1><HR>\n";
print "<TABLE>";
print "<TR><TH>実行ユーザー</TH><TD>" . getpwuid($>) . "</TD></TR>\n";
foreach(sort keys %ENV){
print "<TR><TH>$_</TH><TD>$ENV{$_}</TD></TR>\n";
}
print "</TABLE></BODY></HTML>\n";
--------------------------------------------
ファイルを置いたら、ブラウザから確認します。
http://umekawa.info/index.html
http://umekawa.info/test.cgi
それぞれが意図した通りに出力されていればOKです。以上で、HTTPサーバーの設定は終わりです。
あとは、自分の公開したいようにHTMLなりperlなりを書いてアップしていきましょう!