Перенос django проекта на другой компьютер

Обновлено: 07.07.2024

Если вы занимаетесь программированием некоторое время, то наверняка слышали о Docker или о таком термине, как контейнеры. В этом руководстве разберемся с его значением как раз на примере Docker, а также рассмотрим, как контейнеризировать простое Django-приложение. В конце темы вы будете знать следующее:

  • Виртуализация
  • Контейнеризация (с помощью Docker)
  • Docker
  • Создание Dockerfile
  • Docker Compose
  • Настройка Django приложения в среде Docker с помощью Dockerfile и docker-compose

Условия

  • Git/GitHub
  • PyCharm (или любой другой редактор кода)
  • Опыт работы с Django

Что такое виртуализация

Обычно при развертывании веб-приложения в хостинге (например, DigitalOcean или Linode) вы настраиваете виртуальную машину или виртуальный компьютер, куда будет перенесен весь код с помощью git, FTP или другими средствами. Это называется виртуализацией.

Со временем разработчики начали видеть недостатки такого процесса — как минимум затраты на приспосабливание к изменениям в операционной системе. Им хотелось объединить среды разработки и производственную, вследствие чего и появилась идея контейнеризации.

Что такое контейнеры, и что в них такого особенного?

Контейнер, если говорить простыми словами, — это место для среды разработки, то есть, вашего приложения и тех зависимостей, которые требуются для его работы.

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

Поскольку контейнеризация — куда более портативное, масштабируемое и эффективное решение, такие платформы, как Docker, становятся популярным выбором разработчиков.

Введение в Docker

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

Установка Docker

Для установки Docker на компьютере, воспользуйтесь инструкцией с официального сайта. У каждой операционной системы есть своя версия приложения.

Настройка приложения

Для этого руководства используем репозиторий приложения для опросов, написанного на Django. По мере продвижения в этом руководстве настроим Dockerfile , в котором будут обозначены инструкции для контейнера, внутри которого приложение и будет работать. После этого же настроим и файл docker-compose.yml для упрощения всего процесса.

На ПК с установленным git перейдите в выбранную папку и клонируйте следующий репозиторий из GitLab:

После этого перейдите в корень этой папки и откройте ее в редакторе с помощью такой команды:

Запуск Django-приложения в Docker контейнере

В этой папке создайте файл Dockerfile (регистр играет роль) без формата. Внутри него будут находиться настройки контейнера. Инструкции из него компьютер будет выполнять каждый раз при запуске команды docker build .

Следующий этап — создание файла requirements.txt, в котором перечислены все зависимости. Позже он будет использован для Dockerfile , в котором также требуется указывать все требуемые зависимости.

В файле requirements.txt добавьте Django версии 3.1.2 в таком формате:

Что такое Dockerfile

Идея написания Dockerfile может показаться сложной, но не забывайте, что это всего лишь инструкция (набор шагов) для создания собственных образов (images). Dockerfile будет содержать следующее:

  1. Базовый образ, на основе которого требуется построить свой. Он выступает своего рода фундаментом для вашего приложения. Это может быть операционная система, язык программирования (Python в нашем случае) или фреймворк.
  2. Пакеты и дополнительные инструменты для образа.
  3. Скрипты и файлы, которые требуется скопировать в образ. Обычно это и есть исходный код приложения.

При чтении или написании такого файла удобно держать в голове следующее:

Создание Dockerfile

Приложение будет работать на основе официального образа Python. Напишем следующие инструкции:

Файл Docker Compose

Docker Compose — это отличный инструмент, помогающий определять и запускать приложения, для которых требуются несколько сервисов.

Обычно Docker Compose использует файл docker-compose.yml для настройки сервисов, которые приложение будет использовать. Запускаются эти сервисы с помощью команды docker-compose up . Это создает и запускает все сервисы из файла. В большинстве веб-приложений нужны, веб-сервер (такой как nginx) и база данных (например, PostgreSQL). В этом приложении будем использовать SQLite, поэтому внешняя база данных не потребуется.

Для использования особенностей Docker Compose нужно создать файл docker-compose.yml в той же папке, где находится Dockerfile и добавить туда следующий код:

Дальше разберем содержимое файла построчно:

Эта строка сообщает Docker, какая версия docker-compose должна быть использована для запуска файла. На момент написания руководства последняя версия — 3.8, но обычно синтаксис не сильно меняется по мере выхода последующих.

После настройки docker-compose откройте терминал и запустите команду docker-compose up -d для запуска приложения. Дальше открывайте ссылку localhost:8000 в браузере, чтобы увидеть приложение в действии:

Запуск Django-приложения в Docker контейнере

Для закрытия контейнера используется команда docker-compose down .

Выводы

В этом руководстве вы познакомились с виртуализацией, контейнеризацией и другими терминами из мира Docker. Также вы теперь знаете, что такое Dockerfile, как его создавать для запуска контейнеризированного Django-приложения. Наконец, разобрались с настройкой docker-compose с помощью файла docker-compose.yml для сервисов, от которых зависит самое приложения.

Не существует единого правильного способа использовать Docker в Django-приложении, но считается хорошей практикой следовать официальным инструкциями, чтобы максимально обезопасить свое приложение.

Я пытался найти решение моего запроса, но безуспешно. Я создал веб-сайт, используя django на своем локальном компьютере. Теперь я хочу установить тот же сайт, созданный с помощью django, на другом компьютере. MySQL - это база данных, которую я использую. Как перенести локальный сайт, созданный с помощью django, на другой компьютер? Если этот вопрос уже обсуждался, приношу свои извинения.

2 ответа

Чтобы настроить тот же сайт Django на другом компьютере, вы можете просто скопировать код. Когда вы попытаетесь запустить его, вы получите ошибки, если что-то не настроено правильно, которые вы можете устранить одну за другой. Вы, вероятно, получите следующие ошибки:

  1. Убедитесь, что Python установлен в новом окне
  2. Убедитесь, что Django и любые другие зависимости установлены
  3. Вам нужно будет установить MySQL и настроить базу данных на новом компьютере.
    • сведения о базе данных (имя, пользователь, пароль) будут в файле settings.py вашего проекта
    • если хост базы данных не localhost или 127.0.0.1 , вам нужно будет подумать, где разместить новую базу данных.
  4. Убедитесь, что вы настроили URL-адрес, указывающий на новое поле, если он не предназначен только для разработки (в этом случае вы можете использовать встроенный в Django сервер разработки через manage.py runserver )
  5. Убедитесь, что apache / выбранный вами сервер настроен правильно

Все эти шаги должны просто повторять то, что вы делали на старой машине.

Если у вас есть машина для разработки и машина для производства, вам следует подумать о решениях для развертывания, которые автоматизируют большую часть этого процесса. Вы также должны поместить код в систему контроля версий, если это еще не сделано (Git, mercurial, subversion), чтобы вы могли управлять изменениями в источнике из любого места.

Если вы хотите иметь один и тот же сайт на обеих машинах (чтобы изменения на одном появлялись на другом), вы, вероятно, имеете в виду «балансировку нагрузки». Вам нужно будет настроить другой сервер, который может делегировать запросы этим двум машинам и указывать им на одну и ту же базу данных.

Обновление: Фактические шаги, необходимые для развертывания вашего приложения (т. Е. Запуска его на реальном сервере), зависят от вашего поставщика услуг. В общих чертах, эти шаги заключаются в настройке вашего веб-сервера для обслуживания приложения, настройке вашей базы данных с правильными значениями и запуске веб-сервера. Фактические шаги по тому, как это сделать, зависят от вашего сервера (какой фронтальный веб-сервер они используют, как вы можете редактировать его конфигурацию, является ли он общим или VPS, есть ли у вас доступ к оболочке и т. Д.). Вот пример того, как вы бы это сделали в webfaction (популярном провайдере общего хостинга на Python).

Я младший инженер-программист и довольно новичок в Django. Я построил приложение и я работаю над README, чтобы объяснить другим, как раскошелиться, клонировать и настроить приложение на своих собственных машинах. Я застрял, пытаясь воссоздать шаги.

Это порядок, в котором я нарисовал ступеньки:

  1. вилка и клонирование РЕПО
  2. источник виртуальной среде
  3. Pip установить требования.txt
  4. получить access_token и secret_key и хранить в secrets.sh
  5. настройка БД Postgres, создание пользователя и базы данных
  6. перенести (?- Вот тут я и застрял!

Я попытался перенести приложение, но нет никаких миграций для применения.

Я попробовал " django-admin startproject ig_miner_app . но я получаю эту ошибку:

"CommandError: /Users/Erin/Desktop/CodeByEAllard/project/instagram_miner/manage.py уже существует, наложение проекта или приложения в существующий каталог не заменит конфликтующие файлы"

Если я смогу разобраться с этим, я просто смогу запустить сервер, как обычно, верно?

Я уверен, что мне чего-то не хватает (или много чего), но не знаю, что это такое. Я чувствую себя глупо, потому что я, очевидно, смог создать приложение в первую очередь, но не могу понять, как объяснить кому-то другому сделать то же самое! Есть ли какие-либо предложения о том, как получить сервер для запуска?

во-первых, вы получаете эту ошибку, потому что вы запускаете проект в том же каталоге, что и клонированный проект, этот каталог уже содержит приложение с именем ig_miner_app отсюда и конфликт имен.

что касается шагов по запуску проекта другими пользователями , это должно работать.

создать и запустить виртуальную среду

установки проекта зависимости:

создайте файл с именем "secrets.sh"

touch secrets.sh (mac и linux)

получить секрет от MiniWebTool ключ и добавить к secrets.sh

добавить secrets.sh на .файл gitignore

создайте БД postgres и добавьте учетные данные в settings.py

создать админ счет

для makemigrations для приложения

затем снова запустите

для запуска сервера разработки

и откройте localhost: 8000 в браузере для просмотра приложения.

я считаю, что это должно получить приложение и работает на машинах других. Дайте мне знать, если вы застряли на любом из этих шагов, поэтому я делаю изменения, если нет, вы можете просто использовать его и добавить любую другую соответствующую информацию Я мог бы и не добавлять.

Привет @allardbrain и добро пожаловать в удивительный Мир развития ^_^

хотя я надеюсь, что эта проблема уже решена, если можно,давайте вернемся к чему-то очень быстро-я уверен, что другие сделали и в настоящее время делают эту ошибку.

я попробовал " django-admin startproject ig_miner_app . но я получаю эту ошибку:

"CommandError:" yadda yadda yadda .

Django на самом деле имеет удивительный Документация. Ребята, стоящие за этим, на самом деле были писателями и журналистами, а не типичными парнями из CS.

то, что я пытаюсь сказать, при изучении чего-то нового, прочитайте документацию; запустите учебник To-Do App. Вот почему..

Это уже было удовлетворено, если вы тянете рабочую копию ранее существующего приложения. Ваша забота должна быть связана в первую очередь с этим файлом .

Это где devDependencies изложите свои требования , если хотите, похожие на ваши основные

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

попробуйте передать имя приложения в :

как вы сказали, как только вы клонируете РЕПО, вы должны установить требования

после этого вы должны настроить базу данных. Добавить подробности в settings.py

как только это будет сделано, и у вас есть ключи и секреты, вы должны сделать миграции, а затем мигрировать.

cd в каталог приложений и запустите

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

чтобы применить миграции, которые фактически создают таблицы базы данных.

Теперь вы вносите изменения в модели или добавляете дополнительные модели или поля, вам нужно снова запустить последние две команды.

Admin 17.09.2020 , обновлено: 08.01.2021 Python, Ubuntu

Переносим приложение python с локального компьютера на свой удаленный сервер.

Этот материал из цикла статей по разработке сайтов на python: от локальной разработки до развертывания на удаленном сервере.

Перед этим должен быть создан локальный проект на python.

И только после этого можно приступать к переносу зависимостей и проекта на python на удаленный сервер.

У себя на компьютере

У себя на компьютере создаем файл, в котором находятся все зависимости необходимые для проекта:

или выводим локальные зависимости и сохраняем их потом в том же файле:

Если какие-то модули были установлены в обход стандартной процедуры (pip install модуль), то такие модули в этом файле сейчас следует закомментировать и установить на сервере отдельно.

На сервере

Если директория для сайта еще не сделана, то заходим в папку пользователя:

Здесь создаем новую директорию для проекта, например, по названию сайта:

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

Затем в этой директории создаем виртуальное окружение:

Обязательно обновляем pip:

Иначе есть вероятность получить при установке других модулей ошибки вроде:

Устанавливаем необходимые зависимости:

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

Дополнительная настройка на сервере

PostgreSQL

Настройка PostgreSQL. Если пользователь для БД уже был создан раннее, то создаем только новую БД::

Заходим в postgres:

Назначаем привелегии новой таблице:

GRANT ALL PRIVILEGES ON DATABASE ploshadka TO ploshadka;

Обновляем БД

В SQLAlchemy нам потребуется только одна команда обновления БД. Т.к. все коммиты мы отправляем только на локалке, а затем это закидываем в git.

Обновляем в конфиге бд в параметре SQLALCHEMY_DATABASE_URI, добавляем пароль:

SQLALCHEMY_DATABASE_URI = 'postgresql://ploshadka:пароль@localhost/ploshadka'

Конфиги

Значение pbkdf2_sha512 для SECURITY_PASSWORD_HASH не трогать!

Кстати, на сайте нет рекламы. У сайта нет цели самоокупаться, но если вам пригодилась информация можете задонатить мне на чашечку кофе в макдаке. Лайкнуть страницу или просто поблагодарить. Карма вам зачтется.

Я очень старался найти решение для моего запроса, но безуспешно. Я сделал сайт, используя django на моей локальной машине. Теперь я хочу установить тот же сайт, созданный Django, на другую машину. MySQL - это база данных, которую я использую. Как переместить местный сайт, созданный Django, на другую машину? Если этот вопрос уже был поставлен на обсуждение, мои извинения.

2 ответа

Чтобы настроить один и тот же сайт Django на другом компьютере, вы можете просто скопировать код. Когда вы попытаетесь запустить его, вы получите ошибки, если что-то настроено неправильно, и вы можете устранить их один за другим. Несколько ошибок, которые вы можете получить:

  1. Убедитесь, что Python установлен на новой коробке
  2. Убедитесь, что Django и любые другие зависимости установлены
  3. Вам нужно будет установить MySQL и настроить базу данных на новом компьютере.
    • детали для базы данных (имя, пользователь, пароль) будут в файле settings.py вашего проекта
    • если хост базы данных не localhost или же 127.0.0.1 , вам нужно будет подумать о том, где разместить новую базу данных
  4. Убедитесь, что вы установили URL-адрес, указывающий на новое поле, если только он не предназначен для разработки (в этом случае вы можете использовать встроенный в Django сервер dev через manage.py runserver )
  5. Убедитесь, что apache / ваш сервер выбран правильно

Все эти шаги должны просто повторять то, что вы делали на старой машине.

Если у вас есть машина 'dev' и машина 'production', вам следует подумать о решениях по развертыванию, которые автоматизируют большую часть этого процесса. Вы также должны поместить код в систему контроля версий, если он еще не существует ( Git, Mercurial, Subversion), чтобы вы могли управлять изменениями в источнике из любого места.

Если вы хотите иметь один и тот же сайт на обеих машинах (поэтому изменения на одном появляются на другом), вы, вероятно, говорите о "балансировке нагрузки". Вам нужно будет настроить другой сервер, который может делегировать запросы этим двум машинам и направлять их на одну и ту же базу данных.

Обновление. Фактические шаги, необходимые для развертывания приложения (т. Е. Для его запуска на работающем сервере), зависят от поставщика услуг. В общих чертах необходимо настроить ваш веб-сервер для обслуживания приложения, настроить базу данных с правильными значениями и запустить веб-сервер. Фактические шаги, как это сделать, зависят от вашего сервера (какой фронтальный веб-сервер они используют, как вы можете редактировать его конфигурацию, является ли он общим или VPS, есть ли у вас доступ к оболочке и т. Д.). Вот пример того, как вы могли бы сделать это на webfaction (популярный провайдер общего хостинга python).

Читайте также: