Распространенные ошибки при переносе приложения django из dev в prod? - PullRequest
5 голосов
/ 30 октября 2009

Я разрабатываю приложение django для Windows, SQLite и сервера разработки django. Я развернул его на своем хост-сервере под управлением Linux, Apache, FastCgi, MySQL.

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

В любом случае, каковы, по вашему мнению, наиболее вероятные ошибки, которые могут возникнуть при перемещении приложения django из dev в prod?

Лучший

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

Обновление: к вашему сведению, я внедрил сервер preprod и уведомление по электронной почте в соответствии с предложением shanyu, и я вижу, что ошибка происходит из-за smart_if templatetag , который я использую в этой новой версии. Любой трюк с тегами шаблонов?

Обновление: я думаю, что я исправил pb, который был вызван, я думаю, отправкой Filezilla FTP. Я использовал опцию «заменить, если новее», которая, как мне кажется, приводит к неожиданным результатам. Используя опцию «заменить все», исправьте проблему. Однако для меня это была возможность узнать больше о развертывании. Спасибо за ваши ответы.

Ответы [ 3 ]

7 голосов
/ 30 октября 2009

Проблемы, которые я обычно имею, включают:

  1. Неверно сконфигурированные настройки производств, будь то в моих производственных файлах localsettings.py, wsgi / cgi или apache в / etc / sites-available
  2. Различия в базе данных. Я использую Юг для миграции и столкнулся с некоторыми тонкими проблемами при выполнении моей миграции на PostgreSQL, когда она работала гладко в sqlite.
  3. Статический файловый хостинг, так как я обманываю и использую сервер Django в разработке
  4. Разрешения как для файловой системы, так и для базы данных
  5. Редкие, но возможные, проблемы с сетью, мешающие мне получить мои зависимости, будь то PyPi или какой-либо сторонний сайт

Способы устранения этих проблем:

  • Используйте одну и ту же базу данных для производства и разработки (в вашем случае MySQL везде)
  • Я обнаружил, что полезно иметь «тестовую» среду, которая имитирует производство всеми возможными способами (это может быть на более низком оборудовании или даже на той же машине). Таким образом, если есть какие-либо проблемы в этой «производственной» среде, я могу решить их, не переводя производственный сервер в автономный режим.
  • Скрипт все для повторяющихся развертываний. Я использую ткань , но zc.buildout или Paver также будут работать. Эти инструменты помогают сократить количество опечаток при развертывании и сократить время развертывания моего приложения.
  • Используйте контроль версий (mercurial, git, subversion) и инструмент миграции схемы (например, South), поэтому, если что-то пойдет не так при развертывании в производство, у вас есть возможность отменить изменения и разрешить запуск производства старый код со старой схемой базы данных.
  • Я еще не настроил " egg proxy ", но я рассматриваю его, чтобы избежать проблем при загрузке зависимостей.
  • Я нашел полезными pip's зависания зависимостей в случае нового несовместимого изменения библиотеки после того, как я скачал ее изначально
  • Используйте среду веб-тестирования, такую ​​как Windmill или Selenium, чтобы протестировать мое приложение в моей "тестовой" среде, чтобы я мог очень быстро получить широкий охват тестированием моей системы.
1 голос
/ 30 октября 2009

Что касается вашего случая, я могу вспомнить две простые вещи, которые могут вам помочь:

  1. Вы можете разрешить Django отправлять сообщения при возникновении исключений, сообщая подробности о них. Посмотрите на здесь для деталей.
  2. Вам будет лучше, если вы настроите тестовую среду на сервере prod (скажем, test.example.com), чтобы вы могли проверить, все ли будет гладко или нет, прежде чем развертывать приложение.
0 голосов
/ 30 октября 2009

Я думаю, что это были подкасты, которые я недавно слушал (из Pycon 2009):

Найдите Джанго в реальном мире (PyCon 2009):

http://advocacy.python.org/podcasts/pycon.rss

Части с 1 по 3

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

Regs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...