[nginx] Amazon Linux + nginx + php-fpmでPHPスクリプトを実行する (ベーシック認証付き)
Amazon Linux 2015.09環境にnginx + php-fpmでPHPスクリプトが動作する環境を構築します。
1. 事前作業
1.1. Amazon Linux環境の構築
- Amazon Linux環境の構築
- キーペアの作成 (新規): http://qiita.com/tcsh/items/59303d9506ca7d13f744
- インスタンスの作成 (Public): http://qiita.com/tcsh/items/ae8f1f0d706237327c5a
1.2. PHP環境の構築
インストール(yumパッケージの場合)
sudo yum install php54 -y
コマンド
which php
結果(例/AmazonLinux)
/usr/bin/php
コマンド(バージョン確認)
php -v
結果(例/AmazonLinux)
PHP 5.4.45 (cli) (built: Sep 11 2015 21:23:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
1.3. nginxのインストール
- (参考) Amazon Linuxにnginxをインストールする (yumパッケージ): http://qiita.com/tcsh/items/001c05ce9b0e5a34abc7
コマンド
which nginx
結果(例/AmazonLinux)
/usr/sbin/nginx
1.4. (任意) htpasswdコマンド
- キーペアの作成 (新規): http://qiita.com/tcsh/items/59303d9506ca7d13f744
- インスタンスの作成 (Public): http://qiita.com/tcsh/items/ae8f1f0d706237327c5a
sudo yum install php54 -y
which php
/usr/bin/php
php -v
PHP 5.4.45 (cli) (built: Sep 11 2015 21:23:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
which nginx
/usr/sbin/nginx
nginxでベーシック認証する場合に必要です。
Amazon Linuxの場合、最初からはいっているようです。
which htpasswd
/usr/bin/htpasswd
存在しない場合はインストールしておきます。
sudo yum install httpd-tools
2. php-fpmのインストール
2.1. インストール
コマンド
sudo yum install php54-fpm -y
結果(例/AmazonLinux)
(略)
インストール:
php54-fpm.x86_64 0:5.4.45-1.75.amzn1
完了しました!
2.2. 確認
コマンド
which php-fpm
結果(例/AmazonLinux)
/usr/sbin/php-fpm
3. php-fpmの設定
sudo yum install php54-fpm -y
(略)
インストール:
php54-fpm.x86_64 0:5.4.45-1.75.amzn1
完了しました!
which php-fpm
/usr/sbin/php-fpm
設定ファイルのうち、apacheと記述されているところをnginxに書き換えます。
;39行目付近
;user = apache
user = nginx
;41行目付近
;group = apache
group = nginx
4. php-fpmの起動
コマンド
sudo service php-fpm start
結果(例/AmazonLinux)
Starting php-fpm: [ OK ]
コマンド
sudo chkconfig php-fpm on \
&& chkconfig --list php-fpm
結果(例/AmazonLinux)
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
5. nginxの設定変更
5.1 nginxの設定変更
/etc/nginx/nginx.conf
# 44行目付近
# index index.html index.htm;
index index.php index.html;
# 78行目付近
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
sudo service php-fpm start
Starting php-fpm: [ OK ]
sudo chkconfig php-fpm on \
&& chkconfig --list php-fpm
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
5.1 nginxの設定変更
# 44行目付近
# index index.html index.htm;
index index.php index.html;
# 78行目付近
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
設定変更をしたら設定ファイルが正しい文法に従っているかチェックをします。
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
5.2 nginxの再起動
一旦、nginxを再起動し、正常に起動するか確認します。
sudo service nginx restart
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
6. (任意) ベーシック認証の設定
ここでは、'sysadm'というディレクトリに対してベーシック認証することにします。
6.1. 認証ファイル用ディレクトリの作成
認証ファイルは、公開ディレクトリ(/usr/share/nginx/html)直下ではないところに置きましょう。
sudo mkdir /usr/share/nginx/credentials
6.2. 認証ファイルの作成
変数の設定
AUTH_USER='sysadm'
コマンド
htpasswd -c htpasswd ${AUTH_USER}
入力
New password:
Re-type new password:
結果(例)
Adding password for user sysadm
AUTH_USER='sysadm'
htpasswd -c htpasswd ${AUTH_USER}
New password:
Re-type new password:
Adding password for user sysadm
作成した認証ファイルを配置します。
sudo mv htpasswd /usr/share/nginx/credentials/ \
&& ls /usr/share/nginx/credentials/htpasswd
6.3. ベーシック認証するディレクトリの作成
コマンド
sudo mkdir /usr/share/nginx/html/sysadm
6.4. nginxの設定変更
sudo mkdir /usr/share/nginx/html/sysadm
sysadmディレクトリの設定をnginxに追加します。
'/sysadm'以下でPHPスクリプトを実行する場合は、php-fpmの設定も個別で必要なようです。
# 57行目付近に追加
location ~ ^/sysadm/* {
auth_basic "Welcome sysadm.";
auth_basic_user_file /usr/share/nginx/credentials/htpasswd;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
設定変更をしたら設定ファイルが正しい文法に従っているかチェックをします。
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
6.5 nginxの再起動
sudo service nginx restart
Stopping nginx: [ OK ]
Starting nginx: [ OK ]
7. PHPスクリプトの動作確認
7.1. PHPスクリプトの作成
コマンド
cat << EOF > ~/info.php
<?php
phpinfo();
EOF
cat << EOF > ~/info.php
<?php
phpinfo();
EOF
作成したPHPスクリプトを公開ディレクトリに配置します。
sudo cp ~/info.php /usr/share/nginx/html/sysadm/ \
&& cat /usr/share/nginx/html/sysadm/info.php
sudo cp ~/info.php /usr/share/nginx/html/ \
&& cat /usr/share/nginx/html/info.php
7.2. PHPスクリプトの動作確認
ブラウザからPHPスクリプトにアクセスしてみます。
- ベーシック認証の設定をした場合: http://<ホスト>/sysadm/info.php
ベーシック認証のダイアログが表示され、ユーザ名とパスワードを入力すると以下の画面が表示されるはずです。
- ベーシック認証の設定をしなかった場合: http://<ホスト>/info.php
以下の画面が表示されるはずです。
ベーシック認証の設定をしなかった場合は、動作確認後にかならず削除しておきましょう。
sudo rm /usr/share/nginx/html/info.php
&& cat /usr/share/nginx/html/info.php
cat: /usr/share/nginx/html/info.php: そのようなファイルやディレクトリはありません
完了
Author And Source
この問題について([nginx] Amazon Linux + nginx + php-fpmでPHPスクリプトを実行する (ベーシック認証付き)), 我々は、より多くの情報をここで見つけました https://qiita.com/tcsh/items/360956faf5c4b2562021著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .