working with django 3.0.5, but i guess this relates also to < django 2.0.
我将我的第一个django应用程序上传到我的提供商空间,到目前为止一切正常。 这是我的提供程序的服务器架构
_
(` ).
( ). .-------. .-------.
_( '`. ----------> | nginx | -----> | httpd |
.=(`( Internet ) '-------' '-------'
(( (..__.:'-' | => php via php-fpm
`( ) ) | => static files
` __.:' ) | => htaccess
--' |
| .--------------.
'----------> | Web Backends |
'--------------'
=> per-user nginx
=> nodejs, python, ruby, ...
=> gogs, mattermost, matrix, ...
然而,我仍然不理解一些Django静态逻辑。我的静态文件通过单独的Apache服务提供。我的应用程序名为blackbird
以下内容类似于web后端打印
blackbird.abc/blackbird_assets apache
blackbird.abc http:8080 Ok, listening : PID 10104, vassalsuWSGI worker 2
这就像我的服务器帐户目录一样
User
|
'-blackbird_app
| '- manage.py
'-hmtl <symbolic link to my documentroot>
'- blackbird_assets
'- static_storage
'-production_static
'-css
'-img
如果我想将apache站点上的production_static
文件夹重命名为hello_static
并重新启动我的应用程序,django没有找到静态文件。好吧,我想,但另一方面,django怎么能找到production_static
,因为这是我现在的settings.py
settings.py
Production
DEBUG=false
INSTALLED_APPS = [
<...>
'django.contrib.staticfiles',
]
STATIC_URL = '/static/'
# STATIC_ROOT = ''
# STATICFILES_DIRS = ''
我还试着把整个django.contrib.staticfiles
放在一起,django仍然可以找到production_static
没有它,但没有hello_static
我唯一一次提到显式静态文件夹是在开发中。在我收集静态数据并将其上传到apache文件夹和Git应用程序之前。旁注:我的blackbird生产应用程序文件夹中没有静态文件夹
settings.py
Development
STATIC_URL = '/static/'
STATIC_ROOT = '/static_storage/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, env('STATICFILES_DIRS'))]
# env('STATICFILES_DIRS') = static_storage/development_static
Question
Django Doc说STATIC_ROOT
只用于收集静态数据。所以我在开发中使用它作为一个导出文件夹,但在内部似乎发生了更多的事情?否则Django不会在我的生产应用程序中的项目文件夹外查找static_storage/development_static
,但当我将文件夹设置为static_storage/hello_static
时,它找不到了
STATICFILES_DIRS
-(附加文件夹)作为选项-仅与collectstatic相关,还是遗漏了什么
django是否在内部保存项目中collectstatic
之后的静态文件夹路径
是否有办法在生产环境中为Django设置新的显式静态路径,或者我是否已通过apache将alias设置为新的静态文件夹?我读过,但首先我必须理解django的逻辑
好的,在前端和后端之间,我一定忽略了我的应用程序的
uWSGI
服务正在映射我的静态文件夹/STATIC_URL
。我忘了这件事另一方面
STATIC_ROOT
可能在语义上有误导性-与MEDIA_ROOT
不同STATIC_ROOT
只在执行collectstatic
时收集文件夹中的静态文件。我搞混了。我想像STATIC_COLLECT
这样的东西更明显,可以区分但是现在静态和媒体文件在我的产品中工作
梭顿
每当Django使用
STATIC_URL
或MEDIA_URL
时,uWSGI将映射我放在apache中的所有内容我用了那么多
print()
来跟踪这个问题。另一方面,从现在起,我将使用它在我的应用程序日志中获得更好的视图我用django环境设置我的变量
起初,我对
MEDIA_ROOT_PROD
有一个问题,因为我不知道如何正确命名路径。例如,我的提供者在文档中使用了类似/home/virt/....
的内容,Django文档也谈到了/var/www/example.com/media/
。所以我使用了我的SFTP和FTP客户端显示的路径,现在它可以工作了相关问题 更多 >
编程相关推荐