さて、無線LANにもつながりましたので、Windows から作業を出来るようにします。hosts.allow で、同一セグメント内の通信を許可しないとつながりません。
# cat /etc/hosts.allow
#
ALL : LOCAL
ALL : 192.168.1.
# End of hosts.allow.
プロセスを見ますと、Webサーバが立ち上がっているようですのでバージョンを見てみます。ついでに php も。
# httpd -v
Server version: Apache/2.4.7 (Unix)
Server built: Dec 17 2013 18:06:14# php -v
PHP 5.5.7 (cli) (built: Dec 13 2013 18:49:41)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
ブラウザに http://vaioくんのipアドレスを打ってみます。
It works!
と表示されますので動いていますね。ただ、ドキュメントルートや設定ファイルの場所が、私が記憶しているものと少し変わっているようです。設定ファイル /etc/httpd/http.conf を見てみますと、
DocumentRoot “/srv/httpd/htdocs”
となっていますし、各設定ファイルも /etc/httpd/extra/ ディレクトリに別ファイルとして置いて、インクルードするようになっています。phpも組み込まれていません。いくつか変更しましょう。
まず、phpを組み込んでみます。/etc/httpd/httpd.conf の以下のコメントアウトを外せばいけそうです。
(2014/02/04追記)
その後、php+mysql で苦労する羽目になり、気づいたのですが、この二行は元々の httpd.conf にはないですね。その時は確かにあったんですが、自分で書き足したのかも知れません。
# php5 conf
Include /etc/httpd/extra/php5.conf
で、apache をリスタートしてみると、
# apachectl restart
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
AH00013: Pre-configuration failed
と、叱られてしまいました。
Apacheは、マルチスレッドで動いているけど、あんたのphpはスレッドセーフでコンパイルされていない。phpをコンパイルし直せ。
ということですね。いろいろ調べてみますと、これを解決するには、
- ApacheのMPMをマルチスレッドのworkerからpreforkに変更する
- phpをcgiで動かす
- phpをスレッドセーフでコンパイルし直す
の3つの方法があるようです。正直、あまり詳しいことは分からないのですが、いろいろやってみましょう。
まずは、apacheをpreforkに変更
/usr/lib/httpd/module/ を見てみますと、
mod_mpm_prefork.so
mod_mpm_worker.so
2つのモジュールがありますので、httpd.conf を書き換えればいけるのかも知れません。
#LoadModule mpm_worker_module lib/httpd/modules/mod_mpm_worker.so
LoadModule mpm_prefork_module lib/httpd/modules/mod_mpm_prefork.so
として、apacheをリスタートすると、無事立ち上がったようです。
# apachectl -V | grep ‘Server MPM’
Server MPM: prefork
おお、preforkで走ってますね。ドキュメントルートに
# cat /srv/httpd/htdocs/phpinfo.php
<?php
phpinfo();
?>
を作って、phpの動作確認をしてみます。
問題ないようです。確かに、Server API Apache 2.0 Handlerとモジュールで動いていますし、ThreadSafety disabled となっています。
公開するサーバではありませんので、これで問題はないと思いますが、せっかくですので、workerとpreforkの違いとか安全性を調べてみることにします。