Начиная узел с Богом с sudo - PullRequest
       23

Начиная узел с Богом с sudo

0 голосов
/ 05 октября 2010

Мне нужно запустить сервер Node.js от имени пользователя root (с помощью sudo) с параметром запуска, который выглядит следующим образом:

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

Поскольку я использую Socket.IO и мне нужно использовать FlashСокеты (для запуска Node.js требуются права суперпользователя).

Однако, когда я запускаю Бога, он не запускает узел.Я пытался запустить Бога с sudo, без sudo, как rvmsudo (так как я использую RVM для управления ruby-версией на моей машине), и, похоже, ничего не помогло.Кто-нибудь знает способ запуска процессов с sudo в Боге?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2011

Вот мой минимальный файл конфигурации для запуска сервера 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 в вашу команду "start" команды config.Скорее вы можете вызывать с помощью «бога» sudo, тогда он будет запускать отслеживаемые процессы также с помощью sudo.Например, я тестирую конфигурацию «бога» с помощью следующей команды:

sudo god -c conf/chapayev.god -D

(- D для распечатки вывода в консоли, чтобы сразу увидеть все ошибки конфигурации)

Для получения более подробной информациипожалуйста, посмотрите на это сообщение: http://blog.acmarques.com/deploying_node_with_nginx_and_god

0 голосов
/ 15 февраля 2011

Не лучше ли файл политики флэш-сокета сервера с веб-сервером, например, 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, его можно изменить или изменить UID после привязки порта.

...