カテゴリの投稿: » Apache

Apache2.2+PHP5.3+MySQL5.5環境でApacheが立ち上がらない

Written in 2011年03月23日 by シンプル・アイ社長 | コメントする( 0件 )

最近、Apache2.2+PHP5.3+MySQL5.5の構築をしました。何度もしていたので甘く見てたら、Apache起動でOKと表示されるものの実際には立ち上がっておらず、ログにもエラーが出ていなかったので、とても困りました。

おそらくopensslの複数バージョンの混在が原因ではないかと思います。RPM版のopenssl0.9.8eが入っており、別途ソースインストールで、/usr/local/openssl にopenssl1.0.0cを入れていました。

MySQL5.5では、コンパイル時にCmakeを使うようになり、設定方法が以前と変わっており、opensslのインストールPREFIXを指定できずに(方法があるのかもしれませんが、、、)、デフォルトのディレクトリ/usr からライブラリを組み込むようで、RPM版のopenssl0.9.8eが組み込まれました。

一方、PHPではopensslのインストールディレクトリを指定できるので、/usr/local/openssl のopenssl1.0.0cを組み込もうとしたところ、MySQL5.5からクライアントライブラリを組み込む指定もしていたので、MySQL5.5のopenssl0.9.8eとPHP5.3のopenssl1.0.0cがコンフリクトして「セグメンテーション違反」となって、コンパイルできなかった。

なので、opensslは複数バージョンのDSOモジュールがあると競合するようだ。仕方なく、PHPには、/usrのパスを指定してopenssl0.9.8eを組み込んだ。

さて、Apache2.2には、opensslのパス指定ができるので、/usr/local/openssl のopenssl1.0.0cを組み込んでいました。このアパッチにlibphp5.soを読み込ませるわけだが、そうするとApache2.2のopenssl1.0.0cと、PHP5.3およびMySQL5.5に組み込まれたopenssl0.9.8eがコンフリクトするのではなかろうか。PHPコンパイル時のPHP x MySQLのコンフリクトのようにエラーが出ればいいが、Apache起動時にエラーも吐かずに立ち上がらないという状況はいかにも困った。

これらのopensslコンフリクトの仮説をもとに、Apache2.2もopenssl0.9.8eを組み込んでコンパイルし直し、PHP5.3も同様にコンパイルしなおしたところ、動きました。。。。

Apache2.0で、mod_cacheを後から追加

Written in 2010年03月29日 by シンプル・アイ社長 | コメントする( 0件 )

ソースインストールしたApache2.0に後からmod_cache.so、mod_disk_cache.so、mod_file_cache.so、mod_mem_cache.soを後から追加する。

ソースディレクトリに行く。うちの例では以下の通り。

cd /usr/local/src/apache/httpd-2.0.61/modules/cache/

apxsコマンドで、モジュールをコンパイル&インストール

apxs -i -a -c mod_file_cache.c

ソースディレクトリに行く。うちの例では以下の通り。

cd /usr/local/src/apache/httpd-2.0.61/modules/experimental/

apxsコマンドで、モジュールをコンパイル&インストール

apxs -i -a -c mod_cache.c cache_util.c cache_storage.c
apxs -i -a -c mod_mem_cache.c cache_cache.c cache_hash.c cache_pqueue.c
apxs -i -a -c mod_disk_cache.c

「-c」オプションでモジュールのソースファイルを指定。
「-i」オプションでビルド完了後モジュールをモジュールディレクトリに移動。
「-a」オプションでhttpd.confにLoadModule文が1行が追加されます。

Apache2.0で、mod_proxyを後から追加

Written in 2010年03月29日 by シンプル・アイ社長 | コメントする( 0件 )

ソースインストールしたApache2.0に後からmod_proxy.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_connect.soを後から追加する。

ソースディレクトリに行く。うちの例では以下の通り。

cd /usr/local/src/apache/httpd-2.0.61/modules/proxy/

apxsコマンドで、モジュールをコンパイル&インストール

apxs -i -a -c mod_proxy.c proxy_util.c
apxs -i -a -c proxy_http.c proxy_util.c
apxs -i -a -c proxy_ftp.c proxy_util.c
apxs -i -a -c proxy_connect.c proxy_util.c

「-c」オプションでモジュールのソースファイルを指定。
「-i」オプションでビルド完了後モジュールをモジュールディレクトリに移動。
「-a」オプションでhttpd.confにLoadModule文が1行が追加されます。

proxyのモジュールでは、proxy_util.cが必要となっている。
これをしないとapachectl configtest時や、apache再起動時にエラーが出る。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes