{"id":1585,"date":"2012-07-19T17:25:31","date_gmt":"2012-07-19T17:25:31","guid":{"rendered":"http:\/\/truelogic.org\/wordpress\/?p=1585"},"modified":"2012-07-19T17:30:42","modified_gmt":"2012-07-19T17:30:42","slug":"moving-an-apache-php-mysql-website-to-nginx-php-in-30-minutes-part-2","status":"publish","type":"post","link":"https:\/\/truelogic.org\/wordpress\/2012\/07\/19\/moving-an-apache-php-mysql-website-to-nginx-php-in-30-minutes-part-2\/","title":{"rendered":"Moving an Apache PHP Mysql website to NginX PHP in 30 minutes Part 2"},"content":{"rendered":"<p><a href=\"https:\/\/truelogic.org\/wordpress\/2012\/07\/18\/moving-an-apache-php-mysql-website-to-nginx-php-in-30-minutes-part-1\/nginx\/\" rel=\"attachment wp-att-1574\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1574\" title=\"nginx\" src=\"https:\/\/truelogic.org\/wordpress\/wp-content\/uploads\/2012\/07\/nginx.jpeg\" alt=\"\" width=\"256\" height=\"176\" \/><\/a><\/p>\n<p>If you havent seen Part 1 of this article then <a href=\"https:\/\/truelogic.org\/wordpress\/2012\/07\/18\/moving-an-apache-php-mysql-website-to-nginx-php-in-30-minutes-part-1\/\">you can see it here<\/a><\/p>\n<h3>MAKING PHP WORK WITH NGINX<\/h3>\n<p>For PHP to work with NginX it has to be installed as Fast CGI Process Manager (FPM). To know more about PHP-FPM check out its website\u00a0<a href=\"http:\/\/php-fpm.org\/\" target=\"_blank\"> http:\/\/php-fpm.org\/<\/a><\/p>\n<p><strong>Debian\/Ubuntu<\/strong><\/p>\n<p><em>sudo apt-get install php5-cli php5-common php5-suhosin<\/em><\/p>\n<p><em>sudo apt-get install php5-fpm php5-cgi<\/em><\/p>\n<p><strong>CentOS<\/strong><\/p>\n<p><em>sudo yum install php php-fpm php-gd php-mysql php-mbstring php-xml php-mcrypt php-xmlrpc<\/em><\/p>\n<p><strong>FreeBSD<\/strong><\/p>\n<p>You can use portmaster or make to reinstall PHP with the &#8220;Build FPM version (experimental)&#8221;option checked.<\/p>\n<h3>CONFIGURING VIRTUAL HOSTS IN NGINX<\/h3>\n<p>Given below is the location of the configuration file for NginX.<\/p>\n<p><strong>Debian\/Ubuntu<\/strong><\/p>\n<p><em>\/etc\/nginx\/nginx.conf<\/em><\/p>\n<p><strong>CentOS<\/strong><\/p>\n<p><em>\/etc\/nginx\/nginx.conf<\/em><\/p>\n<p><strong>FreeBSD<\/strong><\/p>\n<p><em>\/usr\/local\/etc\/nginx\/nginx.conf<\/em><\/p>\n<p>Once you open the conf file in an editor, adding multiple virtual hosts is easy. For each virtual host add a server block as shown in the example below:<\/p>\n<pre>server {\r\n\tlisten  80;\r\n        server_name  site.com www.site.com;\r\n\r\n        access_log  \/websites\/site.com\/logs\/access.log  main;\r\n\r\n        location \/ {\r\n            root   \/websites\/site.com\/http;\r\n            index  index.php index.html index.htm;\r\n        }\r\n\r\n        error_page   500 502 503 504  \/50x.html;\r\n        location = \/50x.html {\r\n            root   \/usr\/local\/www\/nginx-dist;\r\n        }\r\n\r\n       # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000\r\n        location ~ \\.php$ {\r\n            fastcgi_pass   127.0.0.1:9000;\r\n            fastcgi_index  index.php;\r\n            fastcgi_param  SCRIPT_FILENAME  \/websites\/site.com\/http$fastcgi_script_name;\r\n            include        fastcgi_params;\r\n        }\r\n\r\n        location ~ \/\\.ht {\r\n            deny  all;\r\n        }\r\n}<\/pre>\n<p>Be sure to change the paths to your actual path instead of \/websites\/site.com.<br \/>\nThe server tag will come after the http tag in the conf tag.<\/p>\n<p>At this stage you can restart NginX and your existing php site will start working as it was working in Apache.<\/p>\n<h3>HANDLING HTACCESS<\/h3>\n<p>NginX does not provide support for .htaccess files so if you website uses .htaccess then the rules in .htaccess can be put into the config file.<\/p>\n<p>An example is given below:<\/p>\n<p><span style=\"color: #993300;\">server {<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 listen\u00a0 80;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 server_name\u00a0 site.com;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 access_log\u00a0 \/var\/websites\/site.com\/logs\/access.log\u00a0 ;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 location \/ {<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 root\u00a0\u00a0 \/var\/websites\/site.com;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 index\u00a0 index.php index.html index.htm;<\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/([^\/\\.]+)\/([^\/\\.]+)\\.([0-9]+)\\.$ \/out\/get-phone-deal.php?u=deal&amp;deal_id=$3; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 if ($http_host ~* &#8220;^site\\.com$&#8221;){ <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^(.*)$ http:\/\/www.site.com\/$1 redirect; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 if ($http_host ~* &#8220;^whichbroadband\\.ie$&#8221;){ <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^(.*)$ http:\/\/www.site2.com\/$1 redirect; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 if ($http_host ~* &#8220;^mobilephonedeals\\.ie$&#8221;){ <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^(.*)$ http:\/\/www.site3.com\/$1 redirect; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 error_page\u00a0\u00a0 500 502 503 504\u00a0 \/50x.html;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 location = \/50x.html {<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 root\u00a0\u00a0 \/usr\/local\/www\/nginx-dist;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 #htaccess rules start&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 error_page 404 \/corporate\/sitemap.php?code=404;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/Privacy { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/Privacy-Policy$ \/corporate\/content.php?privacy=1; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 }<\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/Terms { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/Terms-And-Conditions$ \/corporate\/content.php?terms=1;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/About { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/About-Us$ \/corporate\/content.php?about=1; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location = \/Cookies { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^(.*)$ \/corporate\/content.php?cookie=1; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/Contact { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/Contact-Us$ \/corporate\/contactUs.php; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/manufacturer { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/manufacturer\/([^\/\\.]+)\/([0-9]+)$ \/phone\/manufacturer.php?id=$2; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 }<\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/phone { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/phone\/([^\/\\.]+)\/([0-9]+)$ \/phone\/phone.php?id=$2; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/network { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/network\/([^\/\\.]+)\/([0-9]+)$ \/phone\/network.php?id=$2; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 }\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/Sim { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/Sim-Only$ \/deals\/sim-only.php; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/Mobile { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/Mobile-Broadband$ \/deals\/mobileBroadband.php; <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 } <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 location \/recycl { <\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 rewrite ^\/recycle \/recycle.php;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 }<\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 #htaccess rules end&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/span><\/p>\n<p><span style=\"color: #993300;\">\u00a0<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 location ~ \\.php$ {<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fastcgi_pass\u00a0\u00a0 127.0.0.1:9000;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fastcgi_index\u00a0 index.php;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fastcgi_param\u00a0 SCRIPT_FILENAME\u00a0 \/var\/websites\/site.com\/$fastcgi_script_name;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 include\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fastcgi_params;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 location ~ \/\\.ht {<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 deny\u00a0 all;<\/span><br \/>\n<span style=\"color: #993300;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }<\/span><br \/>\n<span style=\"color: #993300;\">}<\/span><\/p>\n<p>As you can see the configuration rules for redirection are very similar to that of .htaccess. A great online utility to convert .htaccess to NginX conf is available at <a href=\"http:\/\/winginx.com\/htaccess\" target=\"_blank\">http:\/\/winginx.com\/htaccess<\/a> .<\/p>\n<h3>CONCLUSION<\/h3>\n<p>So thats it. A painless way to move your php website from Apache to NginX.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>If you havent seen Part 1 of this article then you can see it here MAKING PHP WORK WITH NGINX For PHP to work with <a class=\"mh-excerpt-more\" href=\"https:\/\/truelogic.org\/wordpress\/2012\/07\/19\/moving-an-apache-php-mysql-website-to-nginx-php-in-30-minutes-part-2\/\" title=\"Moving an Apache PHP Mysql website to NginX PHP in 30 minutes Part 2\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":1574,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5,284],"tags":[],"class_list":["post-1585","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apachephp","category-freebsd","category-nginx"],"_links":{"self":[{"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/posts\/1585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/comments?post=1585"}],"version-history":[{"count":11,"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/posts\/1585\/revisions"}],"predecessor-version":[{"id":1596,"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/posts\/1585\/revisions\/1596"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/media\/1574"}],"wp:attachment":[{"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/media?parent=1585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/categories?post=1585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/truelogic.org\/wordpress\/wp-json\/wp\/v2\/tags?post=1585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}