python - 如何将Django源安装转换为包安装
问题描述
操作系统:CentOS、红帽
对于 Django 和 python 的新手,我们基本上使用 python 和 Django 框架构建了一个监控工具。下面是项目文件夹结构。
|-- Makefile
|-- monitor-pycodes
`-- web
|-- content
|-- __init__.py
|-- manage.py
|-- monitor_templ
| |-- __init__.py
| |-- templates
| |-- templatetags
| |-- urls.py
| `-- views.py
|-- packmonitor.wsgi
|-- settings.py
`-- urls.py
没有提到某些文件夹内容以简化视图。
我们使用Makefile将我们的代码复制到系统文件夹,如下所示
“monitor-pycodes”中的所有python代码-> /usr/lib/python2.7/site-packages/packmonitor/并编译它
“web”中的 Django 模板 --> /var/www/packmonitor 用于 Web UI。
脚本如 packmontior 和 packmonitord 到 --> /usr/bin
在项目目录中运行make install时,会发生上述复制过程并启动应用程序。
我的雇主不希望从源代码安装此工具。
如何将此安装从源代码安装转换为包安装?
谢谢,莫汉
解决方案
Django 是一个 Python 包,通常使用类似的工具从 PyPI 下载并安装到虚拟环境中virtualenv
,或者在 Python 3.3+ 中venv
,它与 Python 一起打包。您可能还有一些其他依赖项,例如用于与数据库通信的 Python 包。
您可以在目录结构中创建虚拟环境并进行安装。只要您在部署到的同一操作系统上创建虚拟环境,您就可以将包的虚拟环境作为部署负载的一部分包含在内。例如,我使用带有 CentOS 7.6 的 Vagrant 进行开发,而我的生产服务器运行 RHEL 7.6。我确保yum
在 Vagrant 上安装的任何底层需求都与在我的生产服务器上相同。
这将允许您将.wsgi
文件指向与其余代码一起部署的虚拟环境。
但是,只需考虑几件事;这违背了大多数记录在案的部署最佳实践。您还提到您正在运行 Python 2.7;对 Python 2.7 的支持将在几个月后结束。它还将限制您运行 Django 1.11,它也只能支持几个月。这意味着不再有安全更新或错误修复。Django 2.0 仅支持 Python 3.4 及更高版本。
如果您花时间进行部署,可能值得考虑升级到 Python 3.7 和 Django 2.2(长期支持版本,保证有三年的安全更新)。我上面描述的部署方法,将虚拟环境作为有效负载的一部分,应该适用于新版本的 Python 和 Django。升级现在需要做一些工作,但可能会在它成为危机之前通过支付一些技术债务作为维护,为你节省一卡车的痛苦。
祝你好运!
推荐阅读
- php - PHP | 转换数组 | 用对象计算数组中的“相同”值
- android - 资源不是可绘制资源$NotFoundException
- visual-studio-code - 禁用自动更新安装开关?
- java - 如何查找文件中包含两个关键字的所有文件?
- c# - 如何在不使用 Microsoft 页面的情况下在 Azure AD B2C 中使用图形 api 进行社交登录?
- linker - 创建并链接目标代码后,符号表会发生什么变化?
- javascript - 如何通过单击一个来选择两个表格单元格?
- python - 将列表中的可能值添加到 groupby 结果
- apache-kafka - 由于组重新平衡,Spring Cloud Stream Kafka 提交失败
- azure-functions - 如何在 Azure 函数中使用 ArangoJS