Деплой Flask приложения на сервер

Чтобы скопировать все файлы Flask приложения на удаленный сервер с использованием команды scp (Secure Copy), следуйте этой инструкции:

  1. Откройте терминал на локальной машине.
  2. Используйте команду scp, чтобы скопировать все файлы и папки Flask приложения на удаленный сервер. Синтаксис команды scp выглядит следующим образом:
scp -r /путьклокальнойпапкесприложением/* имяпользователя@удаленныйсервер:/путьнаудаленномсервере/
  • -r — это флаг, указывающий scp копировать файлы и папки рекурсивно.
  • /путьклокальнойпапкес_приложением/ — полный путь к вашей локальной папке с Flask приложением.
  • * — копирует все файлы и подпапки из указанной локальной директории.
  • имя_пользователя — имя пользователя на удаленном сервере.
  • удаленный_сервер — IP-адрес или доменное имя удаленного сервера.
  • /путьнаудаленном_сервере/ — полный путь к директории на удаленном сервере, в которую вы хотите скопировать файлы.
  1. Введите пароль вашего пользователя на удаленном сервере, когда вас попросят.
  2. После завершения копирования, убедитесь, что все файлы успешно скопированы на удаленный сервер, перейдя в директорию Flask приложения на сервере.
  3. Теперь вы можете перейти к запуску вашего Flask приложения на удаленном сервере.

Для наглядности описываю свои действия по шагам:

  1. Захожу на сервер и создаю новую директорию для приложения.
ssh user@213.226.124.251
mkdir new_year_application

2. Выхожу с сервера (Ctrl + D).

3. Копирую файлы проекта в созданную директорию.

scp -r ~/webdev/python_advanced/module_08_deploy/materials/new_year_application/* user@213.226.124.251:/home/user/new_year_application/

4. Запускаю приложение с указанием хоста моего сервера.

flask run -h 213.226.124.251

Если приложение не запустилось, скорее всего вы не установили необходимые зависимости на сервер. О том, как это сделать, написано в этой статье.

В дальнейшем, при изменении проекта, нет смысла копировать его полностью заново, после каждой правки. Для синхронизации проекта и рационального использования ресурсов лучше использовать утилиту rsync. На Ubuntu она обычно предустановлена, проверить ее наличие можно командой в терминале:

whereis rsync

Если утилита не установлена, ниже команда для установки, а так же документация.

apt-get install rsync

Использовать rsync не сложнее scp.

Шпаргалка по rsync

  • Синхронизация каталогов dir1 и dir2 на одной машине: rsync -a dir1 dir2
  • Синхронизация удалённой системы: rsync -a local_dir username@remote_host:remote_dir
  • В обратную сторону:rsync -a username@remote_host: remote_dir local_dir
  • Использование с ключом: rsync -e ‘ssh -i timeweb’ -Paz username@remote_host:remote_dir local_dir

Опции:

−r — рекурсивная синхронизация.
−a — режим архива, эквивалент -rlptgoD.
−z — сжатие данных.
−P — показать прогресс синхронизации.
−e — используется для задания параметров при подключении через SSH.

Для наглядного примера вот этой командой я синхронизировал файлы проекта при добавлении нового js скрипта в html код главной страницы:

rsync -a ~/webdev/python_advanced/module_08_deploy/materials/new_year_application/* user@213.226.124.251:/home/user/new_year_application/