我已经安静地阅读了一些提供静态文件的地方应该留给服务器,例如在这个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)
这有什么害处,还是我的方法好吗?
默认情况下,Tornado会在a Cache-Control: public提供的任何文件上放置标题StaticFileHandler.怎么能改成Cache-Control: no-cache?
我希望能够从命令行启动一个apache服务器,输入类似apache site-folder或的东西apache . --port=2000
这应该读取和使用.htaccess文件.
我知道python -m SimpleHTTPServer并且它接近我需要的东西,但并不完全.
理想解决方案
我只想打字 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
我正在尝试按照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) 从这个主题的类似标题的数量判断,这似乎是一个混乱的来源,但是尝试用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名称).
我正在尝试切换到使用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) 所以我是节点的新手,并试图学习如何使用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
我已经尝试了区分大小写(这应该是一个非问题),而且也没有用.
我正在使用 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) 我正在尝试在开发过程中为我的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)
任何指针赞赏.
我正在构建一个Node.js应用程序,我正在使用nginx作为反向代理.我的应用程序有一些我需要提供的静态文件和一个Socket.io服务器.
我知道我可以使用Express直接提供静态文件(使用express.static中间件).此外,我可以将nginx直接指向我的静态文件所在的目录,因此它们将由nginx提供.
那么,问题是:哪一个更好的方法?使用每种方法时我可以面对哪些优点和缺点?
static-files ×10
django ×4
python ×4
express ×2
flask ×2
node.js ×2
amazon-s3 ×1
apache ×1
caching ×1
docker ×1
heroku ×1
nginx ×1
python-3.x ×1
static-site ×1
tornado ×1