How to Setup MEAN.IO Stack on Ubuntu 15.04 / CentOS 7

MEAN.IO is a complete stack of necessary framework which simplifies and accelerates web application development. MEAN.IO is a full-stack free and open source software that helps us to build and run MongoDB, Express, AngularJS, and Node.js based web applications. It acts as a robust framework to help developers use better practices while working with popular JavaScript components for their daily development. MEAN.IO stack helps us to start developing web application in a properly managed way. Its prime focus is to take care of the connection between existing popular frameworks and to solve common issues.

Here are some easy steps on how we can setup MEAN.IO stack on linux machine running Ubuntu 15.04 and CentOS 7 as operating system.

1. Installing NodeJS

First of all, we'll need to setup the most important and key program behind every scene ie NodeJS. NodeJS is pretty easy to install in linux machine running Ubuntu or CentOS.

Installing Dependencies

On Ubuntu 15.04

We'll first need to update our local repository index in order to retrieve required updates of the package lists available in the repository. To do so, we'll need to run the following apt-get command.

$ sudo apt-get update
$ sudo apt-get install gcc g++ make build-essential libssl-dev git

On CentOS 7

In the machine running CentOS 7, we'll need to run yum update in order to update every packages installed in the system. We'll need to run the command under root or sudo access.

$ sudo yum update

After that, we'll install the essential development packages need to compile our NodeJS.

$ sudo yum install gcc gcc-c++ git

Installing dependencies centos7

Downloading and Extracting

After the dependencies are installed, we'll download the latest release of NodeJS from the official download server using wget.

$ wget -O /tmp/node-latest.tar.gz

--2015-11-22 05:01:17--
Resolving ( 2400:cb00:2048:1::6814:172e, 2400:cb00:2048:1::6814:162e,, ...
Connecting to (|2400:cb00:2048:1::6814:172e|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22470092 (21M) [application/gzip] Saving to: '/tmp/node-latest.tar.gz'
/tmp/node-latest.tar. 100%[=========================>] 21.43M 3.77MB/s in 6.9s
2015-11-22 05:01:25 (3.10 MB/s) - '/tmp/node-latest.tar.gz' saved [22470092/22470092]

$  tar -xvzf /tmp/node-latest.tar.gz

Compiling and Installing

Once the extraction of the tarball is completed, we'll continue further for the compilation of the source code of NodeJS. To do so, first, we'll need to check if every development dependencies are installed or not using ./configure command. Then, we'll compile the source code using make command which will take a lot time to finish the compilation and finally install the binary in our machine using make install command.

$ cd node-v5.1.0
$ ./configure
$ make
$ sudo make install

After the installation is complete, we'll gonna check if node was successfully installed or not by asking node its version.

$ node --version


Common Error and Fixes in CentOS 7

On running node commands with sudo, we may get error sudo: npm: command not found on our shell. To fix that, we'll need to run the following commands in a terminal or console.

$ sudo ln -s /usr/local/bin/node /usr/bin/node
$ sudo ln -s /usr/local/lib/node /usr/lib/node
$ sudo ln -s /usr/local/bin/npm /usr/bin/npm
$ sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

2. Installing MongoDB

Next, we'll install MongoDB, a free and open source document-oriented database server which is also know as NoSQL database server. It is designed for handling document-oriented storage and stores data in JSON-like documents with dynamic schema known as BSON which makes the integration of data in certain types of applications easier and faster. To install MongoDB, we'll need to follow the below setups with respect to the distribution of linux we are running.

On Ubuntu 15.04

We'll now need to add the MongoDB official repository to our source list so that we can fetch the package list and path of it. To do so, we'll need to run the following command in a terminal or console.

$ sudo apt-key adv --keyserver hkp:// --recv 7F0CEB10
$ sudo echo "deb wheezy/mongodb-org/3.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

After that, we'll gonna update our local repository index with that of the mongodb repository using apt-get command.

$ sudo apt-get update

Now, we'll need to run the following command in order to install it in our Ubuntu machine.

$ sudo apt-get install -y mongodb-org

On CentOS 7

In the machine running CentOS 7, we'll gonna install the latest stable mongodb release ie version 3.0 using yum package manager. To do so, first we'll need to add the repository in our operating system which can be done using a text editor.

$ sudo nano /etc/yum.repos.d/mongodb-org-3.0.repo

After opening the file with a text editor, we'll need to append the file with the following lines of configurations.

[mongodb-org-3.0] name=MongoDB Repository

Adding MongoDB Repo Centos 7

Then, we'll save the file and exit the text editor. Next, we'll install the mongodb using yum package manager by running the following command.

$ sudo yum install mongodb-org

3. Starting and Enabling MongoDB

After our MongoDB is installed, we'll now gonna start our MongoDB server and make it run automatically in every boot. To do so, we'll need to run the following commands.

As Systemd is the default service/daemon, process manager replacing SysVinit in Ubuntu 15.04 and CentOS 7, we'll gonna run the following command in order to start the mongodb server.

$ sudo systemctl start mongod

Now, to enable mongod to start in every system boot, we'll need to execute the following command.

$ sudo systemctl enable mongod

4. Installing Bower

As we have got Nodejs and NPM installed, we'll now gonna install Bower package manager in our linux machine. Bower package manager manages front-end packages for our web application. It provides hooks to facilitate using packages in our tools and workflows. It fetches and installs necessary stuffs from all over making everything frameworks, libraries, assets, utilities, and rainbows managed for the developer. To install bower, we'll need to run the following command.

$ sudo npm install -g bower

/usr/local/bin/bower -> /usr/local/lib/node_modules/bower/bin/bower
└── bower@1.6.5

5. Installing Gulp

Next, we'll also need to install gulp task manager to automate and enhance our workflow. Gulp is a free and open source JavaScript task runner which makes repetitive tasks like minification, compilation, linting, unit testing, etc pretty easy and fast with its primary feature ie automation. It is used to automate our development process which makes our repetitive task easy to perform. To install gulp globally, we'll need to run the following command.

$ sudo npm install -g gulp

6. Installing mean-cli

Now, we'll install the mean-cli package using npm. This will add mean command to our system which will let us to interact (install, manage, update, etc) our Mean based application. To install it, we'll need to run the following npm command.

$ sudo npm install -g mean-cli

7. Generating MEAN Application

The application generator will ask us some questions about our new application and will create a fresh copy of a MEAN.IO application in the working directory. To do so, we'll need to run the following yo command into our project directory.

$ mean init test-app

Next, we'll install all the dependencies required to run our mean application by running the following command.

$ cd test-app && npm install

mean@0.5.5 postinstall /home/arun/test-app
> node tools/scripts/postinstall.js

$ bower install

8. Running the Application

After the MEAN application has been generated, we'll now finally run our newly created application. To run our application, we'll need to execute gulp command into our MEAN application directory.

$ gulp

Running Mean App

Now, as our application is running, we should be able to browse our web application. To do so, we'll point our favorite web browser to the server running the application. As  gulp runs the applications under port 3000 by default so, we'll point our browser to http://ip-address:3000 or

Mean App Web Interface

If we wanna assign a port for our application, we can simply run the following command.

$ export PORT=3001 && gulp


Finally, we have successfully setup MEAN.IO stack for deploying our MEAN based application on our machine running CentOS 7 and Ubuntu 15.04. It is an awesome framework for an easy starting point with MongoDB, Node.js, Express, and AngularJS based applications. It a complete replacement for our traditional LAMP Stack. It helps us to save a long time required to build our custom MEAN stack as its pretty easy with just few commands to setup a complete MEAN stack. If you have any questions, suggestions, feedback please write them in the comment box below so that we can improve or update our contents. Thank you !

About Arun Pyasi

Linux Enthusiast geek and Web Developer who loves Free and Open Source Software (FOSS). He is a FOSS activist who loves technology, hacking, blogging, travelling, research and development. He is the Founder/Lead Developer of Chitwanix OS.

Author Archive Page

Have anything to say?

Your email address will not be published. Required fields are marked *

All comments are subject to moderation.