The parentNode web stack is a web development environment, allowing you to run multiple Janitor projects, and any other LAMP, MAMP or WAMP-based project such as WordPress, Joomla or Type3.

It's designed to provide an identical environment on both development machines and production/live servers. This stack gives you a very powerful development environment and eliminates incompatibility issues between development and live environment.

It's intended to give you control over the environment, so that you feel encouraged to explore more possibilities right at your fingertips. You can change any configuration setting manually but you don't have to change a thing.

Web stack software

Software

The web stack consists of the following software packages, all of which are open source software:

  • Apache 2.4
  • PHP 7.4
  • MariaDB
  • Imagick
  • Redis
  • FFmpeg
  • wkhtmltopdf

Apache 2.4 is on of the most commonly used webservers for serving websites on the internet. We like to use it because it is both incredibly stable and highly configurable. Read more about the Apache webserver.

PHP 7.4 is the most widely used serverside programming language, used for web development. We like to use it because it can do everything you need serverside. It's easy to learn and work with and we use it for Janitor, our highly costomisable backend developer toolkit. Read more about PHP.

MariaDB is the faster growing smaller sister of MySQL, the most widely used database for website. We like it because it is of it's reliance and overall high performance. It is very versitile, fully compatible with MySQL and supports both SQL and noSQL. Read more about MariaDB.

Imagick is the PHP implementation of ImageMagick, a very powerful image manipulation and compression tool. We like it because it allows us to apply any kind of visual effect to images, provides excelent compression and it's the core of Janitor's automatic image conversion engine. Read more about ImageMagick.

Redis is a key/value pair, in-momory database. We like it because it is super high performance and very useful for caching of smaller datasets. The web stack uses it for cookie storage and Janitor uses it for caching of smaller datasets. Read more about Redis.

FFmepg is a video and audio manipulation and creating tool. We like it because it provides the best possible video and audio compression with the widest support for different formats and we use it for Janitor's automatic video and audio conversion engine. Read more abaut FFmepg.

wkhtmltopdf is a PDF creation tool based on the WebKit rendering engine. We like it because we can use HTML, CSS and JS to layout our PDF's and it provides low footprint files with selectable text. It is the core of Janitor's PDF writer engine. Read more about wkhtmltopdf.

Layout

The web stack introduces a cross platform folder layout, that allows you to use the same Apache VirtualHosts configurations for your projects regardless of whether you are working on Mac, Linux or Windows – because both the software and your project paths are the same.

The basic folder tree looks like this:

/srv /sites /apache /logs /ssl /client-folders /project-folders /tools

/srv is where it all starts and which we use as the base container for our tools and projects.

/srv/sites is in fact a symbolic link pointing to your ~/Sites folder's in respective OS's, giving you direct access to your code from your user account, and also easily allowing for more users to use the same computer, which each their own codebase to work on, while sharing the web stack only. In /srv/sites we have our web projects, our logs and apache extension config. This is also our webroot for Apache. https://localhost will get you there.

/srv/sites/apache holds the Apache extension config and logs. The  extension config is simply a regular conf-file, in which apache directives can be included. The file, apache.conf, is included in the main Apache configuration (httpd.conf/apache2.conf). We use this file to easily include custom commands and local vhost

/srv/sites/apache/logs is there to give you a more accessible log-file location. You can use this path in your VirtualHost declaration for your individual projects.

/srv/sites/apache/ssl contains the ssl certificate we use for https our local Apache projects.

/srv/sites/apache/client-folder/project-folder represents a typical layout pattern for your projects. We recommend using this layout for a better overview especially if you are working on many projects over time.

/srv/tools contains the parentNode web stack installer and helper tools and commands are located. The installer script checks out the installer repos from GitHub in this folder and starts the onwards installation process from here. This approach makes it easy to update the installer – it is as simple as running a git pull command.

Installation

A web stack installer is available for Mac, Linux or Windows.

Mac OS / OS X

Here is a guide to setting up the parentNode webstack development environment on Mac.

Ubuntu

Ubuntu is the preferred production/live hosting environment. Here is a guide to set up the parentNode web stack production environment on a fresh Ubuntu.

And here is the guide to set up the parentNode web stack on your local Ubuntu development machine.

Windows 10

Here is a guide to setting up the parentNode webstack development environment on Window 10.