Бэкенд видео-хостинга. Позволяет загружать видео, смотреть, оставлять комментарии и реакции.
Все загруженные видео отправляются на модерацию и могут быть опубликованы только после успешного ее прохождения.
Бэкенд разбит на два сервиса: публичный сервис (для посетителей сайта и авторов), админка (для модераторов).
Для корректной работы сервисов потребуется:
- PostgreSQL
- ZooKeeper + Apache Kafka
- Nginx
- Wildfly
- Минимум один почтовый ящик
@yandex.ru
(для отправки писем от лица сервиса)
- Собрать war-файл (из директории
rutube
):
./mvnw package
-
Сделать копию
standalone
директории внутри Wildfly и назватьrutube
-
Положить собранный war-файл по пути
<path_to_wildfly>/rutube/deployments
-
Запустить сервис:
<path_to_wildfly>/bin/standalone -Djboss.server.base.dir=<absolute_path_to_wildfly>/rutube
Сервис будет слушать порт 8080
.
- Собрать war-файл (из директории
rutube-admin
):
./mvnw package
-
Сделать копию
standalone
директории внутри Wildfly и назватьrutube-admin
-
Положить собранный war-файл по пути
<path_to_wildfly>/rutube-admin/deployments
-
Запустить сервис (в двух копиях):
<path_to_wildfly>/bin/standalone.sh -Djboss.server.base.dir=<absolute_path_to_wildfly>/rutube-admin -Djboss.socket.binding.port-offset=1111 -Dspring.profiles.active=master
<path_to_wildfly>/bin/standalone.sh -Djboss.server.base.dir=<absolute_path_to_wildfly>/rutube-admin -Djboss.socket.binding.port-offset=1212
- Запустить Nginx с заданной конфигурацией
Два экземпляра сервиса будут слушать порты 9191
и 9292
, а Nginx-балансер будет слушать порт 9090
.
Конфигурировать сервисы можно перед запуском через переменные окружения.
Пример переменных окружения для сервисов:
RUT_DB_URL=jdbc:postgresql://localhost:5432/rutube
RUT_DB_USER=rutube
RUT_DB_PASS=<some-pass>
RUT_JWT_SECRET=<some-secret>
RUT_KFK_SERVERS=localhost:9092
RUT_MAIL_USER=<some-user>
RUT_MAIL_PASS=<some-pass>
RUTA_DB_URL=jdbc:postgresql://localhost:5432/rutube
RUTA_DB_USER=rutube_admin
RUTA_DB_PASS=<some-pass>
RUTA_JWT_SECRET=<some-secret>
RUTA_KFK_SERVERS=localhost:9092
RUTA_MAIL_USER=<some-user>
RUTA_MAIL_PASS=<some-pass>
Также часть конфигурации можно осуществлять через .properties
файлы: