The software stack used on the server side is so common that we now use well-known acronyms to identify them. At eNTiDi we typically use a LEMP stack, gradually superseding the less performant LAMP stack.
LEMP systems
Software stack used for web servers
-
L: Linux (operating system)
The first choice to do is the operating system to install on the server. Once published, the web application is accessible from any client: what is running on the server side does not impair in any way what can be used on the client side.
We consider a decent command line interface and SSH a paramount for managing a server seriously. GNU/Linux distros usually provide a bash or csh and OpenSSH out of the box, but any other POSIX system would be technically equivalent.
-
E: Nginx or A: Apache (web server)
Nginx is a web server initially developed in Russia that has been slowing increasing in popularity thanks to its modularity and performances. eNTiDi software mainly uses nginx-based stacks.
Apache is the old de-facto standard in the web server world. Started in 1998, for many years more than half of the internet was running apache. Its strongest points are stability and ubiquity.
-
M: MariaDB or MySQL (database)
Once the most popular opensource database server, MySQL is now gradually superseded by MariaDB, a fork maintained by the same original author. The two projects are interchangeable, both on the administrative and on the development side.
Because of their strong support, both of them are often coupled with PHP. There are even different APIs exposed over the years, most notably mysql, mysqli and PDO. Those database are quite scalable, so they can be found in many places, ranging from single-page web sites to complex web applications.
-
P: PHP (scripting language)
The de-facto standard for web server scripting, PHP started as an easier alternative to Perl. Over the years it slowly became a full-fledged programming language for generating HTML pages.
PHP has been initially developed for beginners and still suffers from that decision: its behavior is often confusing, it badly lacks orthogonality and the standard library is, mildly put, a freaking mess. The latest releases seem to go in the right direction though.