インフラ

amazonlinux2にnginx + php-fpm(php7.3)をインストールしてみる

php_nginx

こんにちは、ちゃりおです。

いままでapacheを使う機会が多く、nginxを使ったことがありませんでした。
最近、nginxを初めて使いました。

amazonlinux2php7.3php-fpmnginxを入れたのですが
割とハマったので、手順をまとめてみます。

ちゃりお
ちゃりお
nginx + php-fpmについてです

Contents

構成

以下のミドルウェアをインストールします。
amazonlinux2使っていますが、amazonlinux2固有のコマンドは使っていないのでcentos7でも同様の手順で可能です。

  • OS: amazonlinux2
  • php7.3
  • php-fpm
  • nginx

phpインストール

今回は、amaozn-linux-extras使いません。

理由は以下です。

  • 新しいバージョンが使えるようになるまで少し時間がかかる
    • バージョンがリリースされてから1ヶ月程してからamazon-linux-extrasで使えるようになったことがあった
  • ansibleにする際に、shellモジュールを使う必要がある(amazon-linux-extrasモジュールが無い)

amazonリポジトリの優先度下げ

デフォルトだと、amazon-coreリポジトリが使われます。
古いphpが入るので優先度下げておきましょう。

sudo vi /etc/yum.repos.d/amzn2-core.repo
>priority=99

epel,remiリポジトリのインストール

epel,remiをインストールします。

sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

インストールしたら有効化しておきます。

sudo yum-config-manager --enable epel,remi-php73,remi-safe,remi

php7.3インストール

php7.3と関連するパッケージをインストールします。

$sudo yum install -y --enablerepo=epel,remi-php73 php

下記コマンドでphpが入ったことを確認できます。

$php -v
HP 7.3.8 (cli) (built: Jul 30 2019 09:26:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.8, Copyright (c) 1998-2018 Zend Technologies

ngixをインストールする

nginx.repoの追加

デフォルトだと古いバージョンがはいるので、nginx.repoを追加します。

$sudo vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

下記コマンドでどのリポジトリからngixが入るかわかります。
先程追加したリポジトリから入るので問題なさそうです。(出力結果は抜粋しています)

$ yum info nginx
提供元リポジトリー  : nginx

nginxインストール

nginxをインストールします。

$sudo yum install -y nginx

インストールされたことを確認します。

$nginx -v

ブラウザのアドレスバーにインスタンスのパブリックIPを入れて確認します。
以下の画面が表示されるはずです。
Welcome_to_nginx

php-fpmのインストール

php-fpmをインストールする

php-fpmのインストールです。

sudo yum install -y --enablerepo=remi,remi-php73 php-fpm

confの修正

confを編集します。今回はnginxを使うのでuserをnginxにしておきます。

sudo vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

php-fpmをリスタートします。
このタイミングで/var/run/php-fpm/php-fpm.sockが作成されます。

sudo systemctl restart php-fpm

画面確認

nginx.confの修正

sockファイル作れたので、nginx.confを修正します。
今回はdefault.confを直接変修正します。
「location ~ \.php$」のところを編集してください。

$sudo vi /etc/nginx/conf.d/default.conf
location ~ \.php$ {
  root           /var/www/html;
  fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
  include        fastcgi_params;
    }

confのテストします。

sudo nginx -t

ブラウザのアドレスバーにインスタンスのパブリックIP/index.phpを入れて確認します。
php.infoが表示されたらOKです。

PHP_7_3_8_-_phpinfo

まとめ

今回は、nginx + php-fpmのセットアップをしてみました。
僕は連携周りで割とハマったので、誰かの参考になればと思います。

Amazonで「Nginx」の本をみてみる!!

ansible28yum
[Ansible] "yum lockfile is held by another process "エラーの対処法こんにちは、ちゃりおです。 yumモジュールを使って複数のパッケージをインストール際に、"yum lockfile is held b...
入門 監視
監視に関わる人は一度は読みたい「入門 監視」こんにちは、ちゃりおです。 半分ほど、読んで積読していたのですがやっと読み終わりました。 印象的だったところを、紹介します。 ...
DockerでLAMP環境を作ったら、PDO接続できなくてハマった件DockerでLAMP環境環境作ったら、phpのpdoからデータベースに接続できずハマった件です。 DockerにPDOがインストールできていない。 次は、以下のエラーではまりました。 ERROR:SQLSTATE[HY000] [2002] No such file or directory...