A web stack is like a pile of books.
- The top element is the application with which the user can interact, while the bottom element is the base: the operating system.
- The other elements in between are the technology necessary for both the application and the operating system to communicate with each other.
They all form a team with a common goal: to provide everything the application may need to work.
The first popular web stack was the PHP stack: LAMP. Each letter refers to an item in the stack:
- L for Linux, the operating system.
- A for Apache, the web server.
- M for MySQL, the database server.
- P for PHP, the programming language.
It is a very basic and elemental stack, but there are complex projects with a bigger stack. For example, when you need an efficient search, you should add a full-text search server. The server will index the “searchable” information so that when the search is triggered it can be processed as fast as possible.
LAMP has been so popular because it is easy to set up, even on Windows, where a simple installer can set up a development environment in a matter of seconds.
Nowadays any stack is easy to configure. We have installers or package managers for each operating system, so that it is a piece of cake to have a good development environment. We even have tools like Vagrant that use virtualization to install a server that can be almost the same as the one in production.
For the Ruby web stack you usually have the following:
- Linux as operating system.
- PostgreSQL as database server
- nginx as web server
- Passenger as an application server
- Ruby as a programming language
Some notes about this stack:
- Linux is the preferred operating system for serving Ruby applications. It is free, as well as easy to set up and maintain.
- PostgreSQL is a free and advanced database server. It also has a full-text search engine and an integrated queuing system, making it very convenient for simple websites. That said, for more complex applications we should use more powerful tools for these features. But hey, it’s a good starting point!
- nginx is Apache’s main competitor. It is very fast and consumes less memory than Apache. Easy to configure and integrated with Passenger, which is the application server for Ruby. It is a great choice.
We could add more at the top: Ruby on Rails as the development framework, which allows to build a website faster.