Запуск приложения django через SSH в Windows
Этот вопрос относится к серии статей testdriven.io о том, как построить и развернуть ваше Django-приложение. Более подробно, мой вопрос относится ко второй статье из трех. Все работает хорошо, когда мы собираем локально приложение с помощью nginx и gunicorn. Затем он использует команду linux ssh user@your-ip-or-domain
для подключения к хосту, который, как я думаю, может быть именем домена, который он предлагает создать с помощью freenom.com.
Теперь я на машине Windows и понятия не имею, как выполнить эту операцию, которую он не объясняет (нужно ли копировать проект на virtualbox с linux? нужно ли запускать образ linux с docker?).
Статья, на которую я ссылаюсь, это это в параграфе "Запуск контейнеров". Я ищу более глубокое объяснение этой фазы. Большое спасибо.
которую я не знаю, как выполнить в Windows.
Автор перечисляет различные требования к приложению в разделе Prerequisites в упомянутой вами статье:
Для того чтобы следовать этому руководству, вам понадобится:
- доменное имя
- запущенная виртуальная машина Linux с установленными Docker и Docker Compose где будет развернуто ваше приложение (AWS EC2, Google Compute Engine, Digital Ocean, Linode - все это жизнеспособные варианты)
>
Нужен дешевый домен для тренировок? У нескольких регистраторов доменов есть специальные предложения на домены '.xyz'. Кроме того, вы можете создать бесплатный домен на сайте Freenom.
Подводя итог, сначала вам нужна машина, на которой вы можете запустить свой контейнер.
Эта машина должна быть доступна к интернету, чтобы let's encrypt и связанный с ним бот могли работать с вашим SSL-сертификатом.
На самом деле, вы можете использовать машину Windows или Linux, хотя для простоты, глубокой интеграции с Docker и в целях лицензирования больше подходит бесплатная версия Linux, например, Ubuntu или Debian.
Эта машина может быть размещена там, где вы считаете нужным. В настоящее время, как уже говорилось в статье, вы можете легко создать такую машину в любом из различных публичных облачных провайдеров, AWS, GCP или Azure.
На этой машине должен был быть установлен docker.
Предполагая, что вы используете, например, Ubuntu, вы можете следовать, например, этому отличному руководству для установки программного обеспечения docker.
Вам необходимо установить docker-compose, а также
Это фактически связано с другой проблемой, о которой вы говорите, как подключиться к этой машине Linux.
Во-первых, это зависит от провайдера, который вы использовали для запуска вашего экземпляра.
Вероятно, вам потребуется настроить какое-то программное обеспечение брандмауэра, чтобы разрешить соединения с машиной для SSH, на порту 22, и для HTTP/S, на портах 80 и 443, для вашего веб-приложения Django. Пожалуйста, будьте внимательны и, по крайней мере, на первый взгляд, ограничьте IP-адрес, который может подключаться к экземпляру, вашим собственным IP-адресом, это особенно важно для порта SSH.
Предполагая, что у вас есть соединение, вам нужен клиент, который может общаться по SSH с этой машиной.
В Windows, скорее всего, вы будете использовать Putty.
В Сети есть множество руководств о Putty и о том, как его использовать: посмотрите, например, вот это .
Подключитесь к машине с помощью предоставленной команды:
ssh user@your-ip-or-domain
и установите необходимое программное обеспечение.
После этого, как объясняется в статье, загрузите программное обеспечение (для выполнения этого шага можно использовать WinSCP):
scp -r $(pwd)/{app,nginx,.env.staging,.env.staging.db,.env.staging.proxy-companion,docker-compose.staging.yml} user@your-ip-or-domain:/path/to/django-on-docker
и запустите контейнер:
cd /path/to/django-on-docker
docker-compose -f docker-compose.staging.yml up -d --build
Теперь, чтобы использовать let's encrypt, вам нужно назначить запись DNS для этой машины, которую она сможет проверить: наоборот, вы не сможете использовать SSL.
Этот DNS может быть назначен различными способами: вам нужен только IP-адрес вашей машины и какой-либо DNS-провайдер. Их много, например, AWS Route 53, GCP DNS или Azure DNS, GoDaddy и т.д. (см. this, например). Я никогда не пользовался этим сервисом, но, вероятно, вы можете использовать для этой цели Freenom, как и предложено в статье.
После настройки certbot, установленный в качестве компаньона для вашего nginx, выполнит свою работу и выдаст необходимые сертификаты.