Running multiple Redis instances on the same server.

Setting up multiple Redis instances on the same server is pretty easy, but if you want to be able to easily start/stop and restart instances, you’ll need to play with the init scripts of redis-server.

I needed this to be able to offer Redis buckets to different customers on a shared platform.

This is how I managed to set up multiple instances on the same server.
Since installing redis-server is out of the scope of this article, I’ll only explain what I did to manage multiple Redis Servers.

* Setting up a new INIT script:

* Paste this into the new redis-server init script:

Once that is done, we need to add multiple config files for our different buckets:

And enter some config settings looking like this:

Creating new instances is easily done by copying this initial conf file and adjusting the params (port, name, pid, savefilename, password,…)

Now, if you want to start/stop or restart all redis instances at the same time, this can be done with the normal service command:

The new init script we create above, will simply index all config instances from /etc/redis/servers and manage those 1 at a time.

Or, if you only want to manage 1 instance at a time, just do something like this for example:

which will restart only the instance running for website www.nicovs.be

Since we use this on a shared environment, we have a provisioning system in place, where our customers can change some settings

This article is based on: Robofirm: Setting up multiple redis instances, but I had to change some configuration to make it work. Anyway, a big thanks to Kirk Madera for pointing me in the right direction!

Apache RewriteMap example

Today I needed to rewrite a list of about 1000 URL’s to a new location. Our product database was cleaned and new URL’s were created… Using RewriteMap from Apache’s Mod_rewrite comes in handy here.

In my case I needed to rewrite URL’s like this:

www.exampledomain.com/en/product1234/product_detail.php

to

www.exampledomain.com/en/travelbox_12/product_detail.php

Where in my URL’s I had a 1000 different ‘poducts1234’ to rewrite to a new URL.

 

Here’s the HOWTO:

Create a textfile on your server with 2 columns. Something that would look like this:

And save it to a folder you wish, eg

from this file,  create a rewrite database,  more info: httxt2dbm

Once done,  open your vhosts config and add the following configuration:

A bit of clarification:

The line with content:

creates a condition that if the rewritemap contains the URI and the value is not “” (so an empty string) then it should perform the RewriteRule.

The rewrite rule itself is pretty obvious. It’ll rewrite the URL’s for which the rewritemap is found to the new product URL, and also keep the trailing parameters.

phpRedmin with apache, php5-fpm and mod_proxy_fcgi

With apache 2.4 and PHP5-FPM, the way to go is using mod_proxy_fcgi.

Since configuration of a normal proxy vhost  configuration is out of the scope of this article, I will not explain how to do this. There are lots of resources out there to find on how to impelement this. If i find the time to make an article on this, i will do so… 😉

So, today we were trying to configure phpredmin (imo the best Redis manamement tool out there) to work with Apache 2.4 using mod_proxy_fcgi to connect to PHP5-FPM.

We were having some issues with the configuration…The homepage was accessible, but all subpages were not proxied they they should. Pretty weird, as phpmemcachedadmin, phpmyadmin,… work without any special configuration on the apache side.

Hours of research led to the following fix: We created an extra vhost, and made some specific proxy rules in it:

 

Credits to Carl V 😉