Εγκατάσταση MEAN Stack και MEAN.JS (MongoDB, ExpressJS, AngularJS, Node) σε Ubuntu 16.04

egkatastasi-meanstack

Ο όρος ΜΕΑΝ αναφαίρετε σε μια συλλογή από javascript τεχνολογίες για την δημιουργία εφαρμογών στο διαδίκτυο. το MEAN είναι ακρωνύμιο των MongoDB, ExpressJS, AngularJS και Node.js με τις οποίες καλύπτετε όλο το εύρος των αναγκών μιας σελίδας (πελάτη – εξυπηρετιτή).

Το MEAN.JS είναι ένα javascript framework για την γρήγορη, εύκολη και πάνω από όλα διαχειρίσιμη δημιουργία εφαρμογών με τεχνολογίες MEAN.
Σε αυτό το άρθρο θα δούμε πως μπορούμε να εγκαταστήσουμε το ΜΕΑΝ Stack και το MEAN.JS σε ένα καινούργιο vm ή dedicated server που τρέχει Ubuntu 16.04

Για να ολοκληρώσουμε με επιτυχία αυτόν τον οδηγό χρειαζόμαστε ένα λογαριασμό με δικαιώματα χρήσης της εντολής sudo

Βήμα 1, Ενημέρωση αποθετηρίων και λογισμικού.

Πριν ξεκινήσουμε είναι καλό να επιβεβαιώσουμε ότι έχουμε τις τελευταίες εκδόσεις αποθετηρίων και λογισμικού. Άρα πληκτρολογούμε:

sudo apt update
sudo apt upgrade -y

Βήμα 2, Εγκατάσταση MongoDB.

Η MongoDB είναι μια ανοιχτού κώδικα Document-oriented βάση δεδομένων της κατηγορίας NoSQL, για να εγκαταστήσουμε τη τελευταία έκδοση θα περάσουμε το αποθετήριο της με την παρακάτω ακολουθία εντολών:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.3 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Αφού περάσαμε το αποθετήριο μπορούμε να εγκαταστήσουμε τη MongoDB:

sudo apt update
sudo apt install -y mongodb-org

Στην επίσημη σελίδα της MongoDB περιγράφει πως θα χρειαστεί να φτιάξουμε ένα unit αρχείο για το systemd. Ωστόσο το συγκεκριμένο αρχείο υπάρχει και δεν έχουμε κανένα απολύτως λόγος να το φτιάξουμε.

Μπορούμε να επιβεβαιώσουμε ότι υπάρχει:

cat /lib/systemd/system/mongod.service

μας εμφανίζει το περιεχόμενο του αρχείου:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod –quiet –config /etc/mongod.conf
LimitFSIZE=infinity # file size
LimitCPU=infinity # cpu time
LimitAS=infinity # virtual memory size
LimitNOFILE=64000 # open files
LimitNPROC=64000 # processes/threads
TasksMax=infinity # total threads (user+kernel)
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings

[Install]

Αφού τελειώσαμε με την εγκατάσταση είμαστε έτοιμοι να τρέξουμε τη MongoDB:

sudo service mongod start

και επιβεβαιώνουμε ότι τρέχει ελέγχοντας το αρχείο καταγραφής της MongoDB:

sudo tail -3f /var/log/mongodb/mongod.log

Μας εμφανίζει το παρακάτω μήνυμα, το σημαντικό μέρος είναι η τελευταία γραμμή που μας ενημερώνει ότι η MongoDΒ είναι έτοιμη για συνδέσεις στη θύρα 27017:

2016-10-21T10:42:32.377+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory ‘/var/lib/mongodb/diagnostic.data’
2016-10-21T10:42:32.378+0000 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-10-21T10:42:32.511+0000 I NETWORK [initandlisten] waiting for connections on port 27017

Βήμα 3, Εγκατάσταση Node.js.

Η Node.js είναι ένα μια πλατφόρμα προγραμματισμού server side, χτισμένη στη μηχανη V8 του Chrome, η οποία παρέχει event-driven και non-blocking I / O. Ο προγραμματισμός γίνεται σε Javascript.

θα περάσουμε τη τελευταία LTS version που δε βρίσκετε στα αποθετήρια της Ubuntu. Η Node.js έχει δικό της script που περνάει το αποθετήριο, κάνει update το σύστημα μας και μας λέει ποια εντολή να τρέξουμε στο τέλος για να την εγκαταστήσουμε. Για να τρέξουμε το script:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Αφού τελειώσει την εκτέλεσή του μας εμφανίζει στο τερματικό μας:

## Run `apt-get install nodejs` (as root) to install Node.js v6.x and npm

Θα γράψουμε ελαφρός διαφορετικά την εντολή, αντί για apt-get θα βάλουμε apt και τελικα η εντολή μας θα είναι:

sudo apt install nodejs

Για να μπορούμε να περνάμε πρόσθετα μέσα απο την npm (Node Package Manager) που εγκαταστάθηκε μαζί με την Node.js θα πρέπει να εγκαταστήσουμε μερικά ακόμα πακέτα:

sudo apt install -y build-essential

Τέλος τρέχουμε nodejs -v αν όλα έχουν γίνει σωστά θα μας εμφανίσει την έκδοση της nodejs που μόλις εγκαταστάθηκε

savvaniss@meanjs:~$ nodejs -v
v6.9.1

Σημέιωση: στη συνέχεια του Post θα εγκαταστήσουμε πακέτα που θα μας βοηθήσουν να διαχειριστούμε και να εγκαταστήσουμε το Mean.js. Δε θα δούμε κάπου να γίνετε ξεχωριστά εγκατάσταση της Angular.js και Express.js, θα εγκατασταθούν σαν μέρος του Mean.js

Βήμα 4, Εγκατάσταση Mean.js.

Το Mean.js χρησιμοποιεί ένα διαχειριστή πακέτων τον bower για τις ανάγκες του front-end. Επιπρόσθετα χρησιμοποιεί τον Grunt για την αυτοματοποίηση εργασιών. Η εγκατάσταση και των 2 θα γινει με χρήση της εντολής npm που περάστηκε στο προηγούμενο βήμα, η παράμετρος -g σημαίνει globall:

sudo npm install -g bower grunt-cli

θα εμφανιστεί το παρακάτω κείμενο με τα αρχεία και τις θέσεις που τα εγκατέστησε:

savvaniss@meanjs:~$ sudo npm install -g bower grunt-cli
/usr/bin/bower -> /usr/lib/node_modules/bower/bin/bower
/usr/bin/grunt -> /usr/lib/node_modules/grunt-cli/bin/grunt
/usr/lib
├── bower@1.7.9
└─┬ grunt-cli@1.2.0
├─┬ findup-sync@0.3.0
│ └─┬ glob@5.0.15
│ ├─┬ inflight@1.0.6
│ │ └── wrappy@1.0.2
│ ├── inherits@2.0.3
│ ├─┬ minimatch@3.0.3
│ │ └─┬ brace-expansion@1.1.6
│ │ ├── balanced-match@0.4.2
│ │ └── concat-map@0.0.1
│ ├── once@1.4.0
│ └── path-is-absolute@1.0.1
├── grunt-known-options@1.1.0
├─┬ nopt@3.0.6
│ └── abbrev@1.0.9
└── resolve@1.1.7

Πλέον το σύστημα μας είναι έτοιμο να φιλοξενήσει το Mean.js το οποίο θα περάσουμε με τη χρήση του git:

sudo git clone https://github.com/meanjs/mean.git /opt/mean

Έχει εγκατασταθεί ο κορμός του Mean.js από το git. Ότι εξωτερικά πακέτα χρειάζεται για να εκτελεστεί, θα γίνουν εγκατάσταση μέσο του npm και του bower αφού πρώτα μεταφερθούμε στο φάκελο που κάναμε clone το Mean.js:

sudo su
cd /opt/mean/
npm install
sudo bower --allow-root --config.interactive=false install

Αν έχουμε ενεργοποιημένο firewall δε ξεχνάμε να ανοίξουμε τη θύρα 3000 που θα τρέχει o Node server:

ufw allow 3000/tcp

Είμαστε έτοιμοι να τρέξουμε τον Node server:

node server

Μας εμφανίζει το παρακάτω μήνυμα, που μας ενημερώνει ότι o Node server εκτελείτε στην θύρα 3000:

+ Error: NODE_ENV is not defined! Using default development environment

+ Important warning: config.domain is empty. It should be set to the fully qualified domain of the app.

MEAN.JS – Development Environment

Environment: development
Server: http://0.0.0.0:3000
Database: mongodb://localhost/mean-dev
App version: 0.5.0
MEAN.JS version: 0.5.0

Αν πληκτρολογισουμε την IP του server μας μαζι με τη θύρα που τρέχει η Node θα πρεπει να δούμε τη Sample σελίδα του Mean.js στη περίπτωση μου πληκτρολογώ http://40.118.99.168:3000 . Αλλάξτε την IP με τη δική σας, Αυτή η IP είναι τυχαία.

meanjs running
meanjs running

Έχουμε τελειώσει με την εγκατάσταση και είμαστε έτοιμοι να παραμετροποιήσουμε το Mean.js όπως θέλουμε. Ο χρόνος ολοκλήρωσης του παραπάνω οδηγού σε ένα μηχάνημα υπολογίζεται περίπου στα 45 λεπτά.

Μην διστάσετε να αφήσετε σχόλιο για οποιαδήποτε απορία ή παρατήρηση που μπορεί να έχετε.

One comment: On Εγκατάσταση MEAN Stack και MEAN.JS (MongoDB, ExpressJS, AngularJS, Node) σε Ubuntu 16.04

Site Footer