Apache2 とPerl の設定



このページでは Apache2 のインストールと設定を掲載します。
Apache と Apache2 の違いは、マルチスレッドになってサーバーへの負荷が軽くなった事や、IPv6にサポート、モジュール機能の強化などがあります。
今回は”tomcat-4.1.31”の連携を前提にコンパイルを行います。作業は Apache1.3 をインストールした時とほとんど同じなので、ついでに Perl の設定も一緒にこのページで掲載します。
 gcc, make などのパッケージが必要になります。

≪ 項目 ≫
1.Apache2.0 のコンパイルとインストール
2.Apache2.4 のコンパイルとインストール
3.httpd.confの設定
4.Perlのコンパイルとインストール
5.Perlの設定
6.エラーの覚書




 ◆ ダウンロード

 まずはApacheをダウンロードしてきます。Apache Web サイトは下記のとおりです。

 http://www.apache.org/

ダウンロードのページから最新版を入手してきます。このページではApache2のインストールなので、2004/10/16 時点での最新版の httpd-2.0.52.tar.gz をダウンロードしました。

 ◆ 解凍

 ダウンロードしてきたApacheを解凍します。まずはWebサーバーにアップロードしてから、”/usr/local/src”にコピーします。コンパイル作業は全て”/usr/local/src”の中で行います。
 以下のコマンドを実行して解凍してください。

 # tar zxvf httpd-2.0.52.tar.gz

 アーカイブの解凍ができたら”/usr/local/src/httpd-2.0.52”というディレクトリィができているの確認してください。

 ◆ コンパイル

 アーカイブの解凍が終わったら、コンパイル作業を行います。コンパイルとインストール作業は”/usr/local/src/httpd-2.0.52”のディレクトリィの中で行います。
 Apache1.3 と同様、最初に”./configure”というスクリプトを実行してコンパイル環境を整えます。

 Apache1.3 の場合は Tomcat の連携の為にDSO対応させましたが、Apache2 になってモジュール機能の強化のおかげか、今回は気にしなくて良いようです。

 # ./configure
 ( SSL対応などは --enable-ssl でサポートしてくれる様です。”./configure --help”で確認してください。)

何もエラーが出力されなかったら、コンパイルとインストールを実行します。

 # make
 # make install

ここまででエラーが無ければ”/usr/local/apache2”というディレクトリィが作成されています。Apacheが起動するか確認してください。
 Apacheの起動の仕方は以下コマンドです。( Apache1.3 と変わってません。)

 # /usr/local/apache2/bin/apachectl start

 起動したら、早速クライアントのブラウザを起動して、サーバーへアクセスしてみます。アドレスの箇所に”http://(サーバーのIPアドレス)”を入力してApacheの画面が出力されればOKです。




 こちらは Apache 2.4 です。Plamo Linux にて動作確認をしています。

 ◆ ダウンロード

 まずはApacheをダウンロードしてきます。Apache Web サイトは下記のとおりです。

 http://www.apache.org/

ダウンロードのページから最新版を入手してきます。 このページではApache 2のインストールなので、2013/1 時点での最新版の httpd-2.4.3.tar.gz  をダウンロードしました。

 ◆ 注意点

 Apache 2.4 は上記のファイル単体ではコンパイルに失敗するので以下のファイルもダウンロードして置いてください。
 2つともhttp://www.apache.org/のサイト内にあると思います。
 必要なのは、apr と apr-util です。 Plamo Linux ではインストールオプションとして選択可能みたいですが、どこにファイルが格納されているか場所がわからなかった事と、version が分からなかったのでダウンロードしてきました。

 ・apr-1.4.6.tar.gz
 ・apr-util-1.5.1.tar.gz

 Apache 2.4 以前までは同封されていたようですが、なぜか 2.4 から別々に・・・
 Perlを動作させたい場合は、PCRE(Perl Compatible Regular Expressions)というのが必要だそうですが、今回は Perl の設定していません。
 PCREのサイトは以下だそうです。(直リンクはしていません)

 http://pcre.org/

 ◆ 解凍

 ダウンロードしてきたApacheを解凍します。 まずはWebサーバーにアップロードしてから、”/usr/local/src”にコピーします。 コンパイル作業は全て”/usr/local/src”の中で行います。この辺りは Turbo Linux と一緒ですね。
 以下のコマンドを実行して解凍してください。

 # tar zxvf httpd-2.4.3.tar.gz
 # tar zxvf apr-1.4.6.tar.gz
 # tar zxvf apr-util-1.5.1.tar.gz

 それぞれアーカイブの解凍ができたら、以下の3つのディレクトリィができているはずです。

 ・/usr/local/src/httpd-2.4.3
 ・/usr/local/src/apr-1.4.6
 ・/usr/local/src/apr-util-1.5.1

 まずは”apr-1.4.6”からコンパイルしていきます。

 cd ./apr-1.4.6    <<-- 解凍したディレクトリィにカレントを移動させる
 ./configure --prefix=/usr/local/src/apr-1.4.6
 make
 make install

 configure コマンドの --prefix に指定するのは解凍したディレクトリィを指定します。
 make してインストールしてエラーが無ければ、次は apr-util をコンパイルします。

 cd apr-util-1.5.1    <<-- 解凍したディレクトリィにカレントを移動させる
 ./configure --prefix=/usr/local/src/apr-util-1.5.1 --with-apr=/usr/local/src/apr-1.4.6
 make
 make install

 configure コマンドの --prefix に指定するのは解凍したディレクトリィを指定し、--with-apr で先ほどの apr のディレクトリィを指定します。

 そして最後に Apache 本体をコンパイルします。 ディレクトリィをApache2.4 を解凍した場所に移してから作業を行います。
 cd httpd-2.4.3    <<-- 解凍したディレクトリィにカレントを移動させる
 ./configure --prefix=/usr/local/src/httpd-2.4.3 --with-apr=/usr/local/src/apr-1.4.6 --with-apr-util=/usr/local/src/apr-util-1.5.1
 make
 make install

 configure を実行する際、--prefix、--with-apr、--with-apr-util この3つは指定しないとエラーとなります。
 --prefix にはApache2.4 を解凍した場所を指定します。 あと2つ --with-apr、--with-apr-util は、先ほどコンパイルしたディレクトリィを指定します。
 これであとは make してあげれば Apache2.4 はインストールできます。

 Apache2.4 の起動のさせ方は以下の様にします。

 ./httpd &

 終了させる場合は kill コマンドでプロセスIDを指定して終了させましょう。





 ◆ httpd.confの設定

 Apache2も設定ファイルは”/usr/local/apache2/conf”の直下にある”httpd.conf”です。
 Apache2 しかない設定項目がいくつかありますが、基本的に標準のままで大丈夫です。
 主な設定項目は Apache1.3 と同じです。
 また Apache2.4 でも特に大きな違いはなく、同じような設定で動作する事を確認しています。
 Apacheは”/usr/local/apache2/conf”の直下にある”httpd.conf”と言うファイルに、動作上に必要な設定がほとんど記述されています。 インストールした時点で最適に設定されているのでそのままでも動作しますが、その中でも特に内容を確認したほうが良い行を以下にあげます。


項目書式説明
ServerRoot ServerRoot << ディレクトリィ名 >> Apacheの設定ファイルの置き場所を指定します。上記のやり方でインストールした場合は、デフォルトでは”/usr/local/apache/”となっています。インストール先を変更してなければ特に変更する必要は無いでしょう。
ServerAdmin ServerAdmin << 管理者用のメールアドレス >> Apacheのエラーページが表示された時に、連絡用メールとして表示されます。
(HTTPエラーの403や404などの標準のエラーページなどで表示されます。)
DocumentRoot DocumentRoot << HTMLデータを起きたいディレクトリィ >> HTMLデータを置きたいディレクトリィを指定します。(末尾に”/”は付けないでください。)
DirectoryIndex DirectoryIndex << HTMLファイル >> このWEBサーバーにファイル名無しでサーバー名のみでアクセスされた時、デフォルトで表示するHTMLファイルを指定します。
User User << ユーザー名(Linuxのユーザー) >> Apacheが処理を行うユーザーを指定します。
Timeout Timeout << 秒 >> 待機時間を秒で指定します。
MaxClients MaxClients << クライアント数 >> Apacheに接続する最大クライアント数を指定します。


 DocumentRootを変更した場合、ディレクトリィのアクセス制御が無いので追加する必要があります。以下の様に記述してアクセス制御をしてください。

<Directory "HTMLデータを置くディレクトリィ名">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny          <--apache 2.4 では不要みたいです。
  Require all granted        <--上のOrder の代わりに apache 2.4 ではこれを使用します。
  Allow from all
</Directory>

 Options 制御オプションと呼ばれるパラメータです。上の例の場合はCGIなど動作しない設定になっています。以下に説明を掲載します。

option説明
None制御オプションを全て無効にします。
All制御オプションを全て有効にします。
ExecCGICGIプログラムを許可する。
IncludesSSIを許可する。
IncludesNOEXECSSIを許可するが、#exec, #cmd, #includesによるプログラム実行は禁止にする。
Indexesディレクトリィインデックスの作成を許可する。
MultiViewsContent negotiated MultiViewsを許可する。
FollowSymLinksシンボリックリンクがある場合に、それを辿る事を許可する。
SymLinksOwnerMatchシンボリックリンクがある場合に、それを辿る事を許可する。ただしリンク先が同じ所有者の場合のみ

 AllowOverride はアクセスコントロールファイル(標準では ./htaccess )の設定の変更が可能になりますが、動的に変更可能であるとセキュリティ上好ましくないので None ままにしておきます。
 Order は評価順の指定、allow はアクセス許可リストの指定です。特に上記の例と同じで問題無いでしょう。
  Apache 2.4 には Order が不要になったようです。(記述しててもエラーにならないみたいです。)代わりに Require を指定します。all granted で、全ての端末からのアクセスを許可し、all deny で拒否する事が可能です。 この記述が抜けていると 403 が返ってしまします。

 DocumentRoot や各ディレクトリィのアクセス制限などの設定します。
 設定が完了したのであれば、Apache を起動させて動作確認してください。


 ◆ CGI、SSIの設定

 次にCGIが動作するように設定します。”httpd.conf”の中を以下の様に編集します。

 ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
            ↓
 ScriptAlias /cgi-bin/ "<< CGIプログラムを置いているディレクトリィ >>"

 DocumentRoot を変更して、HTMLデータの置き場所が標準と違う場合、変更します。

<Directory "<< CGIプログラムを置いているディレクトリィ >>">
  AllowOverride None
  Options FollowSymLinks ExecCGI
  Order allow,deny
  Allow from all
</Directory>

 CGIプログラムを置くディレクトリィにもアクセス制限をかけます。

 AddOutputFilter INCLUDES .shtml
            ↓
 AddOutputFilter INCLUDES .shtml .html

 拡張子が .html でも動作するように設定します。



 ◆ 起動と停止

Apache2の起動と終了の仕方は以下の通りです。

 # /usr/local/apache2/bin/apachectl start  起動
 # /usr/local/apache2/bin/apachectl stop  停止


 ◆ 補足

 HTMLデータに以下の様に <meta> を使用して文字コードの設定をしていた場合

<meta http-equiv="content-type" content="text/html;charset=Shift_JIS">

 Apache2で動作すると文字化けする可能性があります。 これを回避するには <meta> での文字コード指定を外すか、以下の様に”httpd.conf”を編集します。

 AddDefaultCharset ISO-8859-1
       ↓
 AddDefaultCharset off

 それでもまだ文字化けしているようなら下の様に編集します。

 LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
             ↓
 LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
  ( ja を先頭に持ってきます。)

 Apache2.4 (Plamo Linux)では、特にこの設定はせずに表示できている事を確認しています。





 ◆ Perlのダウンロード

 Apache2 に対して Perl 設定します。Apache1.3 で使用した”mod_perl-1.0-current.tar.tar”ではなく( Apache2 には使えません。) ”mod_perl-2.0-current.tar.tar”をダウンロードしてきます。
 ちなみにここでは Apache 2.0 の設定であって、Apache 2.4 では試していません。
 ダウンロード先は mod_perl 同じく

 http://perl.apache.org/

 からダウンロードします。

  2004/10/17 時点での最新 Version は 1.99 です。


 ◆ 解凍

 ダウンロードしてきた mod_perl を”/usr/local/src”の直下にコピーをして、以下のコマンドを実行してアーカイブを解凍してください。

 # tar zxvf mod_perl-2.0-current.tar.tar

 すると”/usr/local/src/mod_per-1.99_14”というディレクトリィが作成されるので、カレントをそこに移動してコンパイル作業を行います。


 ◆ コンパイルする前に

 コンパイルに必要なファイルとして”libgdbm.so”というファイルが必要です。  Turbo Linux を通常インストールしていたら”/usr/lib/libgdbm.so.2.0.0”というファイルがありますので、 これにシンボリックリンクを使用して”/usr/lib/libgdbm.so”というファイルをリンクします。
 以下の様にして作成します。

 ln -s libgdbm.so libgdbm.so.2.0.0


 ◆ コンパイル

 mod_perl2 のコンパイルを行います。Apache2 が”/usr/local/apache2”にインストールされているとしたら、以下の様にコマンドを実行します。

 # perl Makefile.PL MP_INST_APACHE2=1 MP_APXS=/usr/local/apache2/bin/apxs
 # make
 # make test    <<--(1)
 # make install

 インストールする前に、(1)の”make test”を実行していますが、これはその時の環境でPerlの動作確認を行います。 絶対実行しないといけないわけではないのですが、動作エラーがあればここで表示されます。
 インストールが終わると”/usr/local/apache2/modules/mod_perl.so”というファイルが作成されているので、確認します。





 ◆ Perlの設定

 Apache2 の”httpd.conf”に、mod_perlのモジュールを組み込みます。
 引き続き、ここでは Apache 2.0 の設定であって、Apache 2.4 では試していません。
 ”httpd.conf”を編集します。 220行目辺りに # Dynamic Shared Object (DSO) Support と書かれている行があるので、その辺りに以下の様に追加します。

 LoadModule perl_module modules/mod_perl.so

 <IfModule mod_perl.c>
   Alias /perl/ << Perlプログラムを置くディレクトリィ >>
   <Location /perl>
      SetHandler perl-script
      PerlHandler Apache::Registry
      PerlSendHeader On
      Allow from all
      Options +ExecCGI
   </Location>
 </IfModule>


Apache2  Perl のインストールと設定については以上です。





Apache2でも、Apache1.3と同じようなエラーを確認しています。

configureコマンドで以下のようなエラーが出る

  Creating Configuration.apaci in src
  Configuration.tmpl is more recent than Configuration.apaci

これは”Configuration.tmpl”と”Configuration.apaci”の日付を比較した時のエラーなので、BIOSの時間がずれている可能性があります。


◆”httpd.conf”を設定してApacheを起動したが、403のエラーが出る

 ・アップロードしたファイルの権限を確認しましてください。権限が”755”ならエラーが起きないと思います。
 ・”DocumentRoot”を変更して、HTMLファイルの置き場所を変更した場合です。 ”httpd.conf”の”User”の初期設定は”nobody”です。 なので”nobody”ユーザーがアクセスできるディレクトリィを指定するか、 または”User”を”DocumentRoot”で指定したディレクトリィにアクセスできるユーザーに変更する必要があります。
 ホームディレクトリィ(各ユーザーの専用ディレクトリィ)の直下にHTMLファイルの置き場を作ってしまうと、 ”nobody”ではアクセスできないので、403のエラーが返ってきてしまいます。
 また Apache 2.4 には Order が不要です。Require の方を使用します。(403のエラーが返ってきてしまいます。)



(今回、Lab-Kageでは関係なかったので記載しませんが、kernel2.6の場合だと”selinux”が原因で403のエラーが返ってくるそうです。
”selinux”の止め方については、各自で調べてください。)


先頭に戻る Web設定のページに戻る TOPページに戻る