来自Django我习惯于从主要的wsgi或其他应用程序中分别提供静态资源和媒体(包括上传)。 这个平面文件结构易于导航和pipe理。
我似乎无法find任何与Meteor合作的例子(分别为静态资产/媒体服务)。
有没有标准的方法?
有没有提供这种function的软件包?
我的最终目标是:
能够更直观的浏览所有的静态资产和媒体,并从公众可访问的URL访问它们,而不必热重buildmeteor应用程序。 “公共”文件夹不为我做…特别是上传的媒体。
上传到这个系统path(这是从主meteor应用程序分开),无论是手动迁移应用程序或通过我写的自定义应用程序/包。
浏览/parsingmeteor app / package的path
如果你所有的静态资产都有一个共同的路径,例如/static/...
,那么你可以告诉nginx
alias
请求到一个目录
location /static { alias /path/to/static/assets; }
您可以在您的流星应用程序中设置一个文件服务器,以使用节点fs
模块为它们服务,然后使用类似于Picker的服务,或者如果没有解决这个问题,可以在这里为Meteor添加连接处理程序。
Meteor默认会忽略隐藏的目录,所以如果你想要的东西像.assets/
,那么你可以把资源放到你的app目录中,否则在运行流星的用户可以访问的文件系统的任何地方。
这里有一个我刚刚扔在一起的文本文件的工作服务器。 你需要做meteor add meteorhacks:picker
首先meteor add meteorhacks:picker
:
if (Meteor.isserver) { var fs = Npm.require('fs'); Picker.route('/asset/:name', function(params, req, res) { fs.readFile('/home/users/someuser/media/' + params.name, function(err, file) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(file.toString()); }); }); }
如果您希望获得性能和可伸缩性的原因(请参阅我的评论),则应使用高速缓存代理。 最初代理将直接从Meteor应用程序获取静态文件,但后续请求将从其缓存中提供。
本文( nginx-caching )是关于如何使用Nginx设置缓存代理的一个很好的解读。 此外,Meteorpedia还有一篇文章解释了如何设置专门为Meteor应用程序量身定制的Nginx缓存。
假设您的流星应用程序位于/www/meteor
并且您想从位于/meteor
树之外的目录提供静态资产,以便文件添加/更改/删除不会导致应用程序重新启动,例如/www/static
因此,首先在nginx中定义流星路径,然后为静态路径定义一个不同的根 ,例如:
location /static { root /www/static; }
文件