Инструкция по развертыванию на выделенный сервер с доступом по внешнему IP: install.md
This commit is contained in:
parent
d74ff94c45
commit
f40ff5f248
107
install.md
Normal file
107
install.md
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
### Инструкция по развертыванию на выделенный сервер с доступом по внешнему 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.
|
||||||
Loading…
x
Reference in New Issue
Block a user