2015-01-22 9 views
1

Вот нечетный. Я запускаю диспетчер 3.13 с beanstalkd для очереди Laravel 4.1. У меня есть/stage/и/production/экземпляры моего приложения. Я бег программы супервизора для запуска мастеровых очереди: слушать (из отдельных .conf файлов) для каждого следующим образом:Supervisord Fatal (Laravel 4.1 + Beanstalkd) Никаких команд, определенных в пространстве имен «queue»

[program:appname-production] 
command=php artisan queue:listen --env=production 
directory=/home/servername/public_html/production 
stdout_logfile=/home/servername/public_html/production/app/storage/logs/supervisord.log 
redirect_stderr=true 
autostart=true 
autorestart=true 

Единственной разницы замены производства с этапом в программе. Однако, когда супервизор работает, выполняется только программа сцены. Производственная программа показывает FATAL Вышел слишком быстро

appname-production   FATAL  Exited too quickly (process log may have details) 
appname-stage     RUNNING pid 6784, uptime 0:32:01 

Очередь этапа работает нормально, как показано в ps aux. Кроме того, запуск очереди мастеров: прослушивание в рабочей папке работает так же, как должно. Когда я анализирую журнал supervisord для производства, однако, она полна:

X-Powered-By: PHP/5.5.20 
Content-type: text/html 

    [InvalidArgumentException] 
    There are no commands defined in the "queue" namespace. 

Я исчерпал мои технические знания о настройке здесь - я не могу рассуждать, почему два клонированных расстановки ведут себя по-разному. Я только мог догадаться, что супервизор ошеломляется где-то - так как я могу заставить производственную очередь работать нормально, делая это вручную.

Вся помощь/идеи очень оценены.

+0

Возможно, команда не запускается с пользователем, который имеет правильные разрешения. Попробуйте добавить 'user = apache' (или любой другой пользователь, который есть ваш веб-сервер) в раздел' [program: appname-production] '. – Bogdan

+0

К сожалению (и, возможно, ошибочно) супервизор работает от имени root, из которого я также могу выполнить команду вручную. Доступен только один пользователь, который имеет равный доступ как к производству, так и к стадии. –

+0

Хорошо, нашел что-то очень интересное. Независимо от среды, если для debug установлено значение false в config/app.php (или конкретном env app.php), супервизор не может запустить команду artisan. Команда все еще может быть успешно запущена с помощью оболочки, и очередь работает нормально. Кто-нибудь знает, почему статус отладки повлияет на то, как супервайзер запускает ремесленник? –

ответ

3

Наконец-то исправил это и хотел поделиться. Как и другие решения, исправление связано с установкой абсолютного пути к php. Тем не менее, PATH var также необходимо было установить через среду в подпроцессе conf. Здесь мы идем:

[program:appname] 
command=/usr/local/bin/php artisan queue:listen --env=production 
directory=/home/appdir 
stdout_logfile=/home/appdir/app/storage/logs/supervisord.log 
redirect_stderr=true 
autostart=true 
autorestart=true 
environment=PATH="/usr/local/bin" 

Надеюсь, это поможет кому-то в будущем!

 Смежные вопросы

  • Нет связанных вопросов^_^