LAMP

Running two php/mysql/mariadb versions on the same apache web server

In a web server  very old applications must coexist with new ones. Usually old applications are no more mantained and still require old versions of php and mysql, while recent apps claim to use the latest features of your apache, php and database servers. In addition you may want to switch from MySQL to mariaDB, which is going to quickly supersede its progenitor program.

That said, how to build a web server which mounts on the same apache a variety of php/mysql/mariadb configurations? Let's consider a simple case and suppose to have an apache 2.4.x already installed and two database server, let's say mysql-5.5 and mariadb-5.5, listening on two different IPs. We would like to have two separate php versions available, let's say 5.3.x and 5.4.x, living together and connecting to mysql and mariadb respectively. Of course this procedure can be modified as you like for any number of configurations you like.

I will show how to achieve this configuring php in the usual mod_php manner and and by means of mod_cgid, an apache module which starts php requests as a CGI program, delivering very similar performance as mod_php. I will show how to select the proper php.ini file as well.

Installing mariaDB from source

These days many different popular Linux distributions (at the time I'm writing Slackware, Fedora, Arch, OpenSuse, Gentoo among the others) are switching to mariaDB, replacing mysql as the default db server.

mariaDB is a fork of mysql, created by the former  mysql's main developer under the GNU GPL, as opposed to any uncertainty of MySQL's license status under its current ownership by Oracle. It's not even sure if Oracle will release any security documentation in the future, so the compatibility with future versions of mysql is not garanteed. Anyway mariaDB-5.5 is totally compatible with mysql-5.5.

Since I have a server of my own I don't rely on hosting providers decisions; this is why I'm installing mariadb on a virtual server which will serve all my future applications.