There are two terms to refer to this topic: web stack and full stack. Both refer to the same: the technology stack that works as a unit to run the application, which is the top element.
The first popular web stack was the PHP stack: LAMP. Each letter refers to an item in the stack:
- L is for Linux, the operating system.
- A is for Apache, the web server.
- M is for MySQL, the database server.
- P is for PHP, the programming language.
It is a very basic and elemental stack, but there are complex projects with a bigger stack. For instance, when an efficient search is needed, a full-text search server must be added. This server will be indexing the “searchable” information so when a search is triggered, it can be processed as fast as possible.
LAMP was so popular because it was very easy to set up, even on Windows, where a simple installer could set up a development environment in a matter of seconds.
Nowadays any stack is simple to set up. We have installers or package managers in every operating system, so it is a piece of cake to have a good development environment. We even have tools like Vagrant which uses virtualization to install a server which can be almost the same as the real one on production.
For a Ruby web stack we could have typically this:
- Linux as the operating system
- PostgreSQL as the database server
- nginx as the web server
- Passenger as the application server
- Ruby as the programming server
Linux is the preferred operating system to serve Ruby applications. It is free, easy to set up and maintain.
PostgreSQL is a free and advanced database server. It also has a full-text search engine and a queue system built in, so it is very convenient for simple websites. That said, for rather complex applications we should use separate more powerful tools for these features. But hey, it is a good starting point!
nginx is Apache’s main competitor. It is very fast and more memory friendly than Apache. Easy to set up, and integrated with Passenger, which is the application server for Ruby. So it is a great choice.
We could add one more on top: Ruby on Rails, as the development framework, which makes building a website faster.