2011-09-25 38 views
2

我想爲我的ubuntu機器,這是版本8.04「哈代」寫一個暴發戶腳本。我遵循本網站上的說明:upstart for node.js,但它似乎是這些說明是針對當前版本的Ubuntu的。Ubuntu 8.04哈代和node.js暴發戶腳本

我注意到/ etc/init目錄在我的機器上不存在,我首先嚐試將腳本放在/etc/init.d目錄中,然後創建/ etc/init目錄並將其放在那裏。

我將在下面發佈我的新貴腳本(基本上和上面的網站一樣,有一些路徑變化),但是當我運行start jobname時,我只是得到一個錯誤「start:Unknown job:jobname」。於是我把腳本改成了一個精簡版,發佈在下面,我仍然得到相同的結果。

現在,我使用'nohup'命令來運行我的節點服務器,但我想要一個更持久的解決方案。

請幫忙嗎?

SCRIPT 1:

description "node.js chat server" 
author  "iandev ith3" 

# used to be: start on startup 
# until we found some mounts weren't ready yet while booting: 
start on started mountall 
stop on shutdown 

# Automatically Respawn: 
respawn 
respawn limit 99 5 

script 
    # Not sure why $HOME is needed, but we found that it is: 
    export HOME="/root" 

    exec /root/local/node/bin/node /home/ian/chat.js >> /var/log/node.log 2>&1 
end script 

post-start script 
    # optionally put a script here that will notifiy you node has (re)started 
    # /root/bin/hoptoad.sh "node.js has started!" 
end script 

SCRIPT 2:

description "node.js chat server" 
author  "iandev ith3" 

script 
    exec /root/local/node/bin/node /home/ian/chat.js >> /var/log/node.log 2>&1 
end script 
+0

我結束了剛剛使用cron @reboot來確保我的腳本在啓動時運行,因爲我從來沒有能夠得到新貴或永遠在服務器上工作。它解決了我的總體目標,但沒有回答這個問題,所以我將它作爲評論。 (如果人們有類似的問題,但不知道關於cron @reboot) –

回答

3

只需使用下去。 https://github.com/indexzero/forever

+0

我試過永遠使用,我永遠安裝了npm install,當發出'forever'命令時,我只會得到這個:'bash:forever:command未找到'。 –

+0

我試着用永久github頁面上的第二個選項,使用node.js代碼中的Forever實例。不知道這是如何工作的,雖然我會試圖按照它在頁面上所說的內容,但任何額外的幫助表示讚賞。 –

+0

當我嘗試從我的node.js代碼中永久使用時,var forever = require('forever'); 我得到一個錯誤,錯誤:找不到模塊'../build/default/daemon' 任何想法? –

1

從查看您提供的網站我會說/ etc/init只是一個錯字,它應該是/etc/init.d/。有些東西你可能要檢查:

  • 腳本上的可執行標誌。大多數版本的Ubuntu可執行文件在從命令行運行'ls'時顯示爲綠色。如果要檢查文件是否可執行,請從命令行運行'ls -l /etc/init.d/YOUR_SCRIPT'。您將看到如下所示的內容: -rwxr-xr-x 1 root root 1342 2010-09-16 10:13 YOUR_SCRIPT x表示它是可執行的。 要設置可執行標誌,如果它沒有設置,請運行chmod u + x YOUR_SCRIPT

  • 我很確定舊版本的ubuntu需要腳本放在/etc/rc.d/rc3.d中或/etc/rc3.d。 Linux所做的是通過rc0.d運行到rc5.d並執行那裏的每個腳本。從它看起來,Ubuntu正在遠離這個更簡單的地方,所以如果你有rc目錄,你可能需要編輯你的腳本。

無論如何,我想我在這裏變得有點複雜了。檢查你的可執行標誌,如果你有rc目錄,我們將從那裏繼續。

+0

我確實使用chmod u + x nodechat.conf來執行它,檢查rc目錄。謝謝您的幫助。 是的,有rc0.d到rc6.d –

+0

我查看了rc0.d中的文件,它們看起來像是所有符號鏈接到/etc/init.d中的文件。 另外,將我的腳本移動到rc0.d沒有做任何不同的事情。 –

+0

它聽起來像你會想把它放在rc3.d中(rc0.d是linux開始運行所有關鍵守護進程,例如安裝目錄)。所以你的腳本將進入/etc/init.d,你將在rc3.d中創建一個符號鏈接,確保你添加了SxxYOURSCRIPT(其中xx是一個數字)。當你想要啓動這個守護進程時,它會告訴linux,較高的數字在較低的數字之後完成,S代表啓動。現在,儘管只是測試,以確保您的腳本實際上正在做你想要的。然後你可以在啓動時做所有這些工作 – nick

1

可能不是開始使用sudo的過程中最好的東西,但這裏是我對我的本地PC設置:

#!upstart 
description "node.js server" 
author  "alessio" 

start on startup 
stop on shutdown 

script 
    export HOME="/ubuntu" 

    exec sudo -u ubuntu /usr/bin/node /home/ubuntu/www/test.js 2>&1 >> /var/log/node.log 
end script 

希望這有助於。