SE&ビジネスパーソンとしてお勉強中なブログ

スポンサーサイト

--/--/-- -- [Edit]

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Apache2をコンパイルしてインストールする [Linux(Debian)][Apache2]

2008/02/10 Sun [Edit]

今日の目標:DebianにApache2をコンパイルしてインストールする。

OS:Debian GNU/Linux 3.1(coLinux)
Apache:2.0.X


・apt-getからのインストールだと最新のモジュールではなかった。
 (最新を入れる方法はあるのでしょうけれども)
・設定ファイルの位置や起動コマンドの名前が一般的なものとは異なる。
 (httpd.conf→apache2.conf(Debian)だったり、まぁ大した問題ではないのだけれども)




0.Apache2(パッケージ)をアンインストール
 以前に、apt-getからインストールしたapache、apache2をアンインストール。

# apt-get remove apache2
# dpkg -l | grep apache
rc apache 1.3.33-6sarge3 versatile, high-performance HTTP server
ii apache-common 1.3.33-6sarge3 support files for all Apache webservers
ii apache2-common 2.0.54-5sarge2 next generation, scalable, extendable web se
ii apache2-mpm-wo 2.0.54-5sarge2 high speed threaded model for Apache2
ii apache2-utils 2.0.54-5sarge2 utility programs for webservers

 うーん。なんか色々残っています。
 # dpkg -P apache XXXX
 で、地道にアンインストールしていきました。
 「依存関係の問題により~」とかメッセージが出てきたら、原因になっているパッケージを先にアンインストールしましょう。
 「ディレクトリ`XXXX'が空でないため削除できませんでした。」と出たら、手動で削除しましょう。



1.Apache2をインストール


さて、ここからが本題です。
参考URL : Compiling and Installing - Apache HTTP Server

(1) ソースダウンロード&解凍
 Download - The Apache HTTP Server Project
 httpd-2.0.63.tar.gzをDL。
 

 解凍して、移動
$cd /home/apache2/work
$tar zxvf httpd-2.0.63.tar.gz
$cd /home/apache2/work/httpd-2.0.63


(2) ソースツリーを設定
 configure - Configure the source tree - Apache HTTP Server

 オプション書式抜粋
-------------------------------------------------------------------
Optional Features

These options are used to fine tune the features your HTTP server will have.
General syntax


Generally you can use the following syntax to enable or disable a feature:

--disable-FEATURE
 Do not include FEATURE. This is the same as --enable-FEATURE=no.

--enable-FEATURE[=ARG]
 Include FEATURE. The default value for ARG is yes.

--enable-MODULE=shared
 The corresponding module will be build as DSO module.

--enable-MODULE=static
 By default enabled modules are linked statically. You can force this explicitly.

-------------------------------------------------------------------

コンパイル時にデフォルトで組み込まれるモジュール(Modules enabled by default)と、
組み込まれないモジュール(Modules, disabled by default)があります。
他にも開発者向けなどあります。

デフォルトで組み込まれるモジュールで、組み込みたくない場合は、
--disable-XXX(XXXはモジュール名)とします。

逆にデフォルトで組み込まないけど組み込みたい場合は、
--enable-XXX(XXXはモジュール名)

DSO(Dynamic Shared Object)としてビルドしたい場合は、
--enable-XXX=sharedとします。
sharedの指定をしなかった場合は、staticとなります。



今回は、いくつか追加するだけです。
(敢えてdisableにするものは無い。)

以下の2つ
--enable-so
--enable-rewrite

mod_so
mod_so - Apache HTTP Server

動的共有オブジェクト (DSO) 機構により、実行時にApache にモジュールを読み込ませることができます。
通常、拡張子は.so

これを組み込んでおけば、大抵のモジュールは動的に組み込めると思います。
逆にmod_soを組み込んでおかないと、いちいちapacheのリコンパイルが必要になってしまいます。

mod-rewrite
mod_rewrite - Apache HTTP Server
Apache module mod_rewrite
Apache URL Rewriting Guide

リクエストされたURLを書き換えたりできるようです。
http://host/a.htmlというリクエストがあったら、http://host/a.cgiに書き換えてcgiを呼ぶとか。

余談ですが、mod-sslを静的にリンクしようとしたら下記のようなエラーが出てしまって、
面倒くさい感じになってしまったので、後で調べます^^

make[2]: Entering directory `/home/apache2/work/httpd-2.0.63/srclib/pcre'
Makefile:7: /build/ltlib.mk: そのようなファイルやディレクトリはありません
make[2]: *** ターゲット `/build/ltlib.mk' を make するルールがありません。中止。
make[2]: Leaving directory `/home/apache2/work/httpd-2.0.63/srclib/pcre'
make[1]: *** [all-recursive] エラー 1
make[1]: Leaving directory `/home/apache2/work/httpd-2.0.63/srclib'
make: *** [all-recursive] エラー 1



長くなりましたが、configure実行

$ ./configure --enable-rewrite --enable-so
prefixを指定しなければ/usr/local/apache2にインストールされます。


(3) ビルド

$ make

「`local-all' に対して行うべき事はありません。」というメッセージが出ましたが、
特に気にする必要の無いメッセージらしいです。


(4) インストール
$ su root
#meke install
Installing build system files
make[1]: Leaving directory `/home/apache2/work/httpd-2.0.63'



2.ブラウザから確認

とりあえず起動してみる
#./apachectl start
httpd: Could not determine the server's fully qualified domain name, using 192.168.20.20 for ServerNam

ServerNameを定義しておかないと上記のようなメッセージが出てしまうようです。
/usr/local/apache2/conf/httpd.confを編集し、「#ServerName www.example.com:80」の下あたりに「ServerName 192.168.20.2」を追加します。
#vi httpd.conf

#ServerName www.example.com:80
ServerName 192.168.20.20

再起動してメッセージ確認
#./apachectl restart

ブラウザから http://192.168.20.20/ にアクセス。

URLはインストールしたホストね。
apacheの画面が出れば成功。


3.Apacheの自動起動設定


(1)自動起動スクリプトの作成
 vi /etc/init.d/httpd2

#!/bin/sh
case "$1" in
start)
echo "Starting Apache ..."
# Change the location to your specific location
/usr/local/apache2/bin/apachectl start
;;
stop)
echo "Stopping Apache ..."
# Change the location to your specific location
/usr/local/apache2/bin/apachectl stop
;;
graceful)
echo "Restarting Apache gracefully..."
# Change the location to your specific location
/usr/local/apache2/bin/apachectl graceful
;;
restart)
echo "Restarting Apache ..."
# Change the location to your specific location
/usr/local/apache2/bin/apachectl restart
;;
*)
echo "Usage: '$0' {start|stop|restart|graceful}" >&2
exit 64
;;
esac
exit 0


(2) パーミッション変更
# chmod 755 /etc/init.d/httpd2


(3) シンボリックリンク作成
# update-rc.d httpd2 defaults
Adding system startup for /etc/init.d/httpd2 ...
/etc/rc0.d/K20httpd2 -> ../init.d/httpd2
/etc/rc1.d/K20httpd2 -> ../init.d/httpd2
/etc/rc6.d/K20httpd2 -> ../init.d/httpd2
/etc/rc2.d/S20httpd2 -> ../init.d/httpd2
/etc/rc3.d/S20httpd2 -> ../init.d/httpd2
/etc/rc4.d/S20httpd2 -> ../init.d/httpd2
/etc/rc5.d/S20httpd2 -> ../init.d/httpd2

普通にln -s /etc/init.d/httpd2 /etc/rc2.d/S20httpd2でも良いですが、
コマンドupdate-rc.d httpd2 defaultsで各ランレベルにシンボリックリングを作成してくれるので便利です。

rc.d内のスクリプトは、先頭が"S"で始まる物が起動、"K"で始まる物が停止で、"S"や"K"の後に続く数字順に実行されます。
この数字は、他のスクリプトと被っていても大丈夫です。

これでリブートとかしてもApacheが起動されます。
# shutdown -r now


ランレベルの話はこちら
Debian リファレンス - Debian の基礎知識

別途、起動とランレベルの話はまとめてみようかと思います。


Prev
Debianの起動とランレベルの整理 [Linux(Debian)]
Top
SE&ビジネスパーソンとしてお勉強中なブログ
Next
DebianにApache2をインストール[Debian][Apache2]

Comments

 
 
 
 
 
 
 
  非公開コメント
 

Track Backs

TB URL 

Debianの起動とランレベルの整理 [Linux(Debian)]

目標:Debianの起動とランレベルの整理

Top
SE&ビジネスパーソンとしてお勉強中なブログ

ブログ内検索

カテゴリー

最近の記事

最近のコメント

最近のトラックバック

RSSリンク

Amazon

楽天 人気商品

なかのひと

iKnow

Dictationバッジ

合わせて

あわせて読みたいブログパーツ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。