Where should this code live?
If your background is in PHP, you're probably used to putting code under the Web server's document root (in a place such as /var/www). With Django, you don't do that. It's not a good idea to put any of this Python code within your Web server's document root, because it risks the possibility that people may be able to view your code over the Web. That's not good for security.
Put your code in some directory outside of the document root, such as /home/mycode.
@Andy Hayden真的说了不该把代码放在哪里。File Hierarchy System (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
在Django tutorial中声明:
文件层次结构系统
@Andy Hayden真的说了不该把代码放在哪里。File Hierarchy System (FHS)包含以下结构;
PATH
映射到PACKAGE
或PROVIDER
(建议提供多个包的各方应使用PROVIDER/PACKAGE
):FHS期望
/opt/PATH
包含成功执行一个包所需的所有材料,因此设置以下符号链接似乎比较谨慎/etc/opt/PATH
到/opt/PATH/etc
/var/opt/PATH
到/opt/PATH/var
这提供了一个很好的基础,但是Django项目有一些额外的需求,上面的结构不能完全满足这些需求。
静态文件
静态文件是在运行
python manage.py collectstatic
到STATIC_ROOT
时部署的,该STATIC_ROOT
应该指向用于静态传递的web服务器根目录,通常是/var/www/PATH
。人们可以象征性地将
/var/www/PATH
与/opt/PATH/static
联系起来 但这通常是一个坏主意;考虑这样的情况:您的服务器配置错误,用户转到www.domain.tld/../
并复制您的工作。设置
如果使用
django-admin create-project WEBSITE
创建项目,则通常会在WEBSITE
文件夹下有一个setup.py
文件。如果您将这个设置模块转换成一个包,或者在
django-admin
周围使用了一些包装,例如django-cms-create
等您可以将
/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。威士忌
如果您在Apache中使用} 的调用可能更可取,因为它将Apache控制命令放在FHS兼容的位置,因为在这种情况下调用它们更麻烦。
mod_wsgi
,那么类似于^{家
据我所知,PHP开发人员在同一服务器上托管多个站点时通常使用
/home
。如果您使用的是Django,那么您可能是从一台专用机器上为您的站点服务的,在这种情况下,这种结构有点失宠。。。YMMV公司。相关问题 更多 >
编程相关推荐