База знаний

Часто задаваемые вопросы, на которые мы уже ответили

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

Если все прошло хорошо, то отобразится страница:

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-приложения. Ориентируйтесь при этом на официальную документацию:


Была ли эта инструкция полезной?