繁体   English   中英

Django项目在Linux上的推荐位置

[英]Recommended place for a Django project to live on Linux

我正在将第一个Django项目上载到Linux服务器,我应该在哪里将项目放在文件系统中?

对于PHP或ASP项目,所有内容都进入/var/www ,可以这样做并将我的Django项目添加到/var/www文件夹吗?

Django教程中,它指出:

该代码应该放在哪里?
如果您的背景是PHP,那么您可能习惯于将代码放在Web服务器的文档根目录下(例如/ var / www)。 使用Django,您无需这么做。 将任何这些Python代码放在​​Web服务器的文档根目录中不是一个好主意,因为这冒着人们可能通过Web查看您的代码的风险。 这对安全性不利。

将代码放在文档根目录之外的某个目录中,例如/ home / mycode

文件分层系统

@Andy Hayden确实指出了不要在其中放置代码的地方。 文件分层系统(FHS)包含以下结构; PATH映射到PACKAGEPROVIDER (建议提供多个软件包的各方应使用PROVIDER/PACKAGE ):

/etc/opt/PATH  # FHS location for /opt configuration files
/opt/PATH      # FHS location for PROVIDER or PACKAGE name
/var/opt/PATH  # FHS location for /opt variable storage 

FHS期望/opt/PATH包含成功执行一个包所必需的所有材料,因此设置以下符号链接似乎是明智的做法

  • /etc/opt/PATH/opt/PATH/etc
  • /var/opt/PATH/opt/PATH/var

这提供了良好的基础,但是Django项目对上述结构没有完全满足有额外的要求。

静态文件

当运行python manage.py collectstaticSTATIC_ROOT ,将部署静态文件,该静态文件应指向Web服务器根目录以进行静态传递,通常是/var/www/PATH

可以将/var/www/PATH象征性地链接到/opt/PATH/static但这通常不是一个好主意。 考虑以下情况:您的服务器配置错误,并且用户访问www.domain.tld/../并复制了您的工作。

设定值

如果使用django-admin create-project WEBSITE ,则通常在WEBSITE文件夹下会有一个setup.py文件。

PROJECT/
    WEBSITE/
         setup.py
         ...

如果您将此设置模块转换为软件包,或者在django-admin周围使用了一些包装器,例如django-cms-create等。

PROJECT/
    WEBSITE/
         settings/
             __init__.py  # from .settings import *
             settings.py
         ...

您可以将/etc/opt/PATH符号链接到/opt/PATH/WEBSITE/settings而不是如上所述的/opt/PATH/etc 我无法想到这样做的实际原因... YMMV。

媒体

通常由网站用户提供的媒体都放置在MEDIA_ROOT 在这种情况下,将/var/opt/PATH映射到/opt/PATH/media似乎是谨慎的做法。

虚拟环境

/opt/PATH/env似乎是最合逻辑的位置。 /var/env/PATH似乎也很明智,但可能更适合作为/opt/PATH/env的符号链接。

由于虚拟环境既不是应用程序也不是库,因此/opt/bin/opt/libs无法做到这一点。 /env//pyvenv/不符合FHS。

威士忌酒

如果您将mod_wsgi与Apache一起使用,则类似于python manage.py runmodwsgi --server-root /etc/opt/PATH --setup-only的调用可能更可取,因为它将Apache控制命令放置在符合FHS的位置,因为在这种情况下调用它们比较麻烦。

据我了解, /home通常是由PHP开发人员在同一服务器上托管多个站点时使用的。 如果您使用的是Django,则可能是通过专用计算机为您的网站提供服务,这种结构在这种情况下失去了一些支持... YMMV。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM