初心者が学んだログ(AWS+Nginx+PHP)

初心者が学んだログ(AWS+Nginx+PHP):


この記事を読んで幸せになれそうな人

  • なんかレンタルサーバに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 
ちゃんとwww配下をnginxの持ち物にしておこう。

$ sudo chown -R nginx:nginx /www 
Nginxの設定ファイルは多分/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_passphp-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/ 


わかったこと

何となくで環境構築はやっちゃだめだよね。。。。

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)