NodeJS应用程序在使用Upstart启动时不会加载静态文件

我有一个NodeJS应用程序,我想从Upstart开始。 到目前为止,这个过程的工作,Upstart启动应用程序,但是当我加载页面,CSS不加载。 奇怪的是,如果我使用#node myapp.js启动应用程序,它将启动并正确加载文件。 如果有的话,我无法做出让这个问题成为可能的区别。 任何帮助,将不胜感激。

这是我设置应用程序的方式:

var express = require('express'), config = require('getconfig'), path = require('path'), expressValidator = require('express-validator'), crypto = require('crypto'), app = express(); app.configure('development', function () { app.use(express.logger('dev')); }); app.configure(function () { app.use(require('less-middleware')({ src: path.join(__dirname, 'public') })); app.use(express.static('public')); require('./bootstraps/handlebars')(app); app.use(express.favicon()); app.use(express.limit('5mb')); app.use(express.urlencoded({limit: '5mb'})); app.use(express.multipart({limit: '5mb'})); app.use(express.json({limit: '5mb'})); app.use(express.cookieParser(config.http.cookieSecret)); app.use(expressValidator()); app.use(express.methodOverride()); require('./bootstraps/session')(app); app.use(function(req,resp,next){ resp.locals.session = req.session; next(); }); app.use(app.router); require('./bootstraps/controllers')(app); }); app.listen(process.env.PORT || config.http.port); module.exports = app; 

…这是我的Upstart脚本:

 #!upstart description "My Project" author "Author" start on startup stop on shutdown script export HOME="/root" echo $$ > /var/run/myprocess.pid su -s /bin/sh -c 'exec "$0" "$@"' theuser -- /root/local/bin/node /path/to/my_project/myapp.js >> /var/log/my_project/system.log 2>&1 end script pre-start script # Date format same as (new Date()).toISOString() for consistency echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/my_project/system.log end script pre-stop script rm /var/run/dreamcasino.pid echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/my_project/system.log end script 

你可以使用chdir,这样工作目录是正确的

 script export HOME="/root" chdir /path/to/my_project/ echo $$ > /var/run/myprocess.pid exec sudo -u theuser /root/local/bin/node /path/to/my_project/myapp.js >> /var/log/my_project/system.log 2>&1 end script