2015-12-24 61 views
2

給定以下目錄結構。永久使用監視文件重新啓動

# Currently in ~/myapp/current 
tree 
. 
├── tmp 
│   ├── restart.txt 
│   ├── pids 
├── log 
│   ├── forever.log 
├── myapp 
│   ├── myapp.js 

這工作。

sudo NODE_ENV=production forever \ 
    -c "node --use_strict" \ 
    --append \ 
    -f \ 
    -l ~/myapp/current/log/forever.log \ 
    --pidFile ~/myapp/current/tmp/pids/myapp \ 
    --uid myapp \ 
    myapp/myapp.js 

我希望能夠接觸文件,所以我嘗試使用--watch參數重新啓動,直到永遠。我有一個名爲restart.txt的空文件來觀看。不幸的是這個失敗:

sudo NODE_ENV=production forever \ 
    -c "node --use_strict" \ 
    --append \ 
    -f \ 
    -l ~/myapp/current/log/forever.log \ 
    --pidFile ~/myapp/current/tmp/pids/myapp \ 
    --uid myapp \ 
    --watch tmp/restart.txt \ 
    myapp/myapp.js 

有了這個神祕的錯誤:

warn: --minUptime not set. Defaulting to: 1000ms 
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms 
error: Could not read .foreverignore file. 
error: ENOENT: no such file or directory, open '/home/deployer/myapp/releases/20151224185314/.foreverignore' 
error: Forever detected script exited with code: 0 
events.js:141 
     throw er; // Unhandled 'error' event 
    ^

Error: watch /home/deployer/myapp/releases/20151224185314/node_modules/lodash/lang/isTypedArray.js ENOSPC 
    at exports._errnoException (util.js:855:11) 
    at FSWatcher.start (fs.js:1313:19) 
    at Object.fs.watch (fs.js:1341:11) 
    at createFsWatchInstance (/usr/lib/node_modules/forever/node_modules/chokidar/lib/nodefs-handler.js:37:15) 
    at setFsWatchListener (/usr/lib/node_modules/forever/node_modules/chokidar/lib/nodefs-handler.js:80:15) 
    at FSWatcher.NodeFsHandler._watchWithNodeFs (/usr/lib/node_modules/forever/node_modules/chokidar/lib/nodefs-handler.js:228:14) 
    at FSWatcher.NodeFsHandler._handleFile (/usr/lib/node_modules/forever/node_modules/chokidar/lib/nodefs-handler.js:255:21) 
    at FSWatcher.<anonymous> (/usr/lib/node_modules/forever/node_modules/chokidar/lib/nodefs-handler.js:473:21) 
    at FSReqWrap.oncomplete (fs.js:82:15) 

我已經嘗試了很多不同的路徑(絕對的,相對的,相對於--watchDirectory等)的監視文件和我的不能讓它工作。怎麼了?

回答

0

從我的理解(關於這方面的文檔是不存在的,我可以看到)。 --watch函數會永久檢查.foreverignore文件,如果缺少這個文件,程序會基本上失敗,並且會陷入循環而不會啓動模塊。

在您的應用程序目錄中創建一個名爲.foreverignore的文件,並列出您不想永遠觀看的所有內容。這基本上告訴永遠忽略對這些文件的更改,如果發生任何事情,不要重新啓動,這對於日誌文件或事實並非實際需要您的模塊重新啓動才能從中受益。

下面是從我的方面採取的例子:

文件:

/apps/myapp/.foreverignore 

內容

一旦創建
node_modules/* 
logs/* 
conf/* 
htdocs/* 
*.log 
*.gif 
*.jpg 
*.html 

確保你永遠重啓對於要拿起文件。