Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support On CentOS 6.2 - Page 2
5 Installing PHP5We can make PHP5 work in nginx through PHP-FPM (PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites). We can install php-fpm together with php-cli and some PHP5 modules like php-mysql which you need if you want to use MySQL from your PHP scripts as follows: yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy Then open /etc/php.ini and set cgi.fix_pathinfo=0: vi /etc/php.ini
(Please read http://wiki.nginx.org/Pitfalls to find out why you should do this.) In addition to that, in order to avoid errors like [08-Aug-2011 18:07:08] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /usr/share/nginx/html/info.php on line 2 ... in /var/log/php-fpm/www-error.log when you call a PHP script in your browser, you should set date.timezone in /etc/php.ini:
You can find out the correct timezone for your system by running: cat /etc/sysconfig/clock [root@server1 nginx]# cat /etc/sysconfig/clock Next create the system startup links for php-fpm and start it: chkconfig --levels 235 php-fpm on PHP-FPM is a daemon process (with the init script /etc/init.d/php-fpm) that runs a FastCGI server on port 9000.
6 Configuring nginxThe nginx configuration is in /etc/nginx/nginx.conf which we open now: vi /etc/nginx/nginx.conf The configuration is easy to understand (you can learn more about it here: http://wiki.codemongers.com/NginxFullExample and here: http://wiki.codemongers.com/NginxFullExample2) First (this is optional) you can increase the number of worker processes and set the keepalive_timeout to a reasonable value:
The virtual hosts are defined in server {} containers. Let's modify the default vhost (in /etc/nginx/nginx.conf as well) as follows:
server_name _; makes this a default catchall vhost (of course, you can as well specify a hostname here like www.example.com). In the location / part, I've added index.php to the index line. root /usr/share/nginx/html; means that the document root is the directory /usr/share/nginx/html. The important part for PHP is the location ~ \.php$ {} stanza. Uncomment it to enable it. Change the root line to the web site's document root (e.g. root /usr/share/nginx/html;). Please make sure that you change the fastcgi_param line to fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; because otherwise the PHP interpreter won't find the PHP script that you call in your browser ($document_root translates to /usr/share/nginx/html because that's what we have set as our document root). PHP-FPM is listening on port 9000 on 127.0.0.1 by default, therefore we tell nginx to connect to 127.0.0.1:9000 with the line fastcgi_pass 127.0.0.1:9000;. It is also possible to make PHP-FPM use a Unix socket - I will describe this in chapter 7. Now save the file and reload nginx: /etc/init.d/nginx reload Now create the following PHP file in the document root /usr/share/nginx/html... vi /usr/share/nginx/html/info.php
Now we call that file in a browser (e.g. http://192.168.0.100/info.php): As you see, PHP5 is working, and it's working through FPM/FastCGI, as shown in the Server API line. If you scroll further down, you will see all modules that are already enabled in PHP5, including the MySQL module:
7 Making PHP-FPM Use A Unix SocketBy default PHP-FPM is listening on port 9000 on 127.0.0.1. It is also possible to make PHP-FPM use a Unix socket which avoids the TCP overhead. To do this, open /etc/php-fpm.d/www.conf... vi /etc/php-fpm.d/www.conf ... and make the listen line look as follows:
Then restart PHP-FPM: /etc/init.d/php-fpm restart Next go through your nginx configuration and all your vhosts and change the line fastcgi_pass 127.0.0.1:9000; to fastcgi_pass unix:/tmp/php5-fpm.sock;, e.g. like this: vi /etc/nginx/nginx.conf
Finally reload nginx: /etc/init.d/nginx reload
8 Links
About The Author![]() Falko Timme is the owner of
|






Recent comments
1 day 5 hours ago
1 day 10 hours ago
1 day 11 hours ago
1 day 12 hours ago
1 day 14 hours ago
1 day 18 hours ago
1 day 19 hours ago
1 day 21 hours ago
2 days 10 hours ago
2 days 12 hours ago