Создание сервера Staging Server для тестирования веб-приложения Django
Я следил за книгой Гарри Дж. У. Персиваля "Разработка на основе тестирования с помощью Python". В главе "Testing Deployment Using a Staging Site" я запутался в том, какие действия мне следует предпринять, чтобы реализовать следующее:
Развитие сервера
Я не собираюсь диктовать вам, как это делать - выберете ли вы Amazon AWS, Rack-space, Digital Ocean, собственный сервер в собственном дата-центре или Raspberry Pi в шкафу за лестницей - любое решение должно быть хорошим, при условии, что:
На вашем сервере установлена Ubuntu (13.04 или более поздняя версия).
У вас есть root-доступ к нему.
Это в публичном Интернете.
Вы можете подключиться к нему по SSH.
Я новичок в отношении фреймворка. Поэтому тема развертывания и стейджинга вызывает у меня некоторую тревогу в силу моей неопытности. Автор ранее утверждал, что мы можем либо запустить свой собственный (возможно, виртуальный) сервер, либо воспользоваться PaaS.
Итак, мой вопрос заключается в следующем как мне осуществить процесс создания промежуточного сервера для целей проверки и валидационного тестирования (ссылки на источники, объясняющие процесс, будут высоко оценены)?
Учитывая характер моей проблемы, я не мог понять, как двигаться дальше. Должен ли я использовать виртуальную машину для продвижения вперед? Или... что именно я должен сделать? У меня практически нет идей.
Половинчатое потенциальное решение, которое я придумал, заключалось в создании конвейера Heroku, состоящего из трех фаз (разработка, постановка и производство). Учитывая тот факт, что Staging-сервер должен быть похож на Production-сервер, я надеялся сделать одно приложение в конвейере, которое постепенно переходит на финальную стадию. Но это кажется нелогичным по отношению к Test-Driven Development, поскольку разработка и тестирование должны идти рука об руку (не говоря уже о том, что книга, которой я следую, отдает предпочтение server-admin перед PaaS).
(Это мой первый вопрос здесь, и я надеюсь, что смог ясно выразить свои мысли, никого не обидев и не потратив зря время)
Добро пожаловать на StackOverflow.
Вы можете предоставить и вычислить машину в любом облаке (AWS, GCP, Azure, DigitalOcean, PythonAnywhere, список можно продолжить). Однако, учитывая, что вы находитесь на начальной стадии изучения фреймворка, я предлагаю вам установить ubuntu в качестве виртуальной машины на вашем собственном компьютере. Вы можете установить 3 виртуальные машины, каждую для dev, stage и production.
Мое предложение будет следующим:
- Установите virtualbox
- Установите сервер ubuntu в virtualbox
- Настройте доменное имя для указания на ip соответствующего vm
- Подключитесь к vm с помощью ssh
Некоторые ресурсы, которые вы можете найти полезными:
- https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox#1-overview
- https://dev.to/developertharun/easy-way-to-ssh-into-virtualbox-machine-any-os-just-x-steps-5d9i .
- https://medium.com/nycdev/how-to-ssh-from-a-host-to-a-guest-vm-on-your-local-machine-6cb4c91acc2e .
- https://stackoverflow.com/a/23685363/5950394
В первую очередь я бы остановился на Heroku, они делают отличную работу со своими конвейерами и так далее, и вы хотите сосредоточиться на разработке, а не на обслуживании сервера.
Во-вторых, только для локального тестирования вы можете просто использовать команду runserver. Если она работает, переместите текущее состояние в staging. После проверки там, вы можете переместить его в production.
Если под тестированием вы подразумеваете автоматизированное ci тестирование, вы можете использовать heroku там или github actions (когда вы используете github). Поток будет таким -> локальное тестирование (ручное и автоматизированное) -> автоматизированное ci тестирование (опционально) -> автоматизированное развертывание в staging -> вы можете проверить ваше приложение здесь в том же env, что и ваш production env -> развернуть в production