特に理由は無いんですがApache2.4のソースコードからのインストールをやってみますた。
インストールした環境
OS:CentOS 6.3 64bit
カーネルバージョン:2.6.32-279.11.1.el6.x86_64
本体:ThinkPadX61
gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC)
ノートパソコンはUPS内蔵で静かだしKVM不要だから便利ですね。
Apache2.4.3のダウンロード
以下のURLからダウソしました。
http://httpd.apache.org/download.cgi#apache24
httpd-2.4.3
wgetとかで適当に落とします。
先にPCREをインストールしておきます。
というのも、PCREが無いですと怒られたのですが、ソースから入れるのも面倒なのでyumでやってしまいます。
# yum install pcre-devel
ソースコードをダウンロードしておきます。
ダウソ先
http://apr.apache.org/download.cgi
apr-1.4.6
apr-util-1.5.1
ダウンロードした3つのソースコードを「/usr/local/src」に置きます。
tar.gzはtar zxvf なんとか.tar.gzで解凍してください
tar.bz2はtar jxvf なんとか.tar.bz2で解凍してください
# cd /usr/local/src
apr-1.4.6
apr-util-1.5.1
についてはコンパイルせずにhttpd-2.4.3/srclibに置くだけです。
# cd /usr/local/src/httpd-2.4.3
# cp -r /usr/local/src/apr-1.4.6 /usr/local/src/httpd-2.4.3/srclib/apr
# cp -r /usr/local/src/apr-util-1.5.1 /usr/local/src/httpd-2.4.3/srclib/apr-util
これで準備が整ったので恒例の./configureを実行できますが、せっかくのコンパイルですのでgccのオプションを指定します。
といっても-march=native使うだけですが。
-march=nativeはそのCPUに合ったコンパイルオプションを勝手に選んでくれる便利なコマンドです。
実際に何が選ばれるかはわからないので、確認するコマンドを探してきますた。
自宅鯖のCPU
Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz
コンパイルオプションの内容確認
# echo | gcc -E -v -O3 -march=native – 2>&1 | grep cc1
結果
-mcx16 -msahf –param l1-cache-size=32 –param l1-cache-line-size=64 –param l2-cache-size=4096 -mtune=core2
うーんわからん。
さっさとConfigureを実行します
# cd /usr/local/src/httpd-2.4.3 # CFLAGS="-O3 -Wall -march=native" CXXFLAGS="-O3 -march=native" ./configure --prefix=/opt/httpd2.4.3 --enable-ssl --enable-rewrite --enable-so --with-included-apr --with-mpm=worker # make -j5 # make install※エラーが出てもあきらめずに再挑戦すること
解説
1.configureの前にgccのオプションを宣言しています。
2.CFLAGSのオプションの-Wallはコンパイル時の警告を全て表示するオプション
3.configureオプションの–with-mpm=workerはマルチプロセス・マルチスレッドでApacheを動作させる設定
4.make -j5 は5スレッド使用してコンパイルしますよというオプションです。デュアルコアなんで3~5ぐらいが適当っぽい。
というわけで/opt/httpdにインストールされます。
シンボリックリンクを作っておきます
# ln -s /opt/httpd2.4.3 /opt/httpd
ServerNameを決めておきます
# vi /opt/httpd/conf/httpd.conf
元
#ServerName www.example.com:80
↓
ServerName www.example.com:80
デフォルトでインストールされているApacheが起動していない事を確認してから起動します。
# /opt/httpd/bin/apachectl start
# ps -aef | grep httpd
適当なwebブラウザで動作しているか確認します。
デフォルトの設定の場合は「/opt/httpd/htdocs」がドキュメントルートになります。
止めるとき
# /opt/httpd/bin/apachectl stop
起動スクリプトがないと面倒くさいので、起動スクリプトを設置してserviceコマンドから制御できるようにします。
面倒くさいというのは自宅鯖でも商用鯖でも致命的問題なので、いつもの起動コマンドを使えるようにします。
# cp /opt/httpd/bin/apachectl /etc/init.d/httpd2.4
起動スクリプトをいじります。
# vi /etc/init.d/httpd2.4
#!/bin/sh
#
# Licensed to the Apache Software~云々かんぬん
となっていますので以下のように書き換えます。
#!/bin/sh
# chkconfig: 345 85 15
#
# Licensed to the Apache Software~云々かんぬん
chkconfigに登録しますので、すでに同じ名前で登録されているか確認します。
# chkconfig –list httpd2.4
chkconfigに登録します。
# chkconfig –add httpd2.4
登録できたか確認します。
# chkconfig –list httpd2.4
httpd2.4 0:off 1:off 2:off 3:on 4:on 5:on 6:off
serviceコマンドで起動停止ができるか確認します。
# service httpd2.4 start
# service httpd2.4 stop
起動しておきます。
# service httpd2.4 start
適当なWebブラウザから対象のサーバーにアクセスして応答があるか確認してください。
動いていたら「It’s works」と表示されると思う。
何も動かないのでPHPとかインストールしないとダメですな。
●付録
CentOS標準のApacheと共存させたい場合。
標準のApacheに80番を渡して、ソースからコンパイルしたものに別のポートを割り当てればいいです。
具体的には、ソースからコンパイルしたApacheのhttpd.confのListenポートを変更します。
# vi /opt/httpd/conf/httpd.conf
Listen 80
↓
Listen 9080
書き換えたらhttpdの再起動をしてください。
# service httpd2.4 restart
これでTCP 9080番で待ち受けるようになります。
アクセスする場合は下記のようにWebブラウザに入力します。
http://192.168.1.1:9080
その昔(98年頃?)192.168.1.1は私の所有アドレスなので使用しないでください、訴えますとか痛い人がいたなぁとおもいだしますた。