2010-10-05 33 views
0

我需要启动的Node.js服务器作为根用户(使用sudo)与一个开始PARAM看起来像:起始节点与神使用sudo

w.start = "sudo node #{KTHXBYE_NODE_ROOT}/poll.js" 

由于我使用Socket.IO和需要使用Flash套接字(需要Node.js作为root运行)。

但是,每当我启动上帝,它就无法启动节点。我试过用sudo来运行上帝,没有sudo,因为rvmsudo(因为我使用RVM来管理我机器上的ruby版本)并且没有任何东西可以解决它。任何人都知道在神中运行sudo的流程吗?

谢谢。

+0

http://god.rubyforge.org/:“上帝目前只适用于Linux,BSD和Darwin系统。”对这些项目名称感到悲伤。 – 2010-10-05 20:08:01

回答

2

这里是正在运行的node.js服务器的“上帝”我最小的配置文件:

APP_ROOT = "/home/sphynx/app"     # application root 

God.pid_file_directory = "#{APP_ROOT}/pids"  # directory to store PID files 

God.watch do |w| 
    w.name = "chapayev" 
    w.interval = 5.seconds # default 
    w.start = "env node #{APP_ROOT}/server.js" # path to node.js server file 
    w.stop = "env killall node"     # stopping node explicitly 
    w.start_grace = 10.seconds 
    w.restart_grace = 10.seconds    
    w.log = "#{APP_ROOT}/log/chapayev.log"  # to enable logging 

    w.start_if do |start|      # start if condition is met 
     start.condition(:process_running) do |c| # check if process is running 
     c.interval = 5.seconds 
     c.running = false 
     end 
    end 
end 

它,如果它尚未启动的Node.js自动启动,并使用内部的“神”系统守护进程的手段。

确保您的配置中有“start_if”部分,它定义了启动受监视进程的条件。在这里我们有条件开始如果进程没有运行,正是我们需要的!

至于关于“sudo”权限:我认为没有必要在你的上帝配置“开始”命令中包含sudo。您可能更愿意使用sudo“god”本身,然后它将使用sudo运行受监视的进程。比如我测试“神” Config中使用以下命令:

sudo god -c conf/chapayev.god -D 

(-D打印控制台输出看到所有立即配置错误)

欲了解更多详情,请看一看在这篇文章: http://blog.acmarques.com/deploying_node_with_nginx_and_god

0

是不是更好的服务器闪存套接字策略文件与Web服务器,例如nginx的?

server { 
    listen 843; 
    server_name {{ SERVER_NAME }} www.{{ SERVER_NAME }}; 
    location/{ 
     root {{ PATH_TO_FOLDER_WITH_crossdomain.xml_FILE }}; 
     autoindex off; 
    } 
} 

和crossdomain.xml文件(*替换以恰当的值):

<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy> 

这样节点就不必使用sudo启动。在我看来这更简单,更安全。以root身份运行时,节点也可能会创建文件所有权。

如果节点以root用户身份启动,则可以对其进行chroot或更改端口绑定后的UID。