Install PHP with NGINX

Hi all.

Found that howto on reddit - http://stackful.io/blog/phix-n-install-php-nginx-the-hacker-way/. I was just curious if anyone has had experience running PHP with nginx in the past.

Thanks.

ispconfig3 www.ispconfig.org has tutorials on building servers with NGINX and PHP on various distros, so I imagine a fair number of users of ispconfig are using nginx

Here you can learn about setting up Nginx over Ubuntu 12.04 with PHP, WordPress-Nginx configuration and more.

However, WordPress-Nginx configuration itself are OS independent for most of the parts.

This is the script we are using to get drupal stood up on Ubuntu 1204 behind NGINX with php-fpm

Install script:


#! bin/sh
apt-get update -y
apt-get upgrade -y
apt-get install mysql-server mysql-client -y
apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-fpm -y
apt-get install nginx -y
mv /etc/nginx/sites-enabled/default /etc/nginx/sites-available
cp /webapps/conf/drupal /etc/nginx/sites-available
service nginx restart

Nginx conf


server {
        server_name domain.tld;
        root /webapps/drupal/site; ## <-- Your only path reference.
 
        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }
 
        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }
 
        # This matters if you use drush
        location = /backup {
                deny all;
        }
 
        # Very rarely should these ever be accessed outside of your lan
        location ~* \\.(txt|log)$ {
        #        allow 192.168.0.0/16;
                deny all;
        }
 
        location ~ \\..*/.*\\.php$ {
                return 403;
        }
 
        location / {
                # This is cool because no php is touched for static content
                try_files $uri @rewrite;
        }
 
        location @rewrite {
                # Some modules enforce no slash (/) at the end of the URL
                # Else this rewrite block wouldn't be needed (GlobalRedirect)
                rewrite ^/(.*)$ /index.php?q=$1;
        }
 
        location ~ \\.php$ {
                fastcgi_split_path_info ^(.+\\.php)(/.+)$;
                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_pass 127.0.0.1:9000;
        }
 
        # Fighting with ImageCache? This little gem is amazing.
        location ~ ^/sites/.*/files/imagecache/ {
                try_files $uri @rewrite;
        }
        # Catch image styles for D7 too.
        location ~ ^/sites/.*/files/styles/ {
                try_files $uri @rewrite;
        }
 
        location ~* \\.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

Thanks everyone!