# Инструкция по локальной установке проекта “ПлюсАгент”. Бэкенд и фронтенд.
## Предварительные требования:
- MySQL v5
- Apache HTTPD v2
## Этап 1. Установка бэкенд-приложения
1. Клонировать репозиторий `queses/lx-site-rebuild` и перейти в папку `/backend`
2. Выполнить `sh env.sh` (на Windows: создать копию файла `env.dist` под названием `.env`)
3. Создать две базы данных MySQL - одну для разработки (например, `lxnew`), и другую для тестирования (например, `lxnew_test`)
4. Отредактировать `.env`: наименование БД для разработки, имя пользователя и пароль пользователя в переменные `DB_NAME`, `DB_USER` и `DB_PASS` соответственно
5. Отредактировать `.env`: наименование БД для тестирования, имя пользователя и пароль пользователя в переменные `DB_NAME_TEST`, `DB_USER_TEST` и `DB_PASS_TEST` соответственно
6. Записать в `.env` локальный веб-адрес проекта:
```
HOST = http://api.plusagent.localhost
MAIN_HOST = http://plusagent.localhost
PORT = 3006
FRONTEND_HOST = http://plusagent.localhost
```
7. Записать в `.env` случайные ключи шифрования, например:
```
JWT_SIGN_KEY = ZOPwAn76LxSzxTpraIHmBsbfRUeAOvyO
CRYPTO_KEY_JWT = ItAux_tRqoSkuxY3vAsdAElO
CRYPTO_IV_JWT = 0CV58Tn4JnvXpdst
```
8. Выполнить миграцию БД для разработки командой `yarn orm schema:sync`
9. Выполнить миграцию БД для тестирования командой `yarn orm:test schema:sync`
10. Проверить, что выполняются тесты командой `yarn test`
## Этап 2. Получение тестовых данных
1. Перейти в в директорию `/backend`
2. Выполнить команду `yarn do lx:app-init:run`, тем самым добавив в БД начальные данные
3. Выполнить команду `yarn do intrum:pull null 1`, тем самым загрузив из CRM список специалистов, объектов и собственников. Команда загружает из CRM необходимые данные, включая фотографии, поэтому выполнение может занять некоторое время
> Справка по синтаксису команды: `yarn do` запускает консольный контроллер (по аналогии с веб-контроллером) и вызывает обработчик команды `intrum:pull`. `null 4` - это аргументы, разделённые пробелами. Первый аргумент - это `id` риэлтора, чьи объекты нужно загрузить; нам нужны все риэлторы, поэтому пишем `null`. Второй агрумент - количество страниц, которые нужно загрузить.
## Этап 3. Установка фронтенд-приложения
1. Перейти в директорию `/frontend`
2. Выполнить команду `git submodule init`
3. Выполнить команду `git submodule update`; проверить, что в директории `lib/lx-request` появились файлы
4. Выполнить `sh env.sh` (на Windows: создать копию файла `env.dist` под названием `.env`)
5. Записать в `.env` локальный веб-адрес проекта:
```
API_HOST = http://api.plusagent.localhost
AUTH_API_HOST = http://api.plusagent.localhost
AUTH_FRONT_HOST = http://plusagent.localhost
```
## Этап 4. Проксирование локальных адресов
Для этого этапа должен быть установлен и настроен веб-сервер Apache, должен быть включены модули для работы с прокси. Иструкция для Windows доступна по [ссылке](https://gist.github.com/erodewald/cfed87b4ec3f362006bb). Выполнять последний пункт не нужно; вместо него нужно выполнить следующие шаги:
1. Открыть Apache24\conf\extra\httpd-vhosts.conf в текстовом редакторе
2. Добавить:
```xml=
<VirtualHost *:80>
ServerName plusagent.localhost
ProxyPass / http://127.0.0.1:3007/
ProxyPassReverse / http://127.0.0.1:3007/
</VirtualHost>
<VirtualHost *:80>
ServerName api.plusagent.localhost
ProxyPass / http://127.0.0.1:3006/
ProxyPassReverse / http://127.0.0.1:3006/
</VirtualHost>
```
3. Открыть в текстовом редакторе с правами администратора файл hosts `c:\windows\system32\drivers\etc\hosts` и добавить туда записи:
```
127.0.0.1 plusagent.localhost
127.0.0.1 api.plusagent.localhost
```
Для Linux и macOS установка Apache сводится к загрузке пакета из терминала (с помощью `brew`, `apt`, `pacman` и т. д.) и выполнению действий, описанных ниже.
## Этап 5. Запус веб-приложения
1. Запустите бекенд-приложение командой `yarn dev` из директории `/backend`
2. Запустите фронтенд-приложение командой `yarn dev` из директории `/frontend`
## Дополнительная информаци
### Установка MySQL и создание баз данных
Инструкция для Windows (для других ОС действия аналогичные):
1. Установить MySQL v5 из [файла](https://dev.mysql.com/downloads/file/?id=492048)
2. Выполнить в консоли команду `mysql -u root`; откроется клиент MySQL, в котором нужно выполнить следующие команды:
```
CREATE DATABASE `lxnew` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE `lxnew_test` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```