199 lines
4.9 KiB
Markdown
199 lines
4.9 KiB
Markdown
# Aerbim
|
||
|
||
Это репозиторий сайта Aerbim. Этот проект включает в себя фронтенд на Next.js и бэкенд на Django.py с базой данных PostgreSQL.
|
||
|
||
## Описание
|
||
|
||
Приложение Aerbim является дашбордом для визуализации показаний датчиков в 3D модели здания.
|
||
|
||
## Технологии
|
||
|
||
### Фронтенд
|
||
|
||
- **Next.js** - библиотека для создания пользовательских интерфейсов.
|
||
|
||
### Бэкенд
|
||
|
||
- **Django.py** - веб-фреймворк для Python.
|
||
- **PostgreSQL** - реляционная база данных для хранения данных.
|
||
|
||
### Дизайн
|
||
|
||
- **Figma** - [Дизайн проекта.](https://www.figma.com/design/BrqSrc886HCCAYRONObOut/%D0%90%D1%8D%D1%80%D0%91%D0%98%D0%9C?node-id=711-11782&p=f&t=nMUhO2Od7DacnQkO-0)
|
||
|
||
### Тасклист
|
||
|
||
- **YouGile** - [Таскменеджер.](https://yougile.com/board/0gf3q39h0wwl)
|
||
|
||
## Установка
|
||
|
||
### Предварительные требования
|
||
|
||
Для запуска проекта вам потребуются:
|
||
|
||
- Node.js (рекомендуется версия 23.x или выше)
|
||
- Python (рекомендуется версия 3.13)
|
||
- PostgreSQL (рекомендуется версия 17.x или выше)
|
||
|
||
### Шаги для установки
|
||
|
||
1. **Клонирование репозитория:**
|
||
|
||
```sh
|
||
git clone https://gitlab.com/wedeving/aerbim-www
|
||
cd aerbim-www
|
||
```
|
||
|
||
2. **Установка зависимостей для фронтенда и бэкенда:**
|
||
|
||
```sh
|
||
cd frontend
|
||
npm install
|
||
|
||
cd backend
|
||
pipenv shell
|
||
pipenv install
|
||
```
|
||
|
||
3. **Настройка переменных окружения:**
|
||
|
||
Создайте файл `.env` в директориях ./frontend и ./backend и добавьте необходимые переменные окружения:
|
||
|
||
```env/backend
|
||
#django settings
|
||
SECRET_KEY=
|
||
DEBUG_MODE=
|
||
BASE_URL=
|
||
MEDIA_ROOT=
|
||
CORS_ALLOW_ALL_ORIGINS=
|
||
CORS_ALLOWED_ORIGINS=
|
||
ALLOWED_HOSTS=
|
||
CSRF_TRUSTED_ORIGINS=
|
||
|
||
|
||
#database
|
||
DB_NAME=
|
||
DB_USER=
|
||
DB_PASSWORD=
|
||
DB_HOST=
|
||
DB_PORT=
|
||
|
||
```
|
||
|
||
```env/frontend
|
||
#server components url
|
||
NEXT_PUBLIC_API_URL=
|
||
|
||
#auth
|
||
NEXTAUTH_URL=
|
||
BACKEND_URL=
|
||
NEXTAUTH_SECRET=
|
||
```
|
||
|
||
4. **Настройка базы данных:**
|
||
|
||
Создайте базу данных PostgreSQL и выполните миграции:
|
||
|
||
```sh
|
||
createdb aerbimdb
|
||
# Выполните миграции, если они имеются. В проекте откройте директорию backend
|
||
cd backend
|
||
python manage.py makemigrations
|
||
python manage.py migrate
|
||
```
|
||
|
||
5. **Локальная разработка:**
|
||
|
||
Откройте два терминала или используйте вкладки в одном терминале.
|
||
|
||
В первом терминале запустите бэкенд:
|
||
|
||
```
|
||
cd backend
|
||
python manage.py runserver
|
||
```
|
||
|
||
Во втором терминале запустите фронтенд:
|
||
|
||
```
|
||
cd frontend
|
||
npm run dev
|
||
```
|
||
|
||
Теперь проект будет доступен по адресу `http://localhost:3000`.
|
||
|
||
### Инструкция по деплою.
|
||
|
||
1. **Заходим в нужные директории:**
|
||
|
||
```sh
|
||
cd backend
|
||
cd frontend
|
||
```
|
||
|
||
2. **Запускаем сборку контейнеров в каждом терминале:**
|
||
|
||
```sh
|
||
just docker-build
|
||
```
|
||
|
||
3. **Добавляем ключ гитлаба (один раз на сессию терминала, нужно каждый раз делать заново):**
|
||
|
||
```sh
|
||
export GITLAB_TOKEN={token} ;export GITLAB_USER={user}
|
||
```
|
||
|
||
4. **Проверяем, что ключи добавились:**
|
||
|
||
```sh
|
||
env
|
||
```
|
||
В консоли должны увидеть наш ключ и имя пользователя
|
||
|
||
5. **Заливаем свежую сборку в GitLab (отдельно каждый контейнер):**
|
||
|
||
```sh
|
||
just docker-push
|
||
```
|
||
|
||
6. **Собираем в продакшне:**
|
||
|
||
```sh
|
||
cd ansible
|
||
ansible-playbook -i inventory/prod.yaml playbooks/aerbim.yaml
|
||
```
|
||
Эта команда собирает все контейнеры, отдельно собирать не нужно.
|
||
|
||
### Миграции в продакшне.
|
||
|
||
1. **После сборки заходим в контейнер:**
|
||
|
||
```sh
|
||
docker exec -it aerbim-backend-1 sh
|
||
```
|
||
|
||
2. **Проводим миграции:**
|
||
|
||
```sh
|
||
python manage.py migrate
|
||
```
|
||
|
||
### Логи в продакшне.
|
||
|
||
1. **Логи фронтенда:**
|
||
|
||
```sh
|
||
docker logs -f aerbim-frontend-1
|
||
```
|
||
|
||
2. **Логи бекенда:**
|
||
|
||
```sh
|
||
docker logs -f aerbim-backend-1
|
||
```
|
||
|
||
3. **Логи сервера:**
|
||
|
||
```sh
|
||
tail -f /var/log/angie/access.log
|
||
``` |