Apache / Passenger 中的 Meteor 设置

Meteor Settings in Apache / Passenger

我有一个 apache2 服务器并尝试将它与 passenger 一起使用来启动我的 meteor 应用程序。 Meteor 和一切运行良好,但我希望使用设置文件或至少一个设置对象。所以我用 SetEnv 尝试了它,但它不起作用,因为 apache 转义了对象。

<VirtualHost *:80>
ServerName sub.site.de

# Tell Apache and Passenger where your app's code directory is
DocumentRoot /var/www/app/bundle/programs/web.browser
PassengerAppRoot /var/www/app/bundle

# Tell Passenger that your app is a bundled Meteor app
PassengerAppType node
PassengerStartupFile main.js
# PassengerMeteorAppSettings /var/www/app/settings.json < doesn't work also
# Tell your app where MongoDB is
SetEnv MONGO_URL mongodb://localhost:27017/app
# Tell your app what its root URL is
SetEnv ROOT_URL http://sub.site.de
SetEnv METEOR_SETTINGS "{uploadPath:'/var/www/app/upload'}"
# Relax Apache security settings
<Directory /var/www/app/bundle/programs/web.browser>
  Allow from all
  Options -MultiViews
  # Uncomment this if you're on Apache > 2.4:
  Require all granted
</Directory>

流星设置被转义。当我调用它崩溃的页面时:

/var/www/app/bundle/programs/server/boot.js:324
}).run();
   ^
Error: METEOR_SETTINGS are not valid JSON: {uploadPath:&apos;/var/www/app/upload&apos;}
    at packages/meteor.js:59:11
    at packages/meteor.js:80:4
    at packages/meteor.js:1358:3
    at /var/www/app/bundle/programs/server/boot.js:283:10
    at Array.forEach (native)
    at Function._.each._.forEach (/var/www/app/bundle/programs/server/node_modules/underscore/underscore.js:79:11)
    at /var/www/app/bundle/programs/server/boot.js:133:5

有人知道如何正确处理吗?

回复有点晚,但可能对以后的人有用:) 您必须按正确的方式传递设置 JSON,因此它们必须用双引号引起来。那么适合您的行是:

SetEnv METEOR_SETTINGS '{"uploadPath":"/var/www/app/upload"}'

因为它必须是有效的 JSON 语法,而不是 JavaScript 对象,所有属性和字符串值都必须在此处用双引号引起来。

请注意,提供太长的配置(它发生在我的项目中)会破坏 Nginx,抛出关于配置行太长的错误。