Saturday, March 5, 2016

nginx - PHP-FPM issue on LEMP Stack and WordPress




I'm very much a NGINX and Server Admin beginner.



I used this tutorial to install NGINX / PHP / mySQL / WordPress:



C3M Digital Tutorial



In this tutorial the backend php-cgi setup is configured using fastcgi. php5-fpm was installed during this tutorial:



apt-get install nginx-full php5-fpm php5 php5-mysql php5-apc php5-mysql php5-xsl php5-xmlrpc php5-sqlite php5-snmp php5-curl



After reading that the NGINX configuration on the WordPress codec was more secure than most tutorials, I decided to use the codex configuration:



WordPress NGINX configuration in Codex



The Codex configuration uses php-fpm for backend php-cgi. When opening the browser I got a 502 Bad Gateway error. The error log was:



"2012/06/10 21:18:27 [crit] 14009#0: *4 connect() to unix:/tmp/php-fpm.sock failed (2: No
such file or directory) while connecting to upstream, client: 12.3.456.789, server: mywebsite.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-fpm.sock:", hos
t: "mywebsite.com""




In the main NGINX configuration file supplied by the codex I noticed the line starting "server unix:" in the upstream php block which point to the empty directory:



    # Upstream to abstract backend connection(s) for PHP.
upstream php {
server unix:/tmp/php-fpm.sock;
# server 127.0.0.1:9000;
}



I checked the folder at /tmp and it was empty.



Seems I missed configuring php-fpm to play with NGINX.



Can someone point me in the right direction?



Much appreciated!


Answer



Sounds like you haven't setup php-fpm to listen on the Unix socket. I'm guessing your using Debian of some sort, since the instructions you are following are for Debian.




In my Debian/nginx/php config I have this file: /etc/php5/fpm/pool.d/www.conf You need to edit this to allow php-fpm to listen on the Unix socket as opposed to the 127.0.0.1:9000 address.



Find the line in /etc/php5/fpm/pool.d/www.conf that reads listen = 127.0.0.1:9000 and change it to /tmp/php-fpm.sock (or comment it out and add the listen = /tmp/php-fpm.sock below it). Or maybe you want to store the php-fpm.sock file somewhere other than tmp. Google can probably help you with that.


No comments:

Post a Comment

linux - How to SSH to ec2 instance in VPC private subnet via NAT server

I have created a VPC in aws with a public subnet and a private subnet. The private subnet does not have direct access to external network. S...