Розрахунок варіанту виконано на основі числа N = 7.
- База даних:
7 % 2 + 1 = 2(PostgreSQL) - Веб-застосунок:
7 % 3 + 1 = 2(Task Tracker) - Внутрішній порт та додаткові вимоги:
7 % 5 + 1 = 3(Порт 3000, використання Systemd Socket Activation).
Task Tracker API — це RESTful веб-застосунок для керування списком завдань (To-Do list). Дозволяє створювати задачі, переглядати їх список та змінювати статус на "виконано".
Для локального запуску без автоматизації потрібні:
- Node.js: версія 20.x або вище.
- PostgreSQL: версія 16 (база
lab1db, користувачstudent). - Залежності: виконати
npm installу директорії проєкту (встановлюєexpressтаpg). - Конфігурація: файл
config.jsonмає містити актуальні дані для підключення до БД.
- Вручну:
node server.js - Як системна служба (Production):
systemctl start mywebapp.socket
Застосунок підтримує Content Negotiation (заголовок Accept). Для GET-запитів бізнес-логіки повертається HTML-таблиця (якщо очікується text/html) або формат JSON.
Бізнес-логіка:
GET /— Кореневий ендпоінт. Повертаєtext/htmlзі списком доступних шляхів API.GET /tasks— Отримання списку всіх задач.POST /tasks— Створення нової задачі. Очікує JSON тіло:{"title": "Назва задачі"}.POST /tasks/:id/done— Зміна статусу задачі на 'done' за її ID.
Ендпоінти стану (Health Checks):
GET /health/alive— Перевірка доступності сервера. Завжди повертає HTTP 200 OK.GET /health/ready— Перевірка підключення до БД. Повертає 200 OK, якщо підключення успішне, або 500 Internal Server Error, якщо база недоступна.
- ОС: Ubuntu Server 24.04 LTS (Live Server)
- Де завантажити: Офіційний сайт Official Ubuntu 24.04 Releases.
- CPU: 1 vCore (мінімум)
- RAM: 1 GB (мінімум), 2 GB (рекомендовано)
- Disk: 10+ GB вільного простору
- Мережа: Режим NAT із прокиданням портів (22 для SSH, 80 для HTTP) або Bridged Adapter.
Спеціальна розбивка диска не вимагається (підійде стандартна). При встановленні обов'язково необхідно обрати встановлення пакету OpenSSH Server для віддаленого доступу.
- Спосіб входу: Через SSH (
ssh user@10.0.2.15). Примітка: Якщо ви використовуєте NAT у VirtualBox, доступ може здійснюватися через localhost з прокиданням портів. - Credentials (користувач за замовчуванням):
- Логін:
user - Пароль:
1234
- Логін:
Для повного розгортання проєкту з нуля достатньо виконати наступні команди на віртуальній машині:
git clone <https://github.com/olexandrakk/CSSDT-Labs.git>
cd CSSDT-Labs/TaskTracker
chmod +x setup.sh
./setup.sh
Після завершення роботи скрипта setup.sh систему можна перевірити наступними кроками:
Переконайтеся, що сервіс активується через сокет (порт 3000):
systemctl status mywebapp.socketNginx налаштований так, щоб віддавати назовні лише бізнес-логіку на порту 80:
- Дозволено:
curl -i http://localhost/tasks(має повернути 200 OK та список задач). - Заблоковано (безпека):
curl -i http://localhost/health/alive(має повернути 404 Not Found — це підтверджує роботу правил обмеження доступу).
Сервер динамічно змінює формат відповіді залежно від заголовка Accept:
- HTML (для браузера):
curl -H "Accept: text/html" http://localhost/tasks - JSON (для API):
curl -H "Accept: application/json" http://localhost/tasks
Перевірка обмежених прав sudo для користувача operator згідно з технічним завданням:
# Перехід під користувача operator
su - operator
# Перевірка статусу сервісу (дозволено)
sudo systemctl status mywebapp.service
# Спроба оновити пакети (буде відхилено системою безпеки)
sudo apt update
Повні звіти та супровідна документація до лабораторних робіт у форматі DOCX доступні за посиланнями нижче: