Создание сервера 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.

Мое предложение будет следующим:

  1. Установите virtualbox
  2. Установите сервер ubuntu в virtualbox
  3. Настройте доменное имя для указания на ip соответствующего vm
  4. Подключитесь к vm с помощью ssh

Некоторые ресурсы, которые вы можете найти полезными:

В первую очередь я бы остановился на Heroku, они делают отличную работу со своими конвейерами и так далее, и вы хотите сосредоточиться на разработке, а не на обслуживании сервера.

Во-вторых, только для локального тестирования вы можете просто использовать команду runserver. Если она работает, переместите текущее состояние в staging. После проверки там, вы можете переместить его в production.

Если под тестированием вы подразумеваете автоматизированное ci тестирование, вы можете использовать heroku там или github actions (когда вы используете github). Поток будет таким -> локальное тестирование (ручное и автоматизированное) -> автоматизированное ci тестирование (опционально) -> автоматизированное развертывание в staging -> вы можете проверить ваше приложение здесь в том же env, что и ваш production env -> развернуть в production

Вернуться на верх