Apache2をコンパイルしてインストールする [Linux(Debian)][Apache2]
2008/02/10 Sun [Edit]
OS:Debian GNU/Linux 3.1(coLinux)
Apache:2.0.X
(最新を入れる方法はあるのでしょうけれども)
・設定ファイルの位置や起動コマンドの名前が一般的なものとは異なる。
(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
通常、拡張子は.so
これを組み込んでおけば、大抵のモジュールは動的に組み込めると思います。
逆にmod_soを組み込んでおかないと、いちいちapacheのリコンパイルが必要になってしまいます。
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 |
(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 の基礎知識
別途、起動とランレベルの話はまとめてみようかと思います。
Comments
Track Backs
TB URL
Debianの起動とランレベルの整理 [Linux(Debian)]
目標:Debianの起動とランレベルの整理




