wordpress hosting - vpn - cloud - statistiekservice - email

Categorie op met 3rd party software

WordPress + Redis = supersnel

Hierbij onze configuratie van Fedora, nginx, WordPress en Redis. Deze combinatie leidt tot het supersnel laden van oa. deze website.

  1. Download en installeer de redis-server.
  2. Plaats de predis.php file in de root van je WordPress installatie
  3. Vervang je huidige index.php file
  4. Zet andere cache zoals memcache of APC uit

Download en installeer de redis-server

Ga naar http://redis.io/download en download de meest recente versie. Het compileren is eenvoudig:


  tar xzf redis-[version].tar.gz
  cd redis-[version]
  make
  make install

Je start de redis server met ./redis-server & of download het start/stop script en plaats het in /etc/init.d

 

Plaats de predis.php file

Download de predis.php file en plaats deze in de root van je WordPress installatie. Deze file wordt aangeroepen door de zo dadelijk te plaatsen aangepaste index.php en vormt de interface naar de redis-server.


Vervang je huidige index.php

Hernoem je huidige index.php naar bijvoorbeeld index.php.org en plaats de index-with-redis.php in je root directory WordPress en hernoem deze naar index.php. Er staat drie configuratieregels in die je kan aanpassen:


  // change vars here
  $cf = 0; // set to 1 if you are using cloudflare
  $debug = 0; // set to 1 if you wish to see execution time and cache actions
  $display_powered_by_redis = 1; // set to 1 if you want to display a powered by redis message with execution time, see below

 

Zet andere cache uit

Andere cache mechanismes zoals APC of memcache heb je niet meer nodig en kunnen dus uitgeschakeld worden. In de meeste distributies kan dit door in de /etc/php.d directory de configuratiefile te renamen naar bijv. apc.ini.uit zodat deze niet meer ingelezen wordt. Wel even php-fpm herstarten.

 

NGINX en Zoneminder

Zoneminder is een van de weinige en redelijk CCTV programma's op linux. Zoneminder kan bijv. live streams van meerdere types camera's aan zoals ip-camera's, usb camera's en video caputerboards. Zoneminder heeft motion detection en maakt daarvan een filmpje en/of kunnen andere acties door de gedetecteerde beweging worden getriggerd. Een alternatief voor Zoneminder is Xeoma maar dat is een commercieel pakket.

Voor de streaming maakt Zoneminder gebruik van iets dat simple CGI heeft en dat wordt in Apache ondersteund, niet in NGINX. De oplossing hiervoor ligt in het maken van een daemon die middels xinetd wordt aangeroepen en deze binnen NGINX aan te roepen.

Op de site van Puccinelli staat beschreven hoe je dit voor elkaar krijgt.  De performance is aanzienlijk verbeterd t.o.v. Zoneminder met Apache.

NB: (De vertaling volgt hier binnenkort) Ik heb 't getest en het werkt


 

 

NGINX en 3rd party software

Gallery 3

Gallery3 is een populaire OpenSource foto-album webapplicatie. Het maakt echter gebruik van een aantal redirects om zgn. nice URL’s te kunnen gebruiken en hiervoor wordt een .htaccess bestand voor Apache meegeleverd. Voor NGINX kan volstaan worden om de volgende regels op te nemen in de configuratie van de server of virtual host:

 location /gallery3/ {
                if (!-e $request_filename) {
                      rewrite ^/gallery3/index.php/(.+)$ /gallery3/index.php?kohana_uri=$1 last;
                      rewrite ^/gallery3/(.+)$ /gallery3/index.php?kohana_uri=$1 last;
                      rewrite ^/gallery3/$ /gallery3/index.php?kohana_uri=/ last;
                     }
      }

In dit voorbeeld (location /gallery3) wordt er vanuit gegaan dat de gallery software vanaf de webroot in de directory gallery3 is geinstalleerd.

ELGG

ELGG is een populaire OpenSource community building software webapplicatie en maakt intensief gebruik van redirects. Om ELGG te kunnen gebruiken met NGINX als webserver kan onderstaande configuratie worden gebruikt:

 location ~ ^/cache/ {
   rewrite ^/cache\/(.*)$ /engine/handlers/cache_handler.php?request=$1&$args;
 }

location ~* ^/pg/(css|js) {
   rewrite ^/pg\/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1&$args;
   rewrite ^/pg\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2&$args;
}

 # For all other requests, try the file, or rewrite if it's PHP

location / {
   try_files $uri $uri/ @rewrite;
}

 location @rewrite {
    rewrite ^/tag\/(.+)\/?$ /engine/handlers/page_handler.php?handler=search&page=$1;
    rewrite ^/action\/([A-Za-z0-9\_\-\/]+)$ /engine/handlers/action_handler.php?action=$1&$args;
    rewrite ^/services\/api\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/service_handler.php?handler=$1&request=$2&$args;
    rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/?$ /engine/handlers/export_handler.php?view=$1&guid=$2;
    rewrite ^/export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ /engine/handlers/export_handler.php?view=$1&guid=$2&type=$3&idname=$4;
    rewrite /xml-rpc.php /engine/handlers/xml-rpc_handler.php;
    rewrite /mt/mt-xmlrpc.cgi /engine/handlers/xml-rpc_handler.php;
    rewrite ^/rewrite.php$ /install.php;

 if (!-d $request_filename){
    set $rule_11 1$rule_11;
 }

 if (!-f $request_filename){
     set $rule_11 2$rule_11;
 }

 if ($rule_11 = "21"){
     rewrite ^/([A-Za-z0-9\_\-]+)$ /engine/handlers/page_handler.php?handler=$1;
 }

 if (!-d $request_filename){
     set $rule_12 1$rule_12;
 }

 if (!-f $request_filename){
        set $rule_12 2$rule_12;
 }

 if ($rule_12 = "21"){
        rewrite ^/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/page_handler.php?handler=$1&page=$2;
 }