Гид по технологиям

Установка стека MERN на Ubuntu 20.04

• 5 min read • DevOps • Обновлено 24 Nov 2025
Установка стека MERN на Ubuntu 20.04
Установка стека MERN на Ubuntu 20.04

Важно: инструкции рассчитаны на чистую установку Ubuntu 20.04 с доступом root. Если у вас другой дистрибутив или версия Node/Mongo, адаптируйте команды и репозитории.

Иллюстрация стека MERN: MongoDB, Express, React, Node

Что такое стек MERN

Стек MERN состоит из четырёх компонентов: MongoDB, Express, React и Node. Это набор JavaScript-технологий для создания динамичных веб-приложений.

  • MongoDB — NoSQL база данных, хороша для гибкой схемы и JSON-подобных документов.
  • Express — минималистичный фреймворк для Node.js для построения REST API и серверной логики.
  • React — фронтенд-библиотека для создания интерфейсов с компонентной архитектурой.
  • Node.js — среда исполнения JavaScript на сервере.

Определение: NoSQL — семейство баз данных, ориентированных на хранение неструктурированных или полуструктурированных данных.

Требования

  • Сервер с Ubuntu 20.04.
  • Пароль root или пользователь с sudo.
  • Доступ в интернет для загрузки пакетов и репозиториев.

План установки — краткий

  1. Обновить пакеты системы.
  2. Установить зависимости и добавить репозиторий MongoDB, затем установить MongoDB и включить аутентификацию.
  3. Установить Node.js (14.x) и npm.
  4. Создать React-приложение через create-react-app и протестировать.
  5. Создать базовый проект Express через express-generator.
  6. Применить базовые меры безопасности и проверить запуск сервисов.

Начало работы

Обновите пакеты системы:

apt-get update -y

После обновления переходите к следующему шагу.

Установка MongoDB

По умолчанию последняя версия MongoDB может отсутствовать в репозитории Ubuntu 20.04, поэтому добавим официальный репозиторий MongoDB 4.4.

Установите необходимые зависимости:

apt-get install gnupg2 wget curl unzip git -y

Добавьте GPG-ключ MongoDB:

wget -qO- https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -

Добавьте репозиторий:

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list

Обновите список пакетов и установите MongoDB:

apt-get update -y
apt-get install mongodb-org -y

Запустите сервис и включите автозапуск при перезагрузке:

systemctl start mongod
systemctl enable mongod

Проверьте статус сервиса:

systemctl status mongod

Ожидаемый пример вывода показан в исходном руководстве — сервис должен быть active (running).

Проверьте подключение через mongo shell:

mongo --eval 'db.runCommand({ connectionStatus: 1 })'

Если возвращаемое поле “ok” равно 1, подключение успешно.

Создание администратора MongoDB

Подключитесь к mongo shell:

mongo

Переключитесь на базу admin и создайте пользователя администратора:

> use admin
> db.createUser({user: "admin" , pwd: passwordPrompt() , roles: [{ role: "userAdminAnyDatabase" , db: "admin"}]})
Enter password:

Затем выйдите:

> quit()

Важно: после создания администратора включите аутентификацию в /etc/mongod.conf и перезапустите сервис, если планируете использовать MongoDB в бою.

Установка Node.js

Добавьте репозиторий NodeSource для Node 14.x и установите nodejs:

curl -sL https://deb.nodesource.com/setup_14.x | bash -
apt-get install nodejs -y

Проверьте версии:

node --version
npm --version

Ожидаемая версия node: v14.x и npm 6.x в рамках этого руководства.

Установка React

Установите утилиту create-react-app глобально и создайте приложение:

npm install -g create-react-app
create-react-app myapp

Пример вывода при успешном создании содержится в исходном руководстве. Запуск в режиме разработки:

cd myapp
npm start 0.0.0.0

Откройте: http://your-server-ip:3000 чтобы увидеть приложение.

Запущенное приложение React — скриншот

Нажмите CTRL+C чтобы остановить dev-сервер.

Примечание: для production-окружения используйте сборку npm run build и static-сервер (serve, nginx, pm2 и т.д.).

Установка Express

Установите express-generator и создайте проект:

npm install -g express-generator
express myproject
cd myproject
npm install

Запустите приложение Express:

npm start 0.0.0.0

Откройте: http://your-server-ip:3000 чтобы увидеть работу сервера Express.

Шаблон приложения Express — скриншот

Базовые проверки и отладка

  • Проверка слушающих портов:
ss -tulnp | grep -E '3000|27017'
  • Проверка логов MongoDB:
journalctl -u mongod --since "10 minutes ago"
  • Перезапуск сервисов:
systemctl restart mongod
  • Проверка разрешений файловой системы для каталогов проектов и node_modules.

Рекомендации по безопасности

Важно принять меры защиты перед выпуском в продакшн:

  • Включите аутентификацию в MongoDB и создайте отдельного пользователя для приложения.
  • Откройте доступ в UFW только к нужным портам:
ufw allow OpenSSH
ufw allow 3000/tcp
ufw enable
  • Запускайте приложения не от root. Создайте отдельного пользователя для Node/Express.
  • Храните конфиденциальные ключи и пароли в переменных окружения, не в репозитории.
  • Используйте HTTPS (Let’s Encrypt) и обратный прокси (nginx) для публичных приложений.
  • Ограничьте доступ к MongoDB из внешней сети или используйте VPN.

Развёртывание и процесс обслуживания

Короткая методология для production-развёртывания:

  1. Соберите фронтенд: npm run build.
  2. Настройте nginx как обратный прокси для Node/Express и раздачи статики React.
  3. Запустите серверы через process manager (pm2, systemd) для автоперезапуска.
  4. Настройте логирование и ротацию логов.
  5. Настройте бекапы MongoDB (mongodump, опции облачных провайдеров).

Пример systemd-юнита для Node (образец):

[Unit]
Description=My Node App
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Критерии приёмки

  • MongoDB запущен и отвечает на локальные подключения: mongo –eval ‘db.runCommand({ connectionStatus: 1 })’ возвращает ok: 1.
  • Node.js и npm установлены и версии соответствуют требованиям проекта.
  • React-приложение успешно открывается по порту 3000 в режиме разработки.
  • Express-приложение запускается и отвечает на HTTP-запросы.
  • Для production — nginx/pm2/systemd настроены, HTTPS включён, аутентификация MongoDB активирована.

Роли и задачи

DevOps checklist:

  • Настроить брандмауэр и ограничения доступа.
  • Настроить systemd/pm2, автоматические бекапы.

Backend developer checklist:

  • Создать пользователя MongoDB с минимальными правами.
  • Настроить переменные окружения для DB_URI и секретов.

Frontend developer checklist:

  • Проверить работу API из React на локальной машине.
  • Подготовить сборку npm run build и проверить статическую раздачу.

Частые ошибки и способы их устранения

  • Проблема: mongod не запускается после изменения конфигурации.

    • Проверка: journalctl -u mongod для подробных ошибок.
    • Решение: откатить некорректные изменения в /etc/mongod.conf и перезапустить.
  • Проблема: порт 3000 занят.

    • Проверка: ss -tulnp | grep 3000
    • Решение: завершить процесс или изменить порт в .env/скриптах.
  • Проблема: CORS ошибки при обращении React к API.

    • Решение: настроить CORS в Express (npm install cors) и дать разрешённые домены.

Советы по миграции и совместимости

  • Если у вас более новая/старая версия MongoDB или Node, проверяйте совместимость библиотек (mongoose, драйвер MongoDB).
  • Для перехода на MongoDB 5/6 изучите изменения в конфигурации и требования к TLS.
  • Для обновления Node используйте nvm в локальной разработке, а на сервере — репозитории NodeSource с тестированием зависимостей.

Краткая памятка команд

  • Обновление системы: apt-get update -y
  • Установка зависимостей: apt-get install gnupg2 wget curl unzip git -y
  • Установка MongoDB: apt-get install mongodb-org -y
  • Проверка MongoDB: mongo –eval ‘db.runCommand({ connectionStatus: 1 })’
  • Установка Node: curl -sL https://deb.nodesource.com/setup_14.x | bash - && apt-get install nodejs -y
  • Создание React: npx create-react-app myapp
  • Создание Express: npm install -g express-generator && express myproject

Заключение

Поздравляем — вы установили стек MERN на Ubuntu 20.04 и получили базовую рабочую среду для разработки. Дальше рекомендуем настроить CI/CD, бекапы и HTTPS, а также переместить production-сервисы под управление systemd или pm2.

Важно: если у вас возникли конкретные ошибки или вы хотите шаблон systemd/nginx под свой проект, опишите конфигурацию, и я помогу подготовить конфигурационные файлы.

Сводка ключевых элементов

  • MongoDB 4.4, Node.js 14, npm 6, create-react-app и express-generator — основные инструменты.
  • Безопасность: включите аутентификацию MongoDB и используйте UFW/nginx/HTTPS.
  • Развёртывание: сборка фронтенда, nginx как обратный прокси, systemd/pm2 для процессов.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро