Mirkom63
@Mirkom63
Я программист

Не могу запустить unicorn. Выдает ошибку, как исправить?

И так, пожалуй, расскажу какие действия я выполнял и к чему пришел. Надеюсь на вашу помощь и моральную поддержку.
1) Купил сервер с установленной centos7.
2) Поставил nginx, rvm, ruby, rails. создал приложение в папке /home/petrov/lessonweb/
3) добавил гемы unicorn и therubyracer, bundle install. Все ок.
4) Добавил файлик unicorn.rb и написал там вот что:
worker_processes 2
working_directory "/home/petrov/lessonweb/"

preload_app true

timeout 30

listen "/home/petrov/lessonweb/tmp/sockets/unicorn.sock", :backlog => 64

pid "/home/petrov/lessonweb/tmp/pids/unicorn.pid"

stderr_path "/home/petrov/lessonweb/log/unicorn.stderr.log"
stdout_path "/home/petrov/lessonweb/log/unicorn.stdout.log"

before_fork do |server, worker|
    defined?(ActiveRecord::Base) and
        ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|
    defined?(ActiveRecord::Base) and
        ActiveRecord::Base.establish_connection
end

5) запустил:
unicorn_rails -c config/unicorn.rb -E production -D

никто ни на что не ругался, думал что все хорошо, поехал дальше настраивать nginx
6) Создал файлик /etc/nginx/conf.d/lesson-web.conf и написал вот такие строки:
upstream lessonweb {
	server unix: /home/petrov/lessonweb/tmp/sockets/unicorn.sock;
}

server {
    listen 80;
    server_name lesson-web www.lesson-web.ru;

    location / {

        root /home/petrov/lessonweb/public;

        if (!-f $request_filename) {
            #делаем проксипасс на первый поток "project"
            proxy_pass http://lessonweb; 
            break;
        }
    }

}

7) перезагрузил nginx, запускаю
unicorn_rails -c config/unicorn.rb -E production -D

а терминал вот что выдает:
master failed to start, check stderr log for details

Смотрим логи: (я откываю логи тут /home/perov/lessonweb/log/unicorn.stderr.log верно же?)
Пишут вот что:
I, [2015-10-02T13:09:20.083650 #25092]  INFO -- : Refreshing Gem list
I, [2015-10-02T13:09:21.289238 #25092]  INFO -- : listening on addr=/home/petrov/lessonweb/tmp/sockets/unicorn.sock fd=11
I, [2015-10-02T13:09:21.293355 #25092]  INFO -- : master process ready
I, [2015-10-02T13:09:21.308838 #25095]  INFO -- : worker=0 ready
I, [2015-10-02T13:09:21.313020 #25097]  INFO -- : worker=1 ready
/usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-4.9.0/lib/unicorn/http_server.rb:206:in `pid=': Already running on PID:25092 (or pid=/home/petrov/lessonweb/tmp/pids/unicorn.pid is stale) (ArgumentError)
	from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-4.9.0/lib/unicorn/http_server.rb:135:in `start'
	from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-4.9.0/bin/unicorn_rails:209:in `<top (required)>'
	from /usr/local/rvm/gems/ruby-2.2.2/bin/unicorn_rails:23:in `load'
	from /usr/local/rvm/gems/ruby-2.2.2/bin/unicorn_rails:23:in `<main>'
	from /usr/local/rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval'
	from /usr/local/rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>'

Вот что это все значит и что надо делать дальше?
Заранее спасибо)
  • Вопрос задан
  • 2003 просмотра
Решения вопроса 1
@EvgeniyKonstantinov
Так вроде же в логе все и написано. Если второго unicorn нет, то просто удалите оставшийся pid - файл.

rm -f /home/petrov/lessonweb/tmp/pids/unicorn.pid

Вот это смущает:

7) перезагрузил nginx, запускаю
unicorn_rails -c config/unicorn.rb -E production -D


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

Войдите, чтобы написать ответ

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