Цей проєкт реалізує базовий форум із використанням Node.js для серверної частини та MySQL для зберігання даних. Нижче описано інструкції щодо встановлення, налаштування бази даних і запуску застосунку на Ubuntu.
sudo apt update
sudo apt install mysql-serverВідредагуйте конфігураційний файл:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf🔁 Знайдіть рядок bind-address і змініть його на:
bind-address = 0.0.0.0
Це дозволить підключення до MySQL з інших хостів.
Після цього перезапустіть MySQL:
sudo service mysql restartЗапустіть MySQL:
mysql -u root -pВиконайте такі команди у MySQL-консолі:
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';🔐 Замість
%ви можете вказати конкретну IP-адресу хоста, якому дозволено підключення.%— це шаблон, що дозволяє доступ з будь-якого хоста (небезпечно для продакшену).🔑 Пароль
'pass'слід замінити на надійний, з урахуванням політик безпеки.
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
CREATE DATABASE db;
USE db;-- Таблиця користувачів
CREATE TABLE account (
id SERIAL PRIMARY KEY,
login VARCHAR(255) UNIQUE NOT NULL,
pass VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL
);
-- Таблиця тем
CREATE TABLE topics (
id SERIAL PRIMARY KEY,
user_id BIGINT UNSIGNED NOT NULL,
title VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES account(id) ON DELETE CASCADE
);
-- Таблиця повідомлень
CREATE TABLE messages (
id SERIAL PRIMARY KEY,
user_id BIGINT UNSIGNED NOT NULL,
topic_id BIGINT UNSIGNED NOT NULL,
message_text TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES account(id) ON DELETE CASCADE,
FOREIGN KEY (topic_id) REFERENCES topics(id) ON DELETE CASCADE
);sudo apt update
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
source ~/.bashrc
nvm install node
nvm use nodecd /шлях/до/твого/репозиторіюsudo apt install npm
sudo npm install🔧 Перед запуском застосунку потрібно відкрити файл db.js і змінити параметри підключення до бази даних:
const connection = mysql.createConnection({
host: 'localhost', // або IP вашого сервера MySQL
user: 'user', // ім’я користувача, якого ви створили
password: 'pass', // пароль
database: 'db' // назва бази даних
});Без цього застосунок не зможе з'єднатися з базою даних.
node app.jsnpm install -g pm2
pm2 start app.jsДля зупинки:
pm2 stop app.js- Переконайся, що порт, який використовує застосунок, відкритий у брандмауері або в cloud-середовищі.
- Не використовуйте српавжні паролі при створенні акаунту, проект взагалі не захищений, і був створений виключно в навчальних цілях.