Skip to content

Repository files navigation

Лабораторна робота: Розгортання веб-застосунку (Task Tracker)

1. Варіант індивідуального завдання

Розрахунок варіанту виконано на основі числа N = 7.

  • База даних: 7 % 2 + 1 = 2 (PostgreSQL)
  • Веб-застосунок: 7 % 3 + 1 = 2 (Task Tracker)
  • Внутрішній порт та додаткові вимоги: 7 % 5 + 1 = 3 (Порт 3000, використання Systemd Socket Activation).

2. Документація по розробленому веб-застосунку

Призначення застосунку

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

Документація по API-ендпоінтах

Застосунок підтримує 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, якщо база недоступна.

3. Документація по розгортанню

Базовий образ віртуальної машини

Вимоги до ресурсів ВМ

  • 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

4. Інструкція з тестування розгорнутої системи

Після завершення роботи скрипта setup.sh систему можна перевірити наступними кроками:

1. Перевірка статусу Socket Activation

Переконайтеся, що сервіс активується через сокет (порт 3000):

systemctl status mywebapp.socket

2. Перевірка Reverse Proxy (Nginx)

Nginx налаштований так, щоб віддавати назовні лише бізнес-логіку на порту 80:

  • Дозволено: curl -i http://localhost/tasks (має повернути 200 OK та список задач).
  • Заблоковано (безпека): curl -i http://localhost/health/alive (має повернути 404 Not Found — це підтверджує роботу правил обмеження доступу).

3. Перевірка Content Negotiation

Сервер динамічно змінює формат відповіді залежно від заголовка Accept:

  • HTML (для браузера): curl -H "Accept: text/html" http://localhost/tasks
  • JSON (для API): curl -H "Accept: application/json" http://localhost/tasks

4. Робота від імені оператора

Перевірка обмежених прав sudo для користувача operator згідно з технічним завданням:

# Перехід під користувача operator
su - operator

# Перевірка статусу сервісу (дозволено)
sudo systemctl status mywebapp.service

# Спроба оновити пакети (буде відхилено системою безпеки)
sudo apt update

5. Додаткова документація

Повні звіти та супровідна документація до лабораторних робіт у форматі DOCX доступні за посиланнями нижче:

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages