Искать в Базе знаний

MEAN-стек

MEAN — стек программного обеспечения, предназначенного для разработки веб-приложений c использованием только JavaScript.

Установка

Отдельные составляющие стека требовательны к количеству оперативной памяти, поэтому виртуальная машина потребуется с минимум 1 Гб RAM.

Node.js

Ubuntu, Debian
Для Debian сначала установите утилиту Curl:
# apt install curl
Установите персональный менеджер пакетов:
# curl -sL https://deb.nodesource.com/setup_12.x | bash -
После этого установите node.js выбранной в верхнем пункте версии:
# apt install -y nodejs
CentOS
Node.js и npm устанавливаются аналогично Ubuntu/Debian:
# curl -sL https://rpm.nodesource.com/setup_12.x | bash -
# yum install -y nodejs

MongoDB

Ссылки для скачивания актуальной версии репозитория имеются в официальной документации. В примере мы используем версию 4.2.
Ubuntu
Стандартная установка менеджером пакетов:
# apt install -y mongodb
После установки сервис автоматически запускается и готов к работе.
CentOS
Для установки MongoDB при помощи менеджера пакетов создайте файл /etc/yum.repos.d/mongodb-org-4.2.repo со следующим содержимым:
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
Установите пакет:
# yum install -y mongodb-org
Запустите сервис как демона:
# systemctl start mongod
Debian
Скачайте ключ и добавьте его в apt-key:
# wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -
Об успешном добавлении ключа свидетельствует строка результата:
# OK
Если вместо «OK» вы видите ошибку:
# E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
установите недостающий пакет:
# apt-get install gnupg
Создайте файл /etc/apt/sources.list.d/mongodb-org-4.2.list и добавьте в него ссылку на репозиторий MongoDB:
# echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" > /etc/apt/sources.list.d/mongodb-org-4.2.list
«buster» в составе команды может потребовать замены на версию используемого вами дистрибутива.
Обновите кеш пакетов:
# apt update
Установите пакет:
# apt install -y mongodb-org
Включите сервис и запустите его как демона:
# systemctl enable mongod
# systemctl start mongod

ExpressJS

Создайте каталог будущего проекта и перейдите в него:
# mkdir App && cd App
Создайте package.json:
# npm init --yes
Установите сам Express:
# npm install express --save

Angular

Глобально установите пакет Angular CLI:
# npm install -g @angular/cli
В процессе установки возникнет вопрос о согласии с передачей данных разработчику:
? Would you like to share anonymous usage data with the Angular Team at Google under Google’s Privacy Policy at https://policies.google.com/privacy? For more details and how to change this setting, see http://angular.io/analytics. (y/N)
Ответьте на него любым образом — это не повлияет на ход процедуры.
Создайте проект («project» замените любым подходящим вам словом):
# ng new project
На первый вопрос:
? Would you like to add Angular routing? (y/N)
рекомендуем ответить утвердительно — утилита создаст базовую маршрутизацию и установит для этого отдельный модуль.
Следующий вопрос утилита задаст о формате стилей:
? Which stylesheet format would you like to use? 
❯ CSS 
  SCSS   [ https://sass-lang.com/documentation/syntax#scss                ]
  Sass   [ https://sass-lang.com/documentation/syntax#the-indented-syntax ]
  Less   [ http://lesscss.org                                            ]
  Stylus [ http://stylus-lang.com                                        ]
Ради простоты в качестве формата файлов стилей выберите CSS, нажав Enter. Если вам удобен другой формат — переместитесь к нему стрелками и нажмите Enter.

Базовая настройка

NodeJS + ExpressJS

Перейдите в каталог ранее созданного проекта (если вы сейчас не в нем):
# cd ~/App
Создайте файл index.js и заполните его содержимым:
const express = require('express');
const app = express();
app.get('/', function (req, res) {
  res.send('ExpressJS + Nodejs works');
});
app.listen(1000);
В нем подключается модуль Express и включается роутинг для главной страницы, при запросе которой отдается строка «ExpressJS + Nodejs works», а также указывается порт для прослушивания — 1000.
Сохранив файл, запустите сервер, выполнив в командной строке:
# node index.js
После этого обратитесь в браузере по внешнему IP-адресу виртуальной машины: http://your-machine-address:1000
В браузере отобразится текст «ExpressJS + Nodejs works».
Чтобы сервер работал даже после выхода из терминала или нажатия Ctrl+C, запустите его при помощи nohup:
# nohup node index.js &

Angular

Перейдите в каталог ранее созданного проекта:
# cd ~/App/project
Запустите Angular с помощью команды:
# ng serve
По умолчанию Angular CLI запускается на localhost’e по 4200 порту. Для запуска на другом хосте и порту, укажите параметры явным образом, добавив к выполняемой команде ключи --host и --port:
# ng serve --host=your-machine-address --port=80
Для запуска в фоне аналогично серверу nodejs используйте nohup:
# nohup ng serve --host=your-machine-address --port=80 &
После ввода команды подождите 15-20 секунд, пока закончится компиляция.
Перейдите по адресу вашего бокса в браузере: http://your-machine-address
Если все прошло хорошо, то отобразится страница:
content-image

MongoDB

В Node.js работа с базами данных происходит при помощи модулей. Установите один из них:
# npm install --save mongodb
Чтобы проверить подключение к базе данных при помощи Node.js, создайте скрипт mongo-test.js и наполните его содержимым:
const MongoClient = require("mongodb").MongoClient;
const mongoClient = new MongoClient("mongodb://localhost:27017/", { useUnifiedTopology: true, useNewUrlParser: true });

mongoClient.connect(function(err, client){
    if(err){
        return console.log(err);
    } else {
        console.log("Connected");
    }
    client.close();
});
Запустите созданный скрипт:
# node mongo-test.js
Если консоль сообщит «Connected» — значит, подключение произошло успешно.
Теперь вы готовы к созданию собственного MEAN-приложения. Ориентируйтесь при этом на официальную документацию: