NetBSD / PC-98 Information
for 9821 note user




Page 6: Apache the web server



■Apacheのセットアップ ◆Apacheソースの入手
◆インストール情報
◆備忘録:構築事例
◆手順1:apache のmakeまで
◆手順2:証明書作成
◆手順3:PHPインストール
◆備忘録:設定例
◆PHPインストールの補足

【参考文献】
(1)


◆Apacheソースの入手

(工事中)

このへんからソースを入手。
  ・日本 Apache ユーザー会
  ・modssl.org

mod_sslはapacheのバージョンにあったものが必要になります。




◆インストール情報

(工事中)

後で書きます。



◆備忘録:構築事例

apacheのインストール手順(configureオプションなど)は目的によって様々なので、
他人の情報をそっくり真似するケースはほとんどありません。

ここで記載する手順例は、以下のようなサーバーを構築した場合の(個人的な)備忘録です。

  ・mod_ssl を使う
  ・PHP4 モジュールを使う
  ・その他の設定はデフォルトで

PHP4のインストールは、apacheインストール後にモジュールの追加という形で実施します。

以前に同じ環境を構築したときは、PHP と mod_ssl を apacheに静的に組み込んでインストールする方法を
とったのですが、はっきり言って大変でした(汗)。

ただし、動作速度は、静的に組み込んだほうが速い(はず)です。 つまりPHPをメインで使用するWebサーバーなら
インストールが面倒でも そうすべきなのですが、個人サーバーや、後でPHPの設定を変更して再コンパイル
する可能性がある場合はモジュール追加形式をとったほうがラクでしょう。



◆手順1:apache のmakeまで

今回の事例では、全体的なインストール手順は次のようになります。

 (1) apache を一度 configureする。
 (3) mod_ssl を configure する。
 (4) apache を make する。
 (5) ssl証明書をつくる。
 (6) apache を make install する。
 (2) PHP を configure, make, make install する。

まずは、apache を configure します。
今回の設定は、モジュール使用を指定した以外は デフォルトのままです。

 # tar -xvzf apache-1.3.27.tar.gz     (普通はrootでやらないかも。)
 # cd apache-1.3.27
 # ./configure --enable-module=so
 configureの後、ついうっかりmakeしそうになりますが、それは後で実行します。

続いて、mod_ssl の configure を実行します。 実際には、mod_ssl のパッチが
apacheにあたる、という形になります。

 # tar -xvzf mod_ssl-2.8.12-1.3.27.tar.gz
 # cd mod_ssl-2.8.12-1.3.27
 # ./configure --with-apache=../apache_1.3.27 (←apacheのソースの場所を指定) \
 #       --enable-shared=ssl --with-ssl=/usr/local/ssl (opensslがインストールしてある場所を指定)

 無事 configureが完了すると、続いて実行するべきコマンドが表示されるはずです。

続いて、apache を make します。 特に問題はないでしょう。

 # cd apache-1.3.27 (apacheのソースを展開した場所)
 # make



◆手順2:証明書作成

apache の make が完了したら、証明書作成を実行します。
個人用サーバーなら、普通は TYPE=testのままでOKでしょう。

#make certificate

コマンドを実行するとサーバー情報(国名とか)を聞かれます。
TYPE=testであれば、特に深く考えず「JP」とか「Hokkaido」とか入力すればOKです。
最後にパスフレーズを入力すれば、暗号の秘密鍵が作成されます。


さて、ここまで完了すれば、あとは

#make install

で apache のインストールは完了です。

一般には httpd.conf を修正する必要がありますが、とりあえず動作確認だけなら
そのまま起動してみてかまわないでしょう。

#/usr/local/apache/bin/apachectl startssl

Enter pass phrase: (パスフレーズを入力する)

/usr/local/apache/bin/apachectl startssl: httpd started と表示される(無事起動すれば)

無事起動したら、他のマシンからアクセスしてみて、おなじみのトップページが
見れればOKです。



◆手順3:PHPインストール

PHPは、日本語オフィシャルサイトで完全な日本語マニュアルを見ることができます。
今回は 以下のページを参考にインストールを行いました。

PHPマニュアル-インストール-Apacheサーバ

あ。当然ですが... apache はインストール済みなので、上記のページのapacheインストール部分は読み飛ばします(汗

今回の構築環境の場合では、モジュールとしてインストールするために、
--with-apxs=(apxs のパス) オプションを設定してやります。

 #cd php-4.3.1
 #.configure --with-pgsql --enable-ctype --enable-mbstring --with-apxs=/usr/local/apache/bin/apxs --enable-trans-sid

↑上記のオプションでは、apache以外の設定として、postgresqlを(デフォルトpath設定で)使用し、
また マルチバイト文字関数を扱うためのプションなどを指定しています。

configure オプションの詳細については、公式ページに日本語ドキュメントがあります。

あとは make と make install です。
configure さえ問題なく出来ていれば、特に注意点はありません。



◆備忘録:設定例

今回構築したWebサーバーは、外部に公開する本格的なものではなく、
CGIスクリプト動作確認や、Pukiなどで自分用のメモボードを構築するためのものです。

したがって、apacheの設定に関して ほとんど変更の必要はないのですが、
何箇所か httpd.conf をカスタマイズしたところを列挙すると...

 ・AddHandler cgi-script cgi のコメントをはずして .cgi 拡張子をCGI処理させる
 ・AddType application/x-httpd-php .php という行を追加して( #Document Types の下 ) .php拡張子をphpとして処理させる
 ・DirectoryIndexes に index.htm index.php を追加 (これは好みのもんだいですね〜 index.htmlだけでよければ変更不要です)
 ・UserDir設定のディレクティブのコメントを外し、ExecCGIを設定する。
  <Directory /home/*/public_html >
   ・・・略
   Options ExecCGI MultiView ・・・
   ・・・
  </Directory>

あとは、マシンスペック相応に StartServers、MinSpareServers の数を少し減らしたりとかしました。

ちなみに、UserDirの設定は http://xxxxx/~(ユーザー名)/ というURLを使うためのものなので、
ユーザーディレクトリへhtmlファイルを置く予定がなければ 変更する必要はありません。



◆PHPインストールの補足

補足というより、いつもの備忘録なのですが...

少し本格的にphpを利用する環境を作ろう!と意気込んで、
今年(2004年)のゴールデンウィークは phpの再インストールをしてました。
(雨が降ってたのでどこも行かなかっただけなんですけどね)

とりあえず、次の4点が目標です。
・4.3系の最新バージョンphp-4.3.6を入れる
・PEARを使えるようにする(といっても、これは標準で4.3.6に入ってます)
・PDFライブラリも使いたい
・mcrypt関数も使いたい

これらの機能を利用するためには、あらかじめ以下のライブラリが必要です。

PDFlib および libjpeglibtiff
libmcrypt

これらのインストールについては 特に難しい点はなく、パッケージはpkg_addで、
ソースは ./configureからmake、make installで問題ありませんでした。

今回はまったのはここから、phpのmakeのところです。
まず、makeの前のconfigureについては、特に問題はありませんでした。
configureオプションとしては、以下のような感じです。

 % ./configure --with-pgsql --enable-ctype --enable-mbstring \
 % --with-apxs=/usr/local/apache/bin/apxs --enable-trans-sid \
 % --with-zlib --enable-calender --with-mcrypt=/usr/local \
 % --with-pdflib=/usr/local --with-jpeg-dir=/usr/pkg \
 % --with-tiff-dir=/usr/pkg --with-zlib-dir=/usr --with-pear

ところが、問題はこのあと。

makeを実行すると、途中でエラーになってmakeが完了しません。
mcrypt.cのコンパイルで記号定数が未定義のようなエラーが出ており、
最初は、ヘッダファイルへのincludeパスが通ってないのかと思ったのですが、
パスを確認してやり直してみてもうまくいかず、どうやら違う原因のようです。

改めてエラーメッセージと、エラーが起きているソースを確認し、
さらに mcrypt.hの内容と見比べてみると...
どうやら libmcryptのバージョンの認識が間違っていて、旧バージョンの
ヘッダを期待するようなコードが実行されているらしいことがわかりました。

具体的には...今回使用している libmcryptのバージョンは 2.5.7なのですが、
php-4.3.6のconfigureではlibmcryptのバージョンチェックがうまく動作せず、
バージョン2.2系(本当は バージョン2.4系)と認識されているようです。

結局のところ、configureでdefineされ、mcrypt.c と php_mcrypt.h で使用されている
記号定数について、 HAVE_LIBMCRYPT22 が 1(true) に defineされているところを
HAVE_LIBMCRYPT24 がtrueになるように直せばいいのだろう、とあたりをつけ、
それぞれのファイルの先頭付近に下記の行を追加しました。

#ifdef HAVE_LIBMCRYPT22
#undef HAVE_LIBMCRYPT22
#endif

#ifdef HAVE_LIBMCRYPT24
#undef HAVE_LIBMCRYPT24
#endif
#define HAVE_LIBMCRYPT24 1

本当はconfigureスクリプトの方を修正するか、libmcryptのバージョンを2.4.xに下げるのが
安全な対処法だろうと思うのですが...

とりあえず、これでmakeは無事成功し、インストールを完了する事ができました。
あとは、動作確認をするだけです。 ...動かなかったりして(汗;



情報をお持ちでしたらぜひ lazylico(あっとマーク)msb.biglobe.ne.jp まで!
m(_ _)m