Мое приложение периодически порождает скребок CasperJS:
spawn(CASPER_PATH,
[SCRIPTS_PATH + fileName, '--ssl-protocol=any', '--user='+user, '--scrapeId='+scrapeId, '--pass='+pass],
{ detached: true },
function (err, stdout, stderr) {});
Команда spawn()
потребности работать удаются, чтобы быть чем-то вроде этого:
/usr/local/bin/casperjs/home/custom_user/casper-scripts/script.coffee - ssl-protocol=any - user=username123 - pass=pass123 - scrapeId=some_id_123
Я пытаюсь использовать навсегда, чтобы автоматически запустить сервер узла и проверить с помощью ping-запросов его, когда мне нужно царапанье.
Работает отлично, когда я выполняю его node server.js
как зарегистрированный пользователь я создал, или как пользователь root. Также выполнения, большие, когда я работаю forever start server.js
, но только если я делаю так как пользователь root - иначе, spawn()
ничего не делает.
Я попытался добавить forever start
(с полными и относительными путями, конечно) к crontab и для пользователя root и для обычного пользователя. В обоих случаях сервер работает на указанных портах, журналах, принимает запросы, но не порождает casperjs.
Я попытался добавить forever start server.js
кому: /etc/rc.local
даже - все еще ничто. Сервер работает, вход, функционируя очень хорошо, но единственный путь forever
может работать, икра () - то, если я явно выполняю ее, в то время как зарегистрированный как пользователь root.
В конце веревки здесь...
Как я даю навсегда полномочия при начальной загрузке для порождения casperjs двоичного файла? Я должен изменить sudoers файл так или иначе? То, что папка chown
редактор некорневым релевантным пользователем?
Править:
Я не знаю, почему я не думал для проверки то, о чем сообщала икра, таким образом, я запустил навсегда через crontab некорневого пользователя и добавил следующее после var sP = spawn()
:
sP.stdout.on('data', function(data) { console.log('stdout', data.toString('utf8')); });
sP.stderr.on('data', function(data) { console.log('stderr', data.toString('utf8')); });
sP.stdout.on('close', function(code) { console.log('close', code); });
Вывод:
Фатальный stdout: [Errno 2] Никакой такой файл или каталог; Вы устанавливали phantomjs?
близкая ложь
CasperJS является оберткой для PhantomJS. Это нечетно, поскольку я оба установил в системе:
casperjs --version
1.1.0-beta3 phantomjs --version
1.9.8
Кажется, что crontab не знает о существовании phantomj в/usr/local/bin?
РЕДАКТИРОВАНИЕ 2:
Crontab теперь похож на это:
@reboot PHANTOMJS_EXECUTABLE =/usr/local/share/phantomjs-1.9.8-linux-x86_64/bin/phantomjs NODE_ENV=production/usr/bin/forever запускаются/home/custom_user/endpoints-server-linux/server.js
phantomjs ошибка исчезла, но провал с casper, на самом деле работающим.
Вы могли попытаться дать полный путь навсегда при запуске его для rc.local. Мог бы быть то, что $PATH не установлен, поскольку это - Вы, когда Вы зарегистрированы.
Сбой, что, там некоторый журнал, который навсегда производит? Можете Вы класть для первого удара для вывода, куда Вы выполняете команду, как:
/usr/local/bin/forever start <full path to>/server.js | tee /tmp/forever-start.log