110 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Инструкция по развертыванию на выделенный сервер с доступом по внешнему IP
Предполагается, что сервер работает на Ubuntu/Debian. Замените `<external_ip>` на реальный внешний IP-адрес сервера, `<your_domain>` на домен (если есть), и настройте firewall для открытых портов (например, 22 для SSH, 80/443 для HTTP/HTTPS, 5000 для backend).
#### 1. Подготовка сервера
- Подключитесь к серверу по SSH: `ssh user@<external_ip>`
- Обновите систему: `sudo apt update && sudo apt upgrade -y`
- Установите Node.js (версия 18+):
```
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
```
- Установите PostgreSQL (если база данных не внешняя):
```
sudo apt install postgresql postgresql-contrib -y
sudo systemctl start postgresql
sudo systemctl enable postgresql
```
Создайте базу данных и пользователя (замените на свои значения):
```
sudo -u postgres psql
CREATE DATABASE time_tracking;
CREATE USER postgres WITH PASSWORD 'g7K4b4Xv!';
GRANT ALL PRIVILEGES ON DATABASE time_tracking TO postgres;
\q
```
- Установите nginx: `sudo apt install nginx -y`
- Установите PM2 для управления процессами: `sudo npm install -g pm2`
#### 2. Клонирование и настройка проекта
- Клонируйте репозиторий: `git clone https://github.com/your-repo/time-tracking-eltex.git` (замените на ваш репо)
- Перейдите в директорию: `cd time-tracking-eltex`
#### 3. Настройка backend
- Перейдите в backend: `cd backend`
- Установите зависимости: `npm install`
- Настройте `.env` файл (пример ниже, адаптируйте под свою базу):
```
DB_HOST=<db_external_ip_or_localhost>
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=g7K4b4Xv!
DB_NAME=time_tracking
JWT_SECRET=your_secure_jwt_secret
PORT=5000
```
- Запустите миграции: `npx sequelize-cli db:migrate`
- Запустите backend с PM2: `pm2 start server.js --name "backend"`
- Сохраните PM2 конфиг: `pm2 save && pm2 startup`
#### 4. Настройка frontend
- Перейдите в frontend: `cd ../frontend`
- Установите зависимости: `npm install`
- Измените URL в `src/services/api.js` и `src/components/HealthCheck.jsx` с `http://localhost:5000` на `http://<external_ip>:5000` или `https://<your_domain>` (если используете HTTPS).
- Соберите проект: `npm run build`
- Скопируйте билд в nginx: `sudo cp -r dist/* /var/www/html/`
#### 5. Настройка nginx
- Создайте конфиг для сайта: `sudo nano /etc/nginx/sites-available/time-tracking`
```
server {
listen 80;
server_name <external_ip> <your_domain>;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /health {
proxy_pass http://localhost:5000;
}
}
```
- Включите сайт: `sudo ln -s /etc/nginx/sites-available/time-tracking /etc/nginx/sites-enabled/`
- Удалите дефолтный сайт: `sudo rm /etc/nginx/sites-enabled/default`
- Проверьте конфиг: `sudo nginx -t`
- Перезапустите nginx: `sudo systemctl restart nginx`
#### 6. Настройка HTTPS (опционально, но рекомендуется)
- Установите Certbot: `sudo apt install certbot python3-certbot-nginx -y`
- Получите сертификат: `sudo certbot --nginx -d <your_domain>`
- Измените конфиг nginx для listen 443 и перенаправления с 80 на 443.
#### 7. Проверка
- Откройте браузер и перейдите на `http://<external_ip>` для frontend.
- Backend доступен на `http://<external_ip>:5000/api`.
- Убедитесь, что firewall разрешает трафик на нужные порты: `sudo ufw allow 80 && sudo ufw allow 443 && sudo ufw allow 5000`.
Если база данных внешняя, обновите `DB_HOST` в `.env` на её IP. Для продакшена измените пароль админа и JWT secret.
pm2 start npm --name "time-tracking-frontend" -- run dev