UbuntuのNginxでPHPを動かす

ここのページが参考になった。

 cf. ubuntuのnginxでphpの環境設定と動作確認と使い方 – Joppot

php5-fpm をインストール

まずは、apt-get のリポジトリを最新にする。

takatoh@nightschool $ sudo add-apt-repository ppa:ondrej/php5
[sudo] password for takatoh: 
 This branch follows latest PHP packages as maintained by me & rest of the Debian pkg-php team.

You can get more information about the packages at https://sury.org

If you need to stay with PHP 5.4 you can use the oldstable PHP repository:

    ppa:ondrej/php5-oldstable

BUGS&FEATURES: This PPA now has a issue tracker: https://deb.sury.org/pages/bugreporting.html

PLEASE READ: If you like my work and want to give me a little motivation, please consider donating: https://deb.sury.org/pages/donate.html
 詳しい情報: https://launchpad.net/~ondrej/+archive/ubuntu/php5
[ENTER] を押すと続行します。ctrl-c で追加をキャンセルできます

gpg: 鍵輪「/tmp/tmpbrietwz8/secring.gpg」ができました
gpg: 鍵輪「/tmp/tmpbrietwz8/pubring.gpg」ができました
gpg: 鍵E5267A6Cをhkpからサーバーkeyserver.ubuntu.comに要求
gpg: /tmp/tmpbrietwz8/trustdb.gpg: 信用データベースができました
gpg: 鍵E5267A6C: 公開鍵“Launchpad PPA for Ondřej Surý”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)
OK

apt-get の情報をアップグレード。

takatoh@nightschool $ sudo apt-get upgrade

出力は長いので省略。

php5-fpm のインストール。

takatoh@nightschool $ sudo apt-get install php5-fpm
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  ax25-node firefox-locale-en libax25 linux-headers-3.13.0-34
  linux-headers-3.13.0-34-generic linux-image-3.13.0-34-generic
  linux-image-extra-3.13.0-34-generic openbsd-inetd
これを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
  php5-common php5-json
提案パッケージ:
  php5-user-cache php-pear
以下のパッケージが新たにインストールされます:
  php5-common php5-fpm php5-json
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
2,667 kB のアーカイブを取得する必要があります。
この操作後に追加で 10.6 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ trusty/main php5-json amd64 1.3.2-2build1 [34.4 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ trusty-updates/main php5-common amd64 5.5.9+dfsg-1ubuntu4.7 [442 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ trusty-updates/universe php5-fpm amd64 5.5.9+dfsg-1ubuntu4.7 [2,191 kB]
2,667 kB を 1秒 で取得しました (1,354 kB/s)
以前に未選択のパッケージ php5-json を選択しています。
(データベースを読み込んでいます ... 現在 635170 個のファイルとディレクトリがインストールされています。)
Preparing to unpack .../php5-json_1.3.2-2build1_amd64.deb ...
Unpacking php5-json (1.3.2-2build1) ...
以前に未選択のパッケージ php5-common を選択しています。
Preparing to unpack .../php5-common_5.5.9+dfsg-1ubuntu4.7_amd64.deb ...
Unpacking php5-common (5.5.9+dfsg-1ubuntu4.7) ...
以前に未選択のパッケージ php5-fpm を選択しています。
Preparing to unpack .../php5-fpm_5.5.9+dfsg-1ubuntu4.7_amd64.deb ...
Unpacking php5-fpm (5.5.9+dfsg-1ubuntu4.7) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
php5-common (5.5.9+dfsg-1ubuntu4.7) を設定しています ...

Creating config file /etc/php5/mods-available/pdo.ini with new version
php5_invoke: Enable module pdo for fpm SAPI

Creating config file /etc/php5/mods-available/opcache.ini with new version
php5_invoke: Enable module opcache for fpm SAPI
php5-fpm (5.5.9+dfsg-1ubuntu4.7) を設定しています ...

Creating config file /etc/php5/fpm/php.ini with new version
php5_invoke pdo: already enabled for fpm SAPI
php5_invoke opcache: already enabled for fpm SAPI
php5-fpm start/running, process 10089
php5-json (1.3.2-2build1) を設定しています ...
php5_invoke: Enable module json for fpm SAPI
Processing triggers for ureadahead (0.100.0-16) ...

これでインストール完了。

php-fpmのsocketを変更

/etc/php5/fpm/pool.d に www.conf というファイルがある。これを編集…と思ったら、すでにソケットを利用する設定になっていた。

listen = /var/run/php5-fpm.sock

なので、変更なし。変更してないので、すでにソケットがあるはず。

takatoh@nightschool $ ls /var/run
NetworkManager  lock                        sendsigs.omit.d
acpid.pid       motd.dynamic                shm
acpid.socket    mount                       sshd
alsa            network                     sshd.pid
atd.pid         network-interface-security  systemd
avahi-daemon    nginx.pid                   udev
crond.pid       php5-fpm.pid                udisks2
crond.reboot    php5-fpm.sock               upstart-file-bridge.pid
cups            plymouth                    upstart-socket-bridge.pid
dbus            pm-utils                    upstart-udev-bridge.pid
initramfs       pppconfig                   user
kerneloops.pid  resolvconf                  utmp
lightdm         rsyslogd.pid                wpa_supplicant
lightdm.pid     sdp

php5-fpm.sock というのがそうだ。

Nginxの設定を変更

昨日作ったデフォルトホストの設定ファイル(/etc/nginx/sites-available/nightschool)を編集して、以下を追加する。

# For PHP
location ~ \.php$ {
    root /var/www/html;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

Nginx に設定を反映。

takatoh@nightschool $ sudo nginx -s reload

PHPファイルを作成

/var/www/html の中に phpinfo.php を作成。

<!--?php
  phpinfo();
?-->

ブラウザで確認

phpinfo

http://localhost/phpinfo.php にアクセスすると次のようになった。

めでたく完了。