До основного вмісту

Перенесення Python і Node.js застосунків на новий VDS-сервер

Міграція · 19.04.2026 · 2 хв читання
Ілюстрація до статті «Перенесення Python і Node.js застосунків на новий VDS-сервер»

Перенесення Python і Node.js застосунків має свою специфіку: окрім файлів і БД потрібно перенести середовище, встановити залежності та налаштувати systemd-сервіси для автозапуску.

Перенесення Python/Django застосунку

1. Зафіксувати залежності

># На старому сервері
source /path/to/venv/bin/activate
pip freeze > requirements.txt

# Перенести на новий сервер
git clone https://github.com/your/repo.git /var/www/myapp
# або rsync
rsync -avz /var/www/myapp/ root@new-server:/var/www/myapp/

2. Розгорнути на новому сервері

># Створити віртуальне середовище
python3 -m venv /var/www/myapp/venv
source /var/www/myapp/venv/bin/activate

# Встановити залежності
pip install -r requirements.txt

# Змінні середовища — перенести файл .env
scp old-server:/var/www/myapp/.env /var/www/myapp/.env

# Застосувати міграції БД
python manage.py migrate

# Зібрати статику
python manage.py collectstatic --noinput

3. Налаштування systemd для Django (Gunicorn)

># /etc/systemd/system/myapp.service
[Unit]
Description=Django App via Gunicorn
After=network.target

[Service]
User=www-data
WorkingDirectory=/var/www/myapp
EnvironmentFile=/var/www/myapp/.env
ExecStart=/var/www/myapp/venv/bin/gunicorn     --workers 3     --bind unix:/run/myapp.sock     myapp.wsgi:application

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl enable --now myapp

Перенесення Node.js застосунку

1. Зафіксувати версію Node.js

># Дізнатися версію на старому сервері
node --version
npm --version

# Встановити nvm на новому сервері
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20  # Встановити потрібну версію

2. Перенесення і відновлення

># Перенести лише код (без node_modules!)
rsync -avz --exclude=node_modules   /var/www/nodeapp/ root@new-server:/var/www/nodeapp/

# Встановити залежності на новому сервері
cd /var/www/nodeapp
npm ci  # чиста установка з package-lock.json

# Перенести .env
scp old-server:/var/www/nodeapp/.env /var/www/nodeapp/

3. PM2 для автозапуску

># Встановити PM2
npm install -g pm2

# Запустити застосунок
pm2 start app.js --name myapp

# Зберегти конфігурацію PM2 (експорт зі старого сервера)
# На старому сервері
pm2 save

# Перенести конфіг
scp old-server:~/.pm2/dump.pm2 ~/.pm2/
pm2 resurrect

# Налаштувати автозапуск при перезавантаженні
pm2 startup
pm2 save

Nginx Reverse Proxy для Python/Node.js

># /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name myapp.example.com;

    location / {
        proxy_pass http://unix:/run/myapp.sock;  # Python/Gunicorn
        # або
        # proxy_pass http://localhost:3000;       # Node.js

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
Змінні середовища: Ніколи не комітьте файли .env у git. Під час перенесення передавайте їх через SCP або безпечний менеджер секретів (Vault, Doppler). Перевірте .gitignore перед клонуванням.
Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці