Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support On Fedora 15
|
Submitted by falko (Contact Author) (Forums) on Sun, 2011-10-02 17:40. :: Fedora | Web Server | MySQL | nginx | PHP
Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support On Fedora 15Version 1.0 Nginx (pronounced "engine x") is a free, open-source, high-performance HTTP server. Nginx is known for its stability, rich feature set, simple configuration, and low resource consumption. This tutorial shows how you can install Nginx on a Fedora 15 server with PHP5 support (through PHP-FPM) and MySQL support. I do not issue any guarantee that this will work for you!
1 Preliminary NoteIn this tutorial I use the hostname server1.example.com with the IP address 192.168.0.100. These settings might differ for you, so you have to replace them where appropriate.
2 Installing MySQL 5First we install MySQL 5 like this: yum install mysql mysql-server Then we create the system startup links for MySQL (so that MySQL starts automatically whenever the system boots) and start the MySQL server: chkconfig --levels 235 mysqld on Now check that networking is enabled. Run netstat -tap | grep mysql It should show something like this: [root@server1 ~]# netstat -tap | grep mysql If it does not, edit /etc/my.cnf and comment out the option skip-networking: vi /etc/my.cnf
and restart your MySQL server: /etc/init.d/mysqld restart Run mysql_secure_installation to set a password for the user root (otherwise anybody can access your MySQL database!): [root@server1 ~]# mysql_secure_installation
3 Installing NginxNginx is available as a package for Fedora 15 which we can install as follows: yum install nginx Then we create the system startup links for nginx and start it: chkconfig --levels 235 nginx on Type in your web server's IP address or hostname into a browser (e.g. http://192.168.0.100), and you should see the nginx welcome page:
4 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). There's a php-fpm package in the official Fedora 15 repositories, therefore 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: 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.) 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.
5 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. The default vhost is defined in the file /etc/nginx/conf.d/default.conf - let's modify it as follows: vi /etc/nginx/conf.d/default.conf
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 dosument root (e.g. root /usr/share/nginx/html;). Please make sure that you change the fastcgi_param line to fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; because otherwise the PHP interpreter won't find the PHP script that you call in your browser. Now save the file and restart nginx: /etc/init.d/nginx restart 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:
6 Links
About The Author![]() Falko Timme is the owner of
|








Recent comments
1 day 11 hours ago
1 day 14 hours ago
2 days 2 hours ago
2 days 4 hours ago
2 days 9 hours ago
2 days 15 hours ago
3 days 51 min ago
3 days 2 hours ago
3 days 10 hours ago
3 days 12 hours ago