当然,我在本地开发的一个小型 django 项目的速度很快。但是,由于我以前从未使用过 django,所以我不知道上传它并在生产服务器上测试它意味着什么。而且我很好奇,因为我非常渴望现场测试早期版本。
我知道有这个文件,我认为它会很有帮助:http ://djangobook.com/en/2.0/chapter12/
但是,在部署之前、期间和之后我应该考虑哪些细节?有什么建议或最佳实践吗?
谢谢。
当然,我在本地开发的一个小型 django 项目的速度很快。但是,由于我以前从未使用过 django,所以我不知道上传它并在生产服务器上测试它意味着什么。而且我很好奇,因为我非常渴望现场测试早期版本。
我知道有这个文件,我认为它会很有帮助:http ://djangobook.com/en/2.0/chapter12/
但是,在部署之前、期间和之后我应该考虑哪些细节?有什么建议或最佳实践吗?
谢谢。
Make your development/testing environment match your deployment environment as closely as possible. This means using e.g. PostgreSQL and mod_wsgi instead of SQLite and the built-in server. This software is free so there's no reason you can't get your hands on it.
如果您在域的子目录中提供您的站点,您可能会遇到问题:避免手动编写绝对 url,而是使用url标记。
如果您依赖数据库中的初始数据,请使用fixtures。
如果您的服务器将用于多个站点,请考虑使用Virtualenv打包您的站点,以避免与其他站点的依赖项冲突。
您还应该在开发和生产服务器中使用相同的数据库系统以避免意外。
如果您有一个相当复杂的项目(或有时间学习这些工具),请使用诸如south之类的东西来消除数据库迁移的痛苦,并考虑使用诸如buildout或fabric之类的东西进行部署,因为它们将允许轻松重现的脚本化部署。
我认为很多都取决于数据库模型的变化。Django 可以使用 syncdb 添加新列,或者生成一个脚本来执行此操作,但它不会删除列,而且我认为它不会从数据库中删除外键约束,即使它们不再适用。
因此,数据库迁移最好通过脚本完成,并在生产数据库的副本或一些与生产数据非常相似的数据集上进行测试(当然是相同的模式)。