Как установить MEAN-стек с MEAN.JS на CentOS 7

Вступление

MEAN - это стек программных приложений, состоящий из следующих компонентов:

  • MongoDB, база данных NoSQL с поддержкой выполнения серверного JavaScript

  • ExpressJS, фреймворк для веб-приложений Node.js

  • AngularJS, фреймворк веб-приложений, подходящий для разработки динамических одностраничных приложений.

  • NodeJS, асинхронная среда, управляемая событиями, подходящая для создания масштабируемых сетевых приложений.

Термин MEAN был впервые введен Валерием Карповым, и этот термин был выведен из первой буквы каждого компонента. Валерий определил MEAN вthis blog post, в котором он привел некоторые мотивы для выбора разработки приложений JavaScript с помощью стека MEAN:

Благодаря кодированию на всем протяжении Javascript мы можем добиться повышения производительности как самого программного обеспечения, так и производительности наших разработчиков. С MongoDB мы можем хранить наши документы в JSON-подобном формате, писать запросы JSON на нашем сервере на основе ExpressJS и NodeJS и беспрепятственно передавать документы JSON на наш внешний интерфейс AngularJS. Отладка и администрирование базы данных становятся намного проще, когда объекты, хранящиеся в вашей базе данных, по существу идентичны объектам, которые видит ваш клиент Javascript. Более того, кто-то, работающий на стороне клиента, может легко понять код на стороне сервера и запросы к базе данных; использование одного и того же синтаксиса и объектов на протяжении всего процесса освобождает вас от необходимости рассматривать множество наборов лучших практик языка и уменьшает барьер для входа для понимания вашей кодовой базы.

В настоящее время существует две параллельные реализации стека MEAN:MEAN.io иMEAN.JS. У каждого свой метод установки немного другой. MEAN.JS is a purely community-driven implementation, while MEAN.io is sponsored by a company called Linnovate. Оба они включают одни и те же компоненты, но MEAN.io предоставляет дополнительный инструмент командной строкиmean, а также коммерческую поддержку.

В этом руководстве мы установим стек MEAN на сервере CentOS 7 с использованием MEAN.JS. Использование этого метода предполагает сначала установку MongoDB, затем NodeJS, а затем клонирование файлов MEAN.JS из GitHub.

Предпосылки

Для начала вам понадобится следующее:

  • Сервер CentOS 7 с минимум 4 ГБ оперативной памяти. Некоторые компоненты стека MEAN, такие какnpm, требуют много памяти.

  • Пользователь sudo без полномочий root, настроенный с использованиемthis CentOS 7 initial server setup guide.

[[step-1 -—- install-dependencies]] == Шаг 1. Установка зависимостей

Поскольку мы будем компилировать приложения из исходного кода, клонировать Git-репозиторий и устанавливать гемы Ruby, нам сначала нужно будет установить некоторые зависимости. libpng-devel иfontconfig необходимы одному из модулей MEAN.JS (pngquant).

sudo yum install gcc-c++ make git fontconfig bzip2 libpng-devel ruby ruby-devel

Для некоторых модулей Node.js, которые мы будем устанавливать, потребуется Sass, язык расширения CSS. Установите его с помощьюgem, менеджера пакетов Ruby.

sudo gem install sass

Теперь, когда зависимости установлены, мы можем установить первый компонент стека: MongoDB.

[[step-2 -—- install-mongodb]] == Шаг 2 - Установка MongoDB

MongoDB отсутствует в официальном репозитории CentOS, поэтому для его установки вам необходимо включить официальный репозиторий MongoDB. Это даст вам доступ к последним пакетам и позволит вам установить его оттуда.

Для этого руководства мы будем устанавливать версию для сообщества, которую можно бесплатно загрузить. Существует также версия Enterprise, но для этого требуется лицензия, поэтому здесь мы не будем иметь с ней дело.

На момент публикации MongoDB 3.2 является последней стабильной версией, доступной для загрузки и установки. Чтобы включить репозиторий, создайте для него файл в/etc/yum.repos.d, каталоге репозитория CentOS. Для MongoDB 3.2 мы назовем этот файлmongodb.org-3.2.repo.

Создайте и откройте/etc/yum.repos.d/mongodb.org-3.2.repo с помощьюvi или вашего любимого текстового редактора.

sudo vi /etc/yum.repos.d/mongodb.org-3.2.repo

Чтобы указать диспетчеру пакетов на официальный репозиторий MongoDB и включить его, скопируйте и вставьте следующее в файл. Установкаenabled=1 включает репозиторий, а установкаgpgcheck=1 включает проверку подписи GNU Privacy Guard (GPG) для всех пакетов, установленных из репозитория.

/etc/yum.repos.d/mongodb.org-3.2.repo

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

Сохраните и закройте файл, затем установите пакетmongodb-org для установки MongoDB и связанных с ним инструментов. Когда будет предложено импортировать ключ GPG, введитеy для да:

sudo yum install mongodb-org

После завершения установки запустите демон MongoDB.

sudo systemctl start mongod

mongod, демон MongoDB, теперь должен работать, и вы можете проверить это с помощью следующей команды:

sudo systemctl status mongod

Если он работает, вывод должен выглядеть примерно так:

Outputmongod.service - SYSV: Mongo is a scalable, document-oriented database.
   Loaded: loaded (/etc/rc.d/init.d/mongod)
   Active: active (running) since Tue 2016-09-06 12:42:16 UTC; 9s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 9374 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mongod.service
           └─9385 /usr/bin/mongod -f /etc/mongod.conf

Sep 06 12:42:16 centos-mean-js systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
Sep 06 12:42:16 centos-mean-js runuser[9381]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Sep 06 12:42:16 centos-mean-js mongod[9374]: Starting mongod: [  OK  ]
Sep 06 12:42:16 centos-mean-js systemd[1]: Started SYSV: Mongo is a scalable, document-oriented database..

Следующая часть стека, которую мы должны установить, это Node.js.

[[step-3 -—- install-node-js]] == Шаг 3. Установка Node.js

Один простой способ установить Node.js - использовать двоичный файл из репозитория Node.jsNodeSource. Сначала добавьте хранилище стабильной ветки. Вы можете прочитать содержимое скрипта перед его выполнением, используя приведенную ниже команду, посетив URL в вашем браузере.

curl -sL https://rpm.nodesource.com/setup_4.x | sudo -E bash -

Затем установите Node.js иnpm, менеджер пакетов для Node.js.

sudo yum install -y nodejs

Убедитесь, что установлены Node.js иnpm.

npm version

Выход должен быть:

Output{ npm: '2.15.9',
  ares: '1.10.1-DEV',
  http_parser: '2.7.0',
  icu: '56.1',
  modules: '46',
  node: '4.5.0',
  openssl: '1.0.2h',
  uv: '1.9.1',
  v8: '4.5.103.37',
  zlib: '1.2.8' }

Теперь, когдаnpm установлен, мы можем установить остальные компоненты стека MEAN.

[[step-4 -—- install-bower-and-gulp]] == Шаг 4 - Установка Bower и Gulp

Компоненты, которые мы будем устанавливать на этом этапе, - это Bower, менеджер пакетов, который используется для управления интерфейсным приложением, и Gulp, который используется для автоматизации общих задач.

И Bower, и Gulp необходимо установить глобально, для чего мы передаем параметрg вnpm. Установка обоих приложений глобально делает их доступными для всей системы, а не только из каталога локального проекта.

Сначала установите Bower:

sudo npm install -g bower

Затем установите Gulp:

sudo npm install -g gulp

Теперь у нас наконец-то установлены все необходимые пакеты. Мы можем перейти к установке фактического шаблона MEAN.JS, используемого для создания приложений.

[[step-5 -—- install-the-mean-шаблона]] == Шаг 5 - Установка MEAN Boilerplate

Сначала мы клонируем официальный репозиторий MEAN.JS GitHub.

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

Это клонирует шаблон MEAN.JS в каталог с именемmeanjs в вашем домашнем каталоге. Чтобы установить все пакеты, на которые ссылается проект, вы должны находиться внутри этого каталога, поэтому перейдите в него.

cd ~/meanjs

Затем установите необходимые пакеты от имени пользователя без полномочий root.

npm install

Установка займет несколько минут. Когда он завершится, у вас будет все необходимое для разработки MEAN-приложения. На последнем шаге мы проверим стек, чтобы убедиться, что он работает.

[[step-6 -—- running-your-sample-mean-application]] == Шаг 6. Запуск вашего примера приложения MEAN

Давайте запустим пример приложения, чтобы убедиться, что система работает правильно. Один метод - использоватьnpm start, а другой - использоватьgulp. Обе команды позволяют протестировать ваше приложение в режиме разработки. Здесь мы будем использоватьnpm.

npm start

[.Примечание]##

Note: начальный запуск любой из этих команд может завершиться ошибкой с выводом, подобным этому:

Error output[12:56:49] 'lint' errored after 702 ms
[12:56:49] Error in plugin 'run-sequence'
Message:
    An error occured in task 'sass'.

Если вы получите эту ошибку, исправить это просто. Это включает в себя удаление каталогаnode_modules, очистку кеша и повторную установку пакетов.

rm -rf node_modules
npm cache clean
npm install

Затем перезапустите пример приложения сnpm start илиgulp, как раньше.

Теперь вы можете получить доступ к своему среднему приложению, посетивhttp://your_server_ip:3000 в своем любимом браузере. Это должно отобразить страницу с логотипом MEAN.JS, включая текстCongrats! You’ve configured and run the sample application.. Это означает, что у вас есть полностью функциональный стек MEAN на вашем сервере.

Заключение

Теперь, когда у вас есть необходимые компоненты и шаблон MEAN.JS, вы можете приступить к созданию, тестированию и развертыванию своих собственных приложений. Ознакомьтесь сdocumentation on MEAN.JS website для конкретной помощи по работе с MEAN.JS.

Related