首页 > 解决方案 > 如何将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时,会发生上述复制过程并启动应用程序。

我的雇主不希望从源代码安装此工具。

如何将此安装从源代码安装转换为包安装?

谢谢,莫汉

标签: pythondjango

解决方案


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。升级现在需要做一些工作,但可能会在它成为危机之前通过支付一些技术债务作为维护,为你节省一卡车的痛苦。

祝你好运!


推荐阅读