2016年5月5日木曜日

Raspberry Pi+nginx環境にPHP5をインストールする

Raspberry Piでnginxを動かしているが、PHPが必要になったのでPHP5をインストールした。そのときの手順をまとめておく。

1.php5、php5-fpmをインストール
php5とともにphp5-fpmもインストールするのがよく行われているphp5の導入方法らしい。php5-fpmについてはThe PHP Groupのサイトを参照。PHP の FastCGI 実装のひとつで、 主に高負荷のサイトで有用な追加機能を追加するためのもの。

インストールは以下のコマンド。
$ sudo apt-get install php5 php5-fpm

インストールしたら以下のコマンドで確認。
$ php -v
$ php5-fpm -v

2.nginxの設定
nginxの設定ファイルを編集する。
$ sudo vi /etc/nginx/sites-enabled/default

①以下の赤字箇所を追加
index index.php index.html index.htm;

②以下の赤字箇所のコメントアウトをはずす
 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

3.nginx再起動
$ sudo /etc/init.d/nginx restart

4.動作確認
以下の内容のphpファイルを作成してnginx配下のディレクトリに配置し、ブラウザでアクセスしてPHPの設定情報が表示されるか確認する。
<?php phpinfo();?>

これでPHPが動くようになったが、Raspberry Piを再起動したらWEBページが開かない。nginxを起動しようとすると以下のメッセージが表示される。

Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
nginx.

以下のコマンドで確認してみると、Apache2が動いている。
$ ps aux | grep apache

とりあえずApache2を停止し、nginxを起動すると、目的のWEBページが表示されるようになった。
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/nginx start

Apache2が自動起動になっているか以下のコマンドで確認すると、やはり自動起動する設定がある。自動起動するように設定した覚えはないのだが。php5-fpmをインストールした影響だろうか。
$ ls /etc/rc2.d/

Apache2の自動起動設定を削除。
$ sudo update-rc.d -f apache2 remove

Apache2の自動起動設定が消えたことを確認。
$ ls /etc/rc2.d/

Raspbery Piを再起動してApache2が起動していないことを確認。
$ sudo reboot

0 件のコメント:

コメントを投稿