After so many days we have talked about setting up Nginx, PHP-FPM, MariaDB and some PHP caching. We can now try to run a Drupal instance on them. Before we starts, let me listed out all the previous posts.
- Nginx – Installation on Ubuntu Precise
- Nginx + PHP-FPM on Ubuntu Precise
- Nginx – Enable Microcaching
- MariaDB – Installation on Ubuntu Precise
- Run phpMyAdmin on Nginx in Ubuntu Precise
- Ubuntu – Install APC with PHP-FPM and Nginx
- Ubuntu – Install Memcached with PHP-FPM and Nginx
It’s time to start the Drupal installation.
1. Go to the /srv folder and download the latest Drupal core.
2. Extract the archive.
- tar zxf drupal-7.19.tar.gz
3. Rename the folder to a proper name. In this post, we rename it to drupal.
- mv drupal-7.19 drupal
4. Create a new database through phpMyAdmin.
5. Create a new Nginx VirtualHost setting as follow.
/etc/nginx/sites-available/drupal
server {
listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name <your domain>;
root /srv/drupal;
index index.php;
# Log
access_log /var/log/nginx/drupal.access.log;
error_log /var/log/nginx/drupal.error.log info;
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 127.0.0.1;
deny all;
}
location ~ \..*/.*\.php$ {
return 403;
}
location / {
# This is cool because no php is touched for static content
try_files $uri $uri/ @rewrite;
expires max;
}
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$ {
# Setup var defaults
set $no_cache "";
# If non GET/HEAD, don't cache and mark user as uncacheable for 1 second via cookie
if ($request_method !~ ^(GET|HEAD)$) {
set $no_cache "1";
}
# Drop no cache cookie if need be
# (for some reason, add_header fails if included in prior if-block)
if ($no_cache = "1") {
add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/";
add_header X-Microcachable "0";
}
# Bypass cache if no-cache cookie is set
if ($http_cookie ~* "_mcnc") {
set $no_cache "1";
}
# Bypass cache if flag is set
fastcgi_no_cache $no_cache;
fastcgi_cache_bypass $no_cache;
# Settings
fastcgi_cache microcache;
fastcgi_cache_key $server_name|$request_uri;
fastcgi_cache_valid 404 30m;
fastcgi_cache_valid 200 10s;
fastcgi_max_temp_file_size 1M;
fastcgi_cache_use_stale updating;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass_header Set-Cookie;
fastcgi_pass_header Cookie;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
#fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
#fastcgi_intercept_errors on;
include fastcgi_params;
}
}
6. Restart Nginx.
- /etc/init.d/nginx restart
7. Continue the installation by accessing the URL with browser.

Done =)
Reference:
- Linux – How to configure NGINX + PHP-FPM + Drupal 7.0
- Building Nginx (Microcaching) + MariaDB/MySQL + PHP-FPM + Debian 6 + APC + Memcache + Drupal 7 server
Update @ 20130223: I found that a few days after the above setup, the following error occurred.

I am not sure why the mysqld.sock was gone. I restarted the server but the same problem occurred again after a while.
Finally, i solved the problem by the solution suggested in the post below.
StackOverflow – Getting “Can’t connect…through socket ‘/tmp/mysql’” when installing MySQL on Mac OS X 10.6 with Homebrew
It’s really userful
Thanks for your comment. =D
Great Job dude. It Helped me a lot ! Thank you. -> I have followed all your installation step
Nginx – Installation on Ubuntu Precise
Nginx + PHP-FPM on Ubuntu Precise
Nginx – Enable Microcaching
MariaDB – Installation on Ubuntu Precise
Run phpMyAdmin on Nginx in Ubuntu Precise
Ubuntu – Install APC with PHP-FPM and Nginx
Ubuntu – Install Memcached with PHP-FPM and Nginx
i am getting 5000+ request per sec .
Great~ good to know that i could help. =D
Hello ykyuen,
Really great tutorial. I am planning to test this on aws ec2.
I am working on secured drupal commerce website wherein whole website will be using https.
If possible, suggest what changes do i need to address.
Thanks for your comment~ =)
I seldom work with https but i think you could find some hints in the link below.
Nginx – Configuration
Thank you. I will try it
Hope it could help. =D
Pingback: Ubuntu – Recover package configuration file using apt-get | Eureka!