- PR -

apacheのバージョンアップについて

1
投稿者投稿内容
kumapoo
ベテラン
会議室デビュー日: 2003/11/21
投稿数: 59
お住まい・勤務地: 住まいも、勤務も東京の品川あたり
投稿日時: 2006-12-26 23:06
kumapooと申します。

手探りで、下記の手順で、apache1.3.33→apache1.3.37へバージョンアップをいたしました。

一応新しいバージョンでapacheが起動したものの、error_logにおかしなメッセージが出ています。

また、libphp4.soというモジュール強引に設定してしまいました。

apacheのバージョンアップに伴い、PHPの再インストールも行わないといけないでしょうか???

ご教授お願いいたします。


-現環境
apache_1.3.33
mod_ssl-2.8.24-1.3.33
php-4.3.10
--->コンパイルオプション
-PHPコンパイルオプション
'./configure' \\
'--with-apxs=/usr/local/apache_1.3.33/bin/apxs' \\
'--with-pgsql' \\
'--with-mysql=/usr/local/mysql' \\
'--enable-track-vars' \\
'--enable-mbstring' \\
'--enable-mbstr-enc-trans' \\
'--enable-force-cgi-redirect' \\
'--without-gd' \\
"$@"

-新環境
apache_1.3.37
mod_ssl-2.8.28-1.3.37
php-4.3.10
--->コンパイルオプション
% cd /usr/local/src/mod_ssl-2.8.28-1.3.37
./configure \\
"--with-apache=../apache_1.3.37" \\
"--with-ssl=../openssl-0.9.7i" \\
"--prefix=/usr/local/apache_1.3.37" \\
"--datadir=/usr/local/apache_1.3.37" \\
"--enable-module=most" \\
"--enable-shared=max" \\
"--with-layout=Apache" \\
"--disable-module=auth_db" \\
"--enable-module=all" \\
"$@"
# cd /usr/local/src/apache_1.3.37
# make
# make certificate
# make install

・apacheのシンボリックリンク修正
# ln -s apache_1.3.37 apache
# /usr/local/apache/bin/apachectl configtest
yntax error on line 248 of /usr/local/apache_1.3.37/conf/httpd.conf:
Cannot load /usr/local/apache_1.3.37/libexec/libphp4.so into server: /usr/local/apache_1.3.37/libexec/libphp4.so: cannot open shared object file: No such file or directory

・httpd.confのコピー
# cp /usr/local/apache_1.3.33/conf/httpd.conf /usr/local/apache_1.3.33/conf/httpd.conf

・httpd.confのlibphp4.soのパスを修正
(前)LoadModule php4_module libexec/libphp4.so
(後)LoadModule php4_module /usr/local/apache/libexec/libphp4.so


# /usr/local/apache/bin/apachectl start
→psでプロセスは一応起動

# cat /var/log/apache/error_log
[Tue Dec 26 22:18:16 2006] [notice] Apache/1.3.37 (Unix) PHP/4.3.10 configured -- resuming normal operations
[Tue Dec 26 22:18:16 2006] [notice] Accept mutex: sysvsem (Default: sysvsem)
[Tue Dec 26 22:18:38 2006] [notice] caught SIGTERM, shutting down

[ メッセージ編集済み 編集者: kumapoo 編集日時 2006-12-26 23:08 ]

[ メッセージ編集済み 編集者: kumapoo 編集日時 2006-12-26 23:13 ]
SHR
ベテラン
会議室デビュー日: 2006/06/15
投稿数: 99
投稿日時: 2006-12-27 08:51
私の読解力がないだけか、今一つ把握できません。
気になったとこだけ……。

単純なところで1.3.33の時にPHPをインストールした際には、
/usr/local/apache_1.3.33/libexec/ 以下にモジュールがインストールされていますね。
エラーメッセージにありますように、
/usr/local/apache_1.3.37/libexec/ を探しても
> No such file or directory
になりますね。

># cp /usr/local/apache_1.3.33/conf/httpd.conf /usr/local/apache_1.3.33/conf/httpd.conf
1.3.37へのcpと読み替えます…。
気になるのは、依然として1.3.37/libexec/にモジュールが無いはずなのにapachectlで
エラーが出なかった点なのですが…
もしかしてコピーしたhttpd.confに
ServerRoot "/usr/local/apache_1.3.33"
とか書いてませんかね?

同じディレクトリに上書きで入れている場合は、問題ないケースが多々ありますが、
違うディレクトリに入れるのであれば、このような事象を避ける為にも、
必ず関連する物は再インストールした方が良いと思われます。
※上書きインストールでも絶対に問題がないわけでもないです。
kumapoo
ベテラン
会議室デビュー日: 2003/11/21
投稿数: 59
お住まい・勤務地: 住まいも、勤務も東京の品川あたり
投稿日時: 2006-12-27 10:28
SHRさん

ありがとうございます!

引用:

>#cp /usr/local/apache_1.3.33/conf/httpd.conf /usr/local/apache_1.3.33/conf/httpd.conf
1.3.37へのcpと読み替えます…。


おっしゃる通りです。1.3.37の誤りでした。

引用:

気になるのは、依然として1.3.37/libexec/にモジュールが無いはずなのにapachectlで
エラーが出なかった点なのですが…


コピーしたhttpd.confに「/usr/local/apache/libexec/libphp4.so 」と記述してあります。
さらに、このとき、シンボリックリンクは貼られていなくて
$ cd /usr/local/
$ ls -l
apache
apache_1.3.37
となっていました。
さらに、
ServerRoot "/usr/local/apache_1.3.37"
LoadModule php4_module /usr/local/apache/libexec/libphp4.so
だから、apacheの起動でエラーが出なかったんだと思います。

引用:

もしかしてコピーしたhttpd.confに
ServerRoot "/usr/local/apache_1.3.33"
とか書いてませんかね?


ServerRootは "/usr/local/apache_1.3.37"
でした。

混乱させてしまいスイマセン。

libphp4.soについては、コピっちゃいました。

# cp -p /usr/local/apache/libexec/libphp4.so /usr/local/apache_1.3.37/libexec/
そして、httpd.confを元の設定に戻しました。

LoadModule php4_module libexec/libphp4.so

一応動作したので、(php.infoでも確認)いいのかな?
なんて思ったのですが、やっぱPHPのリコンパイルしないとだめですかね。

[ メッセージ編集済み 編集者: kumapoo 編集日時 2006-12-27 10:30 ]

[ メッセージ編集済み 編集者: kumapoo 編集日時 2006-12-27 10:41 ]

[ メッセージ編集済み 編集者: kumapoo 編集日時 2006-12-27 10:44 ]
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-12-27 11:08
ずーっと昔に同じようなエラーを見た事があったのでちょっと記憶を頼りにレス

記憶に引っかかったのは
Accept mutex: sysvsem (Default: sysvsem)
の所なんですけど、どのバージョンだったか(それとも、何かのモジュールだったかもしれません)でこのエラーが散見して検索した所、デフォルトで「--enable-sysvsem」が有効になっているのが原因だった記憶があります。
だとしたら「--disable-sysvsem」のスイッチが有効か調べてみて、試してみてはどうでしょうか?
(どうも、今sysvsemで検索してみても情報が多すぎて・・・これといった情報が見つからなくてすみませんが。)
1

スキルアップ/キャリアアップ(JOB@IT)