備忘録

備忘録

nginxとphp-fpmを使ってfastcgi_cacheする(PHP7.3)

環境

[root@ ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

手順

yum -y install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-fpm php-mysql php-dom
yum -y install nginx
vim /etc/php-fpm.d/www.conf

user = nginx
group = nginx

pm = dynamic
pm.max_children = 100
pm.start_servers = 10
pm.min_spare_servers = 5
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
vim /etc/php.ini

expose_php = Off
default_charset = "UTF-8"
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.language = Japanese
vim /etc/nginx/conf.d/hoge.conf

server {
  listen 80;
  server_name hoge.com;
  root /var/www/html/hoge;
  index index.php index.html;

  fastcgi_cache_key $scheme://$host$request_uri$is_args$args;
  fastcgi_cache CACHE;
  fastcgi_cache_valid 200 30m; # HTTPステータスコード200は30分間キャッシュする
  fastcgi_cache_valid any 1d; # その他は1日

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  
  location ~ \.php$ {
	try_files                $uri = 404;
	include                  /etc/nginx/fastcgi_params;
	fastcgi_pass             127.0.0.1:9000;
	#fastcgi_pass             unix:/var/run/php-fpm.sock;

	fastcgi_index            index.php;
	fastcgi_split_path_info  ^(.+\.php)(/.+)$;

	fastcgi_param            SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_param            PATHINFO        $fastcgi_path_info;
	fastcgi_param            PATH_TRANSLATED $document_root$fastcgi_path_info;

	fastcgi_buffers 8 128k;
	fastcgi_buffer_size 256k;
	fastcgi_read_timeout 60;
  }
}
vim /etc/nginx/nginx.conf

http {
  ...
  
  fastcgi_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=CACHE:4m;
  server_tokens off;
}

server { ... } を削除して以下を追加
server {
  listen 80 default_server;
  root /var/www/html;
  index index.php index.html;

  location ~ \.php$ {
     fastcgi_pass 127.0.0.1:9000;
     fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
     fastcgi_param PATH_INFO $fastcgi_script_name;
     include fastcgi_params;
  }
}
mkdir -p /usr/local/nginx/cache
systemctl enable nginx
systemctl enable php-fpm
systemctl restart nginx
systemctl restart php-fpm