初心者が学んだログ(AWS+Nginx+PHP)
初心者が学んだログ(AWS+Nginx+PHP):
AWSに他のレンタルサーバからWordPressを移管することになった。
結構アクセスがくるので、Nginxで作ってみようかってはなしになったりした。
レンタルサーバ君はPHPファイルを置いたら勝手に実行してくれたりするけど、普通はそうじゃない。
私はここで果てしなく躓いていた
Nginxはファイルを渡してくれるだけなので、PHPの実行はしてくれない。
PHPの実行は他のサービスがやってもらわないといけない。よくよく考えると当たり前だ
PHPを実施してくれるのはphp-fpmのお仕事です
AWSのEC2(Amazon Linux2)でやってみる。
NginxとPHPの導入は
この辺は他といろんな記事と一緒。ドキュメントルートはどこでもいいけど
ちゃんとwww配下をnginxの持ち物にしておこう。
Nginxの設定ファイルは多分
まずはPHPが実行できるようにする
次は、
おまけにwp-config.phpを見えないようにしとく。
サービス再実行してcurlしてみる
何となくで環境構築はやっちゃだめだよね。。。。
この記事を読んで幸せになれそうな人
- なんかレンタルサーバにphpファイルをおいて動かしたことあるよ!みたいな人
- よくサーバのことわからんけどNginxでphpのなんか(wordpressとか)を使いたい人
お勉強の経緯
AWSに他のレンタルサーバからWordPressを移管することになった。結構アクセスがくるので、Nginxで作ってみようかってはなしになったりした。
Nginxでphpを動かす際の注意点
レンタルサーバ君はPHPファイルを置いたら勝手に実行してくれたりするけど、普通はそうじゃない。Nginxはファイルを渡してくれるだけなので、PHPの実行はしてくれない。
PHPの実行は他のサービスがやってもらわないといけない。
PHPを実施してくれるのはphp-fpmのお仕事です
NginxとPHPの導入
AWSのEC2(Amazon Linux2)でやってみる。NginxとPHPの導入は
amazon-linux-extrasでやるといいと思う。# amazon-linux-extrasの一覧を確認 $ amazon-linux-extras # phpとnginxを導入(バージョンは↑で確認したのを使うといい) $ amazon-linux-extras install php $ amazon-linux-extras install nginx
Nginxの設定
この辺は他といろんな記事と一緒。ドキュメントルートはどこでもいいけど/www配下としときます。www ├─phpmyadmin └─wordpress
$ sudo chown -R nginx:nginx /www
/var/nginx/nginx.confとかにある。まずはPHPが実行できるようにする
nginx.conf
# ...略...
server {
listen 80;
server_name www.example.com;
index index.php ;
root /www;
# phpの設定
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # ここはphp-fpmの設定をみる
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# ...略...
fastcgi_passはphp-fpmの設定を参照すること。次は、
/がwordpress配下に行くようにする。あとはphpmyadminにもいくようにする。おまけにwp-config.phpを見えないようにしとく。
locationの順番に注意することnginx.conf
# ...略...
server {
listen 80;
server_name www.example.com;
index index.php;
root /www/wordpress; # rootを/www/wordpressに向ける
# wp-config.phpのまもり
location ~* .*/wp-config\.php {
return 301 /;
}
# phpmyadminの設定
location /phpmyadmin {
root /www/phpmyadmin; # /phpmyadminに来たらrootは/www/phpmyadminに向ける
location ~* /phpmyadmin/.*\.php {
fastcgi_pass 127.0.0.1:9000; # ここはphp-fpmの設定をみる
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# phpの設定
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # ここはphp-fpmの設定をみる
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# ...略...
php-fpmの設定
phpを実行するのはphp-fpmさんなので、ファイル書き込み、作成が発生する処理(wordpressのプラグインインストールとか)はパーミッションがかかわってくる。php-fpmさんは初期設定ではapacheユーザになってるみたいなのでnginxユーザで実行する様にしとく。
確認
サービス再実行してcurlしてみる$ sudo systemctl restart php-fpm.service $ sudo systemctl restart nginx $ curl -i localhost:80/
コメント
コメントを投稿