こんにちは、ちゃりおです。
いままでapacheを使う機会が多く、nginxを使ったことがありませんでした。
最近、nginxを初めて使いました。
amazonlinux2にphp7.3とphp-fpmとnginxを入れたのですが
割とハマったので、手順をまとめてみます。
構成
以下のミドルウェアをインストールします。
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を入れて確認します。
以下の画面が表示されるはずです。
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です。
まとめ
今回は、nginx + php-fpmのセットアップをしてみました。
僕は連携周りで割とハマったので、誰かの参考になればと思います。