Как развернуть работники resque на производстве?

Как ответ на Alexandro de Oliveira, я считаю следующее более элегантным или, по крайней мере, более интуитивным:

while read -r -n1 c ; do arr+=("$c") ; done <<<"hejsan"
37
задан Brian Armstrong 13 November 2009 в 22:56
поделиться

3 ответа

Ответ Гарретта действительно помог, просто хотел опубликовать еще несколько деталей. Потребовалось немало усилий, чтобы все исправить ...

Я тоже использую пассажира, но nginx вместо apache.

Во-первых, не забывайте, что вам нужно установить sinatra, это на время меня бросило . sudo gem install sinatra

Затем вам нужно создать каталог для запуска, и в нем должна быть общая папка и папка tmp. Они могут быть пустыми, но проблема в том, что git не сохраняет пустой каталог в репо. В каталоге должен быть хотя бы один файл, поэтому я сделал несколько ненужных файлов в качестве заполнителей. Это странная функция / ошибка в git.

Я использую плагин resque, поэтому я создал каталог там (где находится config.ru по умолчанию). Похоже, что Гарретт создал новую директорию resque в своем rails_root. Либо надо работать. Для меня ...

cd MY_RAILS_APP/vendor/plugins/resque/
mkdir public 
mkdir tmp
touch public/placeholder.txt
touch tmp/placeholder.txt

Затем я отредактировал MY_RAILS_APP / vendor / plugins / resque / config.ru так, чтобы он выглядел так:

#!/usr/bin/env ruby
require 'logger'

$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
require 'resque/server'

use Rack::ShowExceptions

# Set the AUTH env variable to your basic auth password to protect Resque.
AUTH_PASSWORD = "ADD_SOME_PASSWORD_HERE"
if AUTH_PASSWORD
  Resque::Server.use Rack::Auth::Basic do |username, password|
    password == AUTH_PASSWORD
  end
end

run Resque::Server.new

Не забудьте изменить ADD_SOME_PASSWORD_HERE на пароль, который вы хотите использовать для защиты приложения.

Наконец, я ' m с помощью Nginx, вот что я добавил в свой nginx.conf

server {
  listen   80;
  server_name  resque.seoaholic.com;
  root /home/admin/public_html/seoaholic/current/vendor/plugins/resque/public;
  passenger_enabled on;
}

И поэтому он перезапускается при ваших развертываниях, возможно, что-то вроде этого в вашем deploy.rb

run "touch #{current_path}/vendor/plugins/resque/tmp/restart.txt"

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

Это просто для запуска приложения для мониторинга. Затем мне нужно выяснить, что такое бог.

4
ответ дан 27 November 2019 в 04:57
поделиться

Я только что понял это вчера вечером, для Capistrano вы должны использовать san_juan , тогда мне нравится использование God для управления размещением рабочих. Что касается выживания после перезагрузки, я не уверен, но я перезагружаюсь каждые 6 месяцев, поэтому я не слишком беспокоюсь.

Хотя он предлагает разные способы запуска, это то, что сработало для меня проще всего. (В вашем deploy.rb)

require 'san_juan'
after "deploy:symlink", "god:app:reload"
after "deploy:symlink", "god:app:start"

Чтобы управлять тем, где он работает, на другом сервере и т. Д., Он описывает это в разделе конфигурации файла README .

Я использую Passenger на моем срезе, так что это было относительно просто, мне просто нужен был файл config.ru , например:

require 'resque/server'

run Rack::URLMap.new \
  "/" => Resque::Server.new

Для моего файла VirtualHost у меня есть:

<VirtualHost *:80>
        ServerName resque.server.com
        DocumentRoot /var/www/server.com/current/resque/public

        <Location />
          AuthType Basic
          AuthName "Resque Workers"
          AuthUserFile /var/www/server.com/current/resque/.htpasswd
          Require valid-user
        </Location>
</VirtualHost>

Также небольшое примечание. Убедитесь, что вы игнорируете задачу resque: setup rake,

9
ответ дан 27 November 2019 в 04:57
поделиться

Я немного опоздал на вечеринку, но подумал, что опубликую то, что сработало для меня. По сути, у меня есть настройки бога для мониторинга redis и resque. Если они больше не бегут, бог запускает их обратно. Затем у меня есть задача по граблям, которая запускается после развертывания капистрано, которое покидает моих рабочих по спасению. Как только рабочие уйдут, бог запустит новых рабочих, чтобы они использовали последнюю кодовую базу.

Вот мой полный отчет о том, как я использую resque в производстве:

http://thomasmango.com/2010/05/27/resque-in-production

29
ответ дан 27 November 2019 в 04:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: