PHP

Amazon EC2(Amazon Linux)でPHP7+Nginxをインストールする手順

php7
o_wani
この記事は作成から8年以上経過しているため、内容が古くなっている可能性があります。

SSHでログイン後、ミドルウェアのアップデート

1.$ sudo yum update -y

開発向けパッケージインストール

1.$ sudo yum groupinstall -y 'Development Tools'
2.$ sudo yum groupinstall -y 'Development Libraries'

必要なパッケージインストール

1.$ sudo yum install -y libpng-devel  freetype-devel libmcrypt-devel libicu-devel libxslt-devel

php-srcをクローン

1.$ git clone https://github.com/php/php-src
2.
3.Cloning into 'php-src'...
4.remote: Counting objects: 645461, done.
5.remote: Total 645461 (delta 0), reused 0 (delta 0), pack-reused 645461
6.Receiving objects: 100% (645461/645461), 248.33 MiB | 9.16 MiB/s, done.
7.Resolving deltas: 100% (504952/504952), done.
8.Checking connectivity... done.

PHP7.0.1

1.$ cd php-src
2.$ git checkout refs/tags/php-7.0.1
3.Note: checking out 'refs/tags/php-7.0.1'.
4.
5.You are in 'detached HEAD' state. You can look around, make experimental
6.changes and commit them, and you can discard any commits you make in this
7.state without impacting any branches by performing another checkout.
8.
9.If you want to create a new branch to retain commits you create, you may
10.do so (now or later) by using -b with the checkout command again. Example:
11.
12. git checkout -b <new-branch-name>
13.
14.HEAD is now at 4054ec6... Refactor password_hash to use random_bytes internally to generate salts
15.
1.$ git branch
2.* (HEAD detached at php-7.0.1)
3. master

./configureを生成する

1.$ ./buildconf --force

環境に合わせて設定したMakefileを生成する

今回webサーバがnginxなので、PHP7用のphp-fpmもここで有効にします。

1.$ ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-mbstring --enable-fpm --enable-opcache
2.....
3.....
4.Thank you for using PHP.
5.
6.config.status: creating php7.spec
7.config.status: creating main/build-defs.h
8.config.status: creating scripts/phpize
9.config.status: creating scripts/man1/phpize.1
10.config.status: creating scripts/php-config
11.config.status: creating scripts/man1/php-config.1
12.config.status: creating sapi/cli/php.1
13.config.status: creating sapi/cgi/php-cgi.1
14.config.status: creating ext/phar/phar.1
15.config.status: creating ext/phar/phar.phar.1
16.config.status: creating main/php_config.h
17.config.status: executing default commands

make

かなり時間かかります。

1.$ sudo make

make install

1.$ sudo make install

インストール完了です。

pathを通す

/etc/profile

1.export PATH=${PATH}:/usr/local/php7/bin/:/usr/local/php7/sbin/

通したパスの設定を反映

1.$ source /etc/profile

バージョン確認

1.$ php -v
2.PHP 7.0.1 (cli) (built: Dec 29 2015 02:17:47) ( NTS )
3.Copyright (c) 1997-2015 The PHP Group
4.Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

nginxのインストール

nginxのインストール

1.$ sudo yum install nginx

nginxの設定ファイル編集

/etc/nginx/nginx.conf

1.root         /var/www/html;
2.
3.location ~ \.php$ {
4. root html;
5. fastcgi_pass 127.0.0.1:9000;
6. fastcgi_index index.php;
7. fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
8. include fastcgi_params;
9.}
10.
11.

php-fpm.conf

php-fpmはPHP7のものを使用する。

ファイルのバックアップ

1.$ cp -p /usr/local/php7/etc/php-fpm.conf{.default,}

/usr/local/php7/etc/php-fpm.confで以下を記載

1.pid = run/php-fpm.pid
2.daemonize = yes

php-fpm.d/www.conf

ファイルのバックアップをする。

1.$ cp -p /usr/local/php7/etc/php-fpm.d/www.conf{.default,}

/usr/local/php7/etc/php-fpm.d/www.confに以下を記載する。

1.user = nginx
2.group = nginx

init.d/php-fpm起動スクリプト生成

/etc/init.d/php-fpmを以下の内容にする。

1.#! /bin/sh
2.### BEGIN INIT INFO
3.# Provides: php--fpm
4.# Required-Start: $all
5.# Required-Stop: $all
6.# Default-Start: 2 3 4 5
7.# Default-Stop: 0 1 6
8.# Short-Description: starts php-fpm
9.# Description: starts the PHP FastCGI Process Manager daemon
10.### END INIT INFO
11.php_fpm_BIN=/usr/local/php7/sbin/php-fpm
12.php_fpm_CONF=/usr/local/php7/etc/php-fpm.conf
13.php_fpm_PID=/usr/local/php7/var/run/php-fpm.pid
14.php_opts="--fpm-config $php_fpm_CONF"
15.wait_for_pid () {
16. try=0
17. while test $try -lt 35 ; do
18. case "$1" in
19. 'created')
20. if [ -f "$2" ] ; then
21. try=''
22. break
23. fi
24. ;;
25. 'removed')
26. if [ ! -f "$2" ] ; then
27. try=''
28. break
29. fi
30. ;;
31. esac
32. echo -n .
33. try=`expr $try + 1`
34. sleep 1
35. done
36.}
37.case "$1" in
38. start)
39. echo -n "Starting php-fpm "
40. $php_fpm_BIN $php_opts
41. if [ "$?" != 0 ] ; then
42. echo " failed"
43. exit 1
44. fi
45. wait_for_pid created $php_fpm_PID
46. if [ -n "$try" ] ; then
47. echo " failed"
48. exit 1
49. else
50. echo " done"
51. fi
52. ;;
53. stop)
54. echo -n "Gracefully shutting down php-fpm "
55. if [ ! -r $php_fpm_PID ] ; then
56. echo "warning, no pid file found - php-fpm is not running ?"
57. exit 1
58. fi
59. kill -QUIT `cat $php_fpm_PID`
60. wait_for_pid removed $php_fpm_PID
61. if [ -n "$try" ] ; then
62. echo " failed. Use force-exit"
63. exit 1
64. else
65. echo " done"
66. echo " done"
67. fi
68. ;;
69. force-quit)
70. echo -n "Terminating php-fpm "
71. if [ ! -r $php_fpm_PID ] ; then
72. echo "warning, no pid file found - php-fpm is not running ?"
73. exit 1
74. fi
75. kill -TERM `cat $php_fpm_PID`
76. wait_for_pid removed $php_fpm_PID
77. if [ -n "$try" ] ; then
78. echo " failed"
79. exit 1
80. else
81. echo " done"
82. fi
83. ;;
84. restart)
85. $0 stop
86. $0 start
87. ;;
88. reload)
89. echo -n "Reload service php-fpm "
90. if [ ! -r $php_fpm_PID ] ; then
91. echo "warning, no pid file found - php-fpm is not running ?"
92. exit 1
93. fi
94. kill -USR2 `cat $php_fpm_PID`
95. echo " done"
96. ;;
97. *)
98. echo "Usage: $0 {start|stop|force-quit|restart|reload}"
99. exit 1
100. ;;
101.esac

パーミッションの設定

1.$ chmod 755 /etc/init.d/php-fpm

ファイルを設置する場所の作成

今回はWebサーバのドキュメンルートを/var/www/htmlとした。

1.$ sudo mkdir -p /var/www/html

ファイル設置

/var/www/html/info.php

1.sudo vim /var/www/html/info.php

以下の内容を記載

1.<?php
2.echo phpinfo();
3.?>

サービス起動

1.$ sudo /etc/init.d/nginx start
2.$ sudo /etc/init.d/php-fpm start

確認

phpinfo_php7

無事確認できました。

まとめ

php-fpmの設定がうまくいっていないとphp -vで確認するPHPのバージョンは7.0.1で、phpinfo();で表示させる画面ではバージョンが5.3.29になっているといったことになります。
yum php-fpmでインストールしたphp-fpmを使用するのではなく、PHP7をインストールする際にphp-fpm用の設定をして、インストールしたphp-fpmを使うことが重要です。

以上でamazon linux + PHP7.0.1 + nginx1.8でした。

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました