Это - результат индивидуального задания по предмету Базы данных PostgreSQL.
Веб-сервис базы данных участия разных музыкантов в написании альбомов, песен и прочем. Разрабатывался для запуска на платформах под управлением Linux (Скорее всего, возможен запуск и на Windows - исходный код сервера не использует ничего специфичного для Linux).
- PostgreSQL - база данных для хранения всей пользовательской информации;
- CivetWeb - http/https сервер для C/C++;
- libpqxx - коннектор к БД PostgreSQL для C++;
- nlohmann/json - библиотека для работы с JSON-объектами для C++;
- Jed# C++ SMTP Client Library - библиотека C++ для работы с почтой.
- OpenSSL - криптографическая библиотека для поддержки HTTPS и хэширования паролей пользователей.
Кроме того, для компиляции сервера необходима утилита make и c++20-совместимый компилятор (проект настроен для компиляции с помощью clang++).
- Установите необходимые зависимости. Заголовочные файлы библиотек
CivetWebиnlohmann/jsonуже содержатся в проекте. (ДляCivetWebтем не менее требуется компиляция самой библиотеки). При желании использовать HTTPS необходимо компилироватьCivetWebс ключомWITH_OPENSSL_API_3_0=1. - Загрузите файлы данного репозитория в необходимую директорию.
git clone https://github.com/f3d0rov/collaboration.git
- Перейдите в директорию сервера.
cd collaboration/backend
makefile, находщийся в данной директории, настроен для компиляции сервера с помощью компилятораclang++. Возможно использование любого другого компилятора с поддержкой стандартаc++20. Для этого потребуется изменить переменнуюCXXв файлеmakefile. При необходимости можно добавить флаги-Iпутей к исходным файлам библиотек в переменнойINCLUDEи пути к lib-файлам библиотек-Lв переменнойLIB_INCLUDE. После конфигурации исполняем:
make
- При успешной компиляции (без вывода каких-либо ошибок) будет необходимо сконфигурировать файлы с данными для подключения к БД и к почтовому серверу (если он будет использоваться). Примеры файлов конфигурации -
build/db-config-example.json(для файла конфигурации БДbuild/db-config.json) иbuild/smtp-config-example.json(для файла конфигурации почтыbuild/smtp-config.json). Для использования HTTPS необходим файлbuild/server.pem(Как создать).
- При первом запуске необходимо сконфигурировать базу данных. Для этого используется ключ
--remake-db. Он выполнит файлыsql/reset-db.sqlиsql/make-db.sqlперед запуском сервера. - В отсутствии ключей сервер будет запущен на порту 8080 без использования HTTPS, но с подключением к почтовому серверу. Для запуска без использования почты используется ключ
--no-smtp. Для изменения порта используется ключ--port <n>(Для запуска на стандартном для HTTP порту 80 скорее всего потребуются права администратора). Для запуска с HTTPS используется ключ--https. Если сервер будет доступен по определенному адресу (например, collaboration.pw), можно указать его как--domain collaboration.pw, чтобы в письмах на регистрацию указывался корректный адрес подтверждения почты.
cd build
sudo ./collab-server --remake-db --no-smtp
- По умолчанию сервер инициализирует 4 подключения к БД для совместного использования всеми потоками. Можно регулировать это количество с помощью ключа
--db-connections 8. Не рекомендуется использование менее 4 подключений. - Для вывода в лог исполняемых запросов к БД используется ключ
--log-sql. Для вывода в лог запросов и ответов API используются ключи--log-api-inи--log-api-out(или общий--log-api). Учтите, что использование этих ключей будет выводить пароли и ID пользовательских сессий в лог. - После запуска по адресу
http://localhost:8080/(для порта 8080) будет доступен веб-интерфейс базы данных. - Полный список возможных ключей доступен с помощью
./collab-server --help.
