Это - результат индивидуального задания по предмету Базы данных 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
.