Pro*_*eus 20 python django django-settings
我将我的第一个Django项目上传到Linux服务器,我应该将我的项目放在文件系统中?
使用PHP或ASP项目,一切都进入/var/www,可以这样做并将我的Django项目添加到该/var/www文件夹吗?
And*_*den 28
在Django教程中,它指出:
这段代码应该在哪里生活?
如果您的背景是PHP,那么您可能习惯将代码放在Web服务器的文档根目录下(在/ var/www这样的地方).使用Django,你不会这样做.将任何此Python代码放在Web服务器的文档根目录中并不是一个好主意,因为它可能会使人们可能通过Web查看您的代码.这对安全性不利.将代码放在文档根目录之外的某个目录中,例如/ home/mycode.
@Andy Hayden 确实说明了不要放置代码的位置。该文件分层系统(FHS)暗示下列结构; PATH映射到PACKAGE或PROVIDER(建议提供多个包的各方应使用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
Run Code Online (Sandbox Code Playgroud)
FHS 期望/opt/PATH包含成功执行 ones 包所需的所有材料,因此设置以下符号链接似乎是谨慎的
/etc/opt/PATH 到 /opt/PATH/etc /var/opt/PATH 到 /opt/PATH/var这提供了一个很好的基础,但 Django 项目有上述结构不完全满足的额外要求。
静态文件在运行python manage.py collectstatic到STATIC_ROOT应该指向用于静态交付的 Web 服务器根目录时部署,通常为/var/www/PATH.
人们可以/var/www/PATH象征性地链接 到,/opt/PATH/static
但这通常是一个坏主意;考虑这样一种情况,您的服务器配置错误,并且用户访问www.domain.tld/../并复制了您的工作。
如果您使用 来创建项目,django-admin create-project WEBSITE您通常会在setup.py文件WEBSITE夹下有一个文件。
PROJECT/
WEBSITE/
setup.py
...
Run Code Online (Sandbox Code Playgroud)
如果您将此设置模块转换为一个包,或者您使用了一些包装器,django-admin例如django-cms-create等。
PROJECT/
WEBSITE/
settings/
__init__.py # from .settings import *
settings.py
...
Run Code Online (Sandbox Code Playgroud)
您可能会符号链接/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。
| 归档时间: |
|
| 查看次数: |
6701 次 |
| 最近记录: |