[ TOP ]
2004/3/22

HTTP

HTTP

上へ
  HTTP

ホームページを作るには、これが不可欠ということで入れてみます。
まぁ、入ったからこのサイトが見れてる訳で。(笑)

これも、Red Hat社から httpd をダウンロードしてインストールします。
httpdの中身は、Apacheです。(^^;;

今回は単純に rpm -ivh *.rpm ではなく、httpd-.src.rpm の形式になっているソースの方をダウンロードして作業を行います。
理由は、そのままだとユーザーのホームディレクトリでは suExec がきかないためです。

  1.   とりあえず、ダウンロードしたソースファイルをインストール(?)

    # rpm -ivh httpd-<version>.src.rpm

  2.   インストールしたら、設定を変更

    # 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ユーザーでもホームページを公開できるようにしてます。
    必要がなければ、デフォルトのままでも良いと思います


  3.   変更したspecファイルを元にrpmを作成

    # rpmbuild -ba /usr/src/redhat/SPECS/httpd.spec

    足りない rpm があったら、適宜Red Hat社からダウンロードしてインストールしてください。
    私の環境では、xmlto, docbook-dtds, docbook-xsl, passivetex, tetexなどが要求されました。

  4.   作成した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"
    だと失敗です。最初からやり直してください。

  5.   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>

  6.   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)

  7.   httpdの自動起動設定

    # chkconfig httpd on

  8.   ユーザーホームページ公開準備

    各ユーザーのホームディレクトリにホームページ公開用のディレクトリを作成します。
    ついでに、ホームディレクトリのパーミッションも変更しておきます。
    (例)hogeというユーザーを作成します
    # useradd -g user_group hoge
    # cd /home
    # chmod 2711 hoge
    # su - hoge
    $ cd
    $ mkdir public_html

  9.   実際にファイルを置いてアクセス

    それでは、ホームページが見れるか確認します。
    適当に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なりを書いてアップしていきましょう!