来自Django我习惯于与主wsgi或其他应用程序分开提供我的静态资产和媒体(包括上传)。这种平面文件结构易于导航和管理。
我似乎无法找到有关如何使用Meteor执行此操作的示例(单独提供静态资源/媒体)。
是否有标准方法?
是否有提供此功能的软件包?
我的最终目标是:
能够更直观地导航所有静态资产和媒体,并从公共可访问的URL访问它们,而无需热重建流星应用程序。 "公众"文件夹并不适合我...特别是对于上传的媒体。
在迁移应用程序时或通过我编写的自定义应用程序/程序包手动上传到此系统路径(与主流星应用程序分开)。
浏览/解析来自meteor app / package的路径
答案 0 :(得分:10)
如果所有静态资源都有一个公共路径,例如.ToList<dynamic>()
,那么您可以使用目录告诉/static/...
对该路径的alias
个请求
nginx
答案 1 :(得分:3)
您可以在meteor应用程序中设置一个文件服务器,使用节点fs
模块为其提供服务,然后使用类似Picker的服务或者添加连接处理程序的示例流星here如果没有成功的话。
默认情况下,Meteor会忽略隐藏目录,因此如果您想要.assets/
之类的内容,可以将资源放在app目录中,否则运行meteor的用户可以访问文件系统的任何位置。
这里是我刚刚汇总的文本文件的工作服务器。您首先需要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());
});
});
}
答案 2 :(得分:3)
如果出于性能和可伸缩性的原因(请参阅我的评论),您可能需要使用高速缓存代理。最初,代理将直接从Meteor应用程序获取静态文件,但后续请求将从其缓存中提供。
这篇文章(nginx-caching)很好地介绍了如何使用Nginx设置缓存代理。此外,Meteorpedia还有article解释如何设置专为Meteor应用程序量身定制的Nginx缓存。
答案 3 :(得分:1)
我们假设您的meteor应用程序位于/www/meteor
,并且您希望从/meteor
树之外的目录中提供静态资源,以便该文件添加/更改/删除don&#39 ; t导致应用重启,例如/www/static
首先通常在nginx中定义Meteor路径,然后为静态路径定义不同的 root ,例如:
location /static {
root /www/static;
}