标签: static-files

使用Flask,我如何将robots.txt和sitemap.xml作为静态文件提供?

我已经安静地阅读了一些提供静态文件的地方应该留给服务器,例如在这个SO问题的几个答案中.但是我使用的是OpenShift PaaS,并且无法弄清楚如何在那里修改.htaccess文件.

我遇到了这段代码,它从模板中提供站点地图.我在我的应用上为sitemap和robots.txt做了这样的事情,就像这样 -

@app.route("/sitemap.xml")
def sitemap_xml():
    response= make_response(render_template("sitemap.xml"))
    response.headers['Content-Type'] = 'application/xml'
    return response

@app.route("/robots.txt")
def robots_txt():
    return render_template("robots.txt")
Run Code Online (Sandbox Code Playgroud)

这有什么害处,还是我的方法好吗?

python static-files flask

25
推荐指数
3
解决办法
1万
查看次数

在Tornado中禁用静态文件缓存

默认情况下,Tornado会在a Cache-Control: public提供的任何文件上放置标题StaticFileHandler.怎么能改成Cache-Control: no-cache

python caching tornado static-files

24
推荐指数
2
解决办法
8704
查看次数

从命令行在任何目录中启动Apache服务器

我希望能够从命令行启动一个apache服务器,输入类似apache site-folder或的东西apache . --port=2000

这应该读取和使用.htaccess文件.

我知道python -m SimpleHTTPServer并且它接近我需要的东西,但并不完全.

理想解决方案

  1. 为apache本身提供了一个很好的命令行界面
  2. 编写一个包含/包含apache(或其他东西)的简单命令行工具
  3. 链接到现有cli上的文档以获取apache

我只想打字 command <Directory> --port=8000 --other-options

命令名也可以是 pache

在某些时候,我可能想在生产中使用它.将进程发送到后台应该很容易,然后永远停止该实例或所有实例

相关链接:http://httpd.apache.org/docs/2.4/programs/httpd.html

对于任何人来说,安装脚本以供立即使用应该只有一个命令

apache command-line-interface static-files static-site staticfilehandler

24
推荐指数
3
解决办法
1万
查看次数

启用WhiteNoise时,'collectstatic'命令失败

我正在尝试按照Heroku的建议通过WhiteNoise提供静态文件.当我在我的开发环境中运行时,会发生这种情况:collectstatic

Post-processing 'css/iconic/open-iconic-bootstrap.css' failed!

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/__init__.py", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 338, in execute
    output = self.handle(*args, **options)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/core/management/base.py", line 533, in handle
    return self.handle_noargs(**options)
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 168, in handle_noargs
    collected = self.collect()
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 120, in collect
    raise processed
  File "/home/Pieter/.virtualenvs/radiant/lib/python3.4/site-packages/django/contrib/staticfiles/storage.py", …
Run Code Online (Sandbox Code Playgroud)

python django static-files python-3.x

24
推荐指数
4
解决办法
1万
查看次数

Django静态文件开发

从这个主题的类似标题的数量判断,这似乎是一个混乱的来源,但是尝试用django开发服务器在静态文件上找到的所有内容我几乎放弃了希望!

所以我的静态文件来自C:/ Users/Dan/seminarWebsite/static /,其中我有图像的子文件夹,css等.

设置:

STATIC_ROOT = 'C:/Users/Dan/seminarWebsite/static/'  
STATIC_URL = '/static/'  
Run Code Online (Sandbox Code Playgroud)

静态文件应用程序也处于活动状态.

URLS:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns  
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)

模板:

"{{ STATIC_URL }}images/vision.jpeg"
Run Code Online (Sandbox Code Playgroud)

但是,只有一个断开的链接出现在此地址:http://127.0.0.1:8000/homepage/images/vision.jpeg我不认为它应该在该地址(主页是静态图像文件被调用的页面的URL名称).

django static-files

22
推荐指数
1
解决办法
2万
查看次数

当使用s3,boto,django-storage作为静态文件时,由对等方重置连接

我正在尝试切换到使用amazon s3来托管我们的django项目的静态文件.我正在使用django,boto,django-storage和django-compressor.当我在我的开发服务器上运行collect static时,我收到了错误

socket.error: [Errno 104] Connection reset by peer 
Run Code Online (Sandbox Code Playgroud)

我所有静态文件的大小都是74MB,看起来不算太大.有没有人见过这个,或者有任何调试技巧?

这是完整的痕迹.

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 371, in handle
    return self.handle_noargs(**options)
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 163, in handle_noargs
    collected = self.collect()
  File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 113, in collect
    handler(path, …
Run Code Online (Sandbox Code Playgroud)

django amazon-s3 static-files django-storage

22
推荐指数
3
解决办法
8815
查看次数

学习节点 - Express公用文件夹无法正常工作

所以我是节点的新手,并试图学习如何使用express它.但是,我想弄清楚的问题是为什么我/public文件夹中的文件似乎不是作为静态内容提供的.

这是我的代码:

var http = require('http');
var port = process.env.port || 1337;
var express = require('express');
var handlebars = require('express3-handlebars');
var path = require('path');

var application = express();

application.use(express.static(path.join(__dirname, 'public')));

application.engine('handlebars', handlebars({ defaultLayout: 'main' }));

application.get('/', function(req, res){
    res.render('index.handlebars', { someProp: 3 });
});

application.listen(port);
Run Code Online (Sandbox Code Playgroud)

我的目录结构:

/
  - server.js (the above referenced file)
  / Views
    - index.handlebars
    / Layouts
      - main.handlebars
  / public
    - ServeMe.txt
Run Code Online (Sandbox Code Playgroud)

我的理解是,application.use(express.static(path.join(__dirname, 'public')));应该将服务器配置为响应具有该资源的公共文件夹下的任何请求(如果找到).我究竟做错了什么?有趣的是,将把手配置为视图引擎比让公共文件夹工作= D更容易

编辑:我试图请求的完整网址: http://localhost:1337/public/serveme.txt

我已经尝试了区分大小写(这应该是一个非问题),而且也没有用.

static-files node.js express

21
推荐指数
2
解决办法
4万
查看次数

使用docker将django应用程序部署到heroku时在哪里运行collectstatic?

我正在使用 Docker 将 Django 应用程序部署到 Heroku。当我放入RUN manage.py collectstatic --noinputDockerfile 时,它​​失败了,因为没有为环境变量设置值DJANGO_SECRET_KEY。我的理解是,这是因为在构建期间配置变量不可用。

当我将 collectstatic 作为发布命令运行时,它可以正常工作,并成功复制静态文件。但是,当我点击应用程序 url 时,它返回 500 错误,因为找不到静态文件。我相信这是因为 release 命令在临时文件系统上作为 dyno 运行,因此找不到复制的文件。

这似乎是一个catch-22。将 collectstatic 放入 Dockerfile 失败,因为没有可用的配置变量,但将其作为发布命令失败,因为只保存了构建阶段的文件更改?

该怎么办?

这是我在 settings.py 中的 collectstatic 设置


MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]
...
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
STATICFILES_STORAGE = 'backend.storage.WhiteNoiseStaticFilesStorage'
Run Code Online (Sandbox Code Playgroud)

文件

# Pull base image
FROM python:3.7-slim

# Set environment varibles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# Set work …
Run Code Online (Sandbox Code Playgroud)

django heroku static-files docker

19
推荐指数
2
解决办法
5817
查看次数

Flask静态文件Cache-Control

我正在尝试在开发过程中为我的JS文件设置合理的缓存过期.我有标准设置,HTML,CSS和JS都在static目录下.

文档也提到这一点,但我的生活,我不能得到这个工作.我先尝试过隐含的两种方法

class MyFlask(flask.Flask):
    def get_send_file_max_age(self, name):
        if name.lower().endswith('.js'):
            return 60
        return flask.Flask.get_send_file_max_age(self, name)

app = MyFlask(__name__)
Run Code Online (Sandbox Code Playgroud)

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60
Run Code Online (Sandbox Code Playgroud)

两者都没有效果,我在/ static下的JS文件仍然会返回默认的缓存超时,

Cache-Control: public, max-age=43200
Run Code Online (Sandbox Code Playgroud)

任何指针赞赏.

python cache-control static-files flask

18
推荐指数
1
解决办法
1万
查看次数

什么是更好的方法:使用Express或nginx提供静态文件?

我正在构建一个Node.js应用程序,我正在使用nginx作为反向代理.我的应用程序有一些我需要提供的静态文件和一个Socket.io服务器.

我知道我可以使用Express直接提供静态文件(使用express.static中间件).此外,我可以将nginx直接指向我的静态文件所在的目录,因此它们将由nginx提供.

那么,问题是:哪一个更好的方法?使用每种方法时我可以面对哪些优点和缺点?

nginx static-files node.js express

18
推荐指数
2
解决办法
1万
查看次数