Amazon EC2(Amazon Linux)でPHP7+Nginxをインストールする手順
o_wani
この記事は作成から8年以上経過しているため、内容が古くなっている可能性があります。
Amazon Linux環境にPHP7.0.1
+Nginx1.8
をインストールした記録です。
前提として、サーバはまっさらな状態です。また今回はPHPをソースからコンパイル
し、インストールします。yumでインストールした手順はこちら。
Contents
PHPのインストール
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
確認
無事確認できました。
まとめ
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