146 lines
6.4 KiB
Markdown
146 lines
6.4 KiB
Markdown
|
|
# EEV\_Proj Server
|
|||
|
|
|
|||
|
|
Этот репозиторий содержит серверную часть проекта **EEV\_Proj** (ветка `server`), реализованную с использованием Node.js и Express. Сервер отвечает за API, взаимодействует с базой данных и обслуживает статические файлы фронтенда.
|
|||
|
|
|
|||
|
|
## Оглавление
|
|||
|
|
|
|||
|
|
1. [Описание проекта](#описание-проекта)
|
|||
|
|
2. [Технологии](#технологии)
|
|||
|
|
3. [Установка и запуск](#установка-и-запуск)
|
|||
|
|
|
|||
|
|
* [Клонирование](#клонирование)
|
|||
|
|
* [Установка зависимостей](#установка-зависимостей)
|
|||
|
|
* [Настройка окружения](#настройка-окружения)
|
|||
|
|
* [Запуск проекта](#запуск-проекта)
|
|||
|
|
4. [Структура проекта](#структура-проекта)
|
|||
|
|
5. [Основные модули](#основные-модули)
|
|||
|
|
6. [PM2 конфигурация](#pm2-конфигурация)
|
|||
|
|
7. [Контакты](#контакты)
|
|||
|
|
|
|||
|
|
## Описание проекта
|
|||
|
|
|
|||
|
|
Проект **EEV\_Proj** представляет собой веб-приложение с клиентской и серверной частями. Ветка `server` содержит сервер, который:
|
|||
|
|
|
|||
|
|
* Обрабатывает HTTP-запросы и предоставляет REST API.
|
|||
|
|
* Подключается к базе данных для хранения и извлечения данных.
|
|||
|
|
* Раздаёт статические файлы фронтенда (HTML/CSS/JS).
|
|||
|
|
* Поддерживает кластерный запуск через PM2.
|
|||
|
|
|
|||
|
|
## Технологии
|
|||
|
|
|
|||
|
|
* **Node.js** — среда выполнения JavaScript.
|
|||
|
|
* **Express** — веб-фреймворк для Node.js.
|
|||
|
|
* **PM2** — процесс-менеджер для Node.js приложений.
|
|||
|
|
* **MySQL / PostgreSQL / MongoDB** (в зависимости от вашей настройки) — СУБД.
|
|||
|
|
* **JavaScript (ES6+)** — основной язык разработки.
|
|||
|
|
|
|||
|
|
## Установка и запуск
|
|||
|
|
|
|||
|
|
### Клонирование
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git clone https://github.com/IprokK/EEV_Proj.git
|
|||
|
|
cd EEV_Proj
|
|||
|
|
git checkout server
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Установка зависимостей
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
npm install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Настройка окружения
|
|||
|
|
|
|||
|
|
Создайте файл `.env` в корне проекта и добавьте необходимые переменные:
|
|||
|
|
|
|||
|
|
```dotenv
|
|||
|
|
# Сервер
|
|||
|
|
PORT=3000
|
|||
|
|
|
|||
|
|
# База данных
|
|||
|
|
DB_HOST=localhost
|
|||
|
|
DB_PORT=5432
|
|||
|
|
DB_USER=your_username
|
|||
|
|
DB_PASS=your_password
|
|||
|
|
DB_NAME=your_database
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Запуск проекта
|
|||
|
|
|
|||
|
|
* **Обычный запуск**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
node server.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
* **Через PM2**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pm2 start ecosystem.config.js --env production
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Откройте браузер и перейдите по адресу `http://localhost:<PORT>/`.
|
|||
|
|
|
|||
|
|
## Структура проекта
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
EEV_Proj/
|
|||
|
|
├── public/ # Статические файлы фронтенда (HTML, CSS, JS)
|
|||
|
|
├── src/ # Исходники клиентской части:
|
|||
|
|
│ ├── index.html # Основной HTML-шаблон приложения
|
|||
|
|
│ ├── index.js # Точка входа React: монтирует корневой компонент
|
|||
|
|
│ ├── App.js # Корневой React-компонент приложения
|
|||
|
|
│ ├── components/ # Папка переиспользуемых React-компонентов
|
|||
|
|
│ │ └── … # Компоненты (например, Header, Footer, Dashboard и т.д.)
|
|||
|
|
│ ├── services/ # Модуль для работы с API (REST-запросы к серверу)
|
|||
|
|
│ │ └── api.js # Пример файла с конфигурацией запросов
|
|||
|
|
│ ├── utils/ # Утилитарные функции и хелперы (валидация, форматирование)
|
|||
|
|
│ ├── styles/ # Глобальные стили и темы (CSS/SCSS файлы)
|
|||
|
|
│ └── assets/ # Статические ресурсы (изображения, шрифты)
|
|||
|
|
├── .env # Переменные окружения (не хранится в репозитории)
|
|||
|
|
├── db.js # Модуль подключения к базе данных
|
|||
|
|
├── server.js # Точка входа сервера (Express application)
|
|||
|
|
├── ecosystem.config.js # Конфигурация для PM2
|
|||
|
|
├── package.json # Описание зависимостей и npm-скрипты
|
|||
|
|
└── README.md # Описание проекта (вы находитесь здесь)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Основные модули
|
|||
|
|
|
|||
|
|
* **server.js** — стартовый файл, инициализирует Express, настраивает middleware, роуты и запускает сервер.
|
|||
|
|
* **db.js** — конфигурирует подключение к базе данных через выбранный драйвер.
|
|||
|
|
* **public/** — содержит готовый к раздаче фронтенд (сборка или статические файлы).
|
|||
|
|
* **src/** — содержит исходники клиентской части (React-компоненты, сервисы, утилиты).
|
|||
|
|
* **ecosystem.config.js** — позволяет управлять процессом сервера через PM2.
|
|||
|
|
|
|||
|
|
## PM2 конфигурация
|
|||
|
|
|
|||
|
|
Файл `ecosystem.config.js` позволяет управлять процессом сервера в продакшене:
|
|||
|
|
|
|||
|
|
```js
|
|||
|
|
module.exports = {
|
|||
|
|
apps: [{
|
|||
|
|
name: "EEV_Server",
|
|||
|
|
script: "server.js",
|
|||
|
|
env: {
|
|||
|
|
NODE_ENV: "development",
|
|||
|
|
},
|
|||
|
|
env_production: {
|
|||
|
|
NODE_ENV: "production",
|
|||
|
|
}
|
|||
|
|
}]
|
|||
|
|
};
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Запуск в режиме продакшен:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pm2 start ecosystem.config.js --env production
|
|||
|
|
pm2 logs EEV_Server
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Контакты
|
|||
|
|
|
|||
|
|
Если у вас возникли вопросы или предложения, создайте issue в репозитории или напишите Ilya Nice напрямую.
|