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

Что такое стек 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.
- Доступ в интернет для загрузки пакетов и репозиториев.
План установки — краткий
- Обновить пакеты системы.
- Установить зависимости и добавить репозиторий MongoDB, затем установить MongoDB и включить аутентификацию.
- Установить Node.js (14.x) и npm.
- Создать React-приложение через create-react-app и протестировать.
- Создать базовый проект Express через express-generator.
- Применить базовые меры безопасности и проверить запуск сервисов.
Начало работы
Обновите пакеты системы:
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 чтобы увидеть приложение.

Нажмите 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.

Базовые проверки и отладка
- Проверка слушающих портов:
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-развёртывания:
- Соберите фронтенд: npm run build.
- Настройте nginx как обратный прокси для Node/Express и раздачи статики React.
- Запустите серверы через process manager (pm2, systemd) для автоперезапуска.
- Настройте логирование и ротацию логов.
- Настройте бекапы 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 для процессов.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента