puma.sock не удалось (111: Подключение отказано) при подключении к upstream (Puma Server, Nginx, Ruby on Rails)

Вопрос или проблема

В настоящее время я сталкиваюсь с проблемой с Puma. Он не запускается из-за ошибки puma.sock. Если у кого-то есть опыт в этом, пожалуйста, помогите мне. Я приведу сообщение об ошибке ниже.

“==> /var/log/nginx/error.log <== 2024/11/08 06:54:54 [ошибка] 24916#24916: *32 connect() к unix:/var/www/tutot/code/tmp/sockets/puma.sock завершился неудачей (111: Connection refused) при подключении к upstream, клиент: 162.247.202.47, сервер: resources.tutor.com, запрос: “GET /embed/8 HTTP/1.1”, upstream: “http://unix:/var/www/tutor/code/tmp/sockets/puma.sock:/embed/8”, хост: “resources.tutor.com”

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

Ответ или решение

Решение проблемы: ошибка "puma.sock failed (111: Connection refused)" при подключении к upstream

Если вы столкнулись с ошибкой, связанной с puma.sock, и не можете запустить сервер Puma в связке с Nginx и Ruby on Rails, вы не одиноки. Эта проблема может возникнуть по нескольким причинам, и в данной статье мы подробно рассмотрим возможные решения.

1. Понимание проблемы

Ошибка, которую вы видите в логах Nginx, указывает на то, что сервер не может подключиться к сокету Puma. Причина это может быть в том, что либо сам Puma не запущен, либо сокет не создан, либо возникли проблемы с разрешениями. Обратите внимание на следующее сообщение об ошибке в логах:

connect() to unix:/var/www/tutor/code/tmp/sockets/puma.sock failed (111: Connection refused)

Это указывает на то, что Nginx пытается подключиться к файлу сокета, но не может этого сделать.

2. Проверьте, запущен ли сервер Puma

Первое, что необходимо сделать — убедиться, что сервер Puma действительно запущен. Вы можете проверить это, выполнив следующую команду:

ps aux | grep puma

Если вы не видите процесса Puma в списке, запустите его командой:

bundle exec puma -C config/puma.rb

Убедитесь, что конфигурация config/puma.rb содержит правильный путь к сокету:

bind "unix:///var/www/tutor/code/tmp/sockets/puma.sock"

3. Убедитесь, что сокет существует

После запуска Puma проверьте наличие файла сокета:

ls -l /var/www/tutor/code/tmp/sockets/puma.sock

Если файл сокета отсутствует, это может указывать на то, что Puma не смог его создать. В таком случае обратите внимание на наличие ошибок при запуске Puma в терминале.

4. Проверьте права доступа

Если сокет существует, но Nginx не может к нему подключиться, это может быть связано с проблемами прав доступа. Убедитесь, что пользователь, под которым работает сервер Nginx, имеет права на чтение и запись сокета. Вы можете изменить права доступа на сокет с помощью команды:

sudo chmod 666 /var/www/tutor/code/tmp/sockets/puma.sock

Также убедитесь, что родительская директория (/var/www/tutor/code/tmp/sockets/) имеет соответствующие права.

5. Настройка конфигурации Nginx

Убедитесь, что в конфигурации вашего Nginx есть правильные указания на сокет Puma. В /etc/nginx/sites-available/default или в соответствующем файле конфигурации проверьте настройки вашего сервера и убедитесь, что они выглядят следующим образом:

upstream puma {
    server unix:/var/www/tutor/code/tmp/sockets/puma.sock;
}

server {
    listen 80;
    server_name resources.tutor.com;

    location / {
        try_files $uri/index.html $uri @puma;
    }

    location @puma {
        proxy_pass http://puma;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

После внесения изменений в конфигурацию Nginx, не забудьте проверить конфигурацию на ошибки:

sudo nginx -t

А затем перезагрузите Nginx:

sudo systemctl restart nginx

6. Логи и отладка

Если после выполнения всех вышеперечисленных шагов проблема не решается, просмотрите логи Puma, а также логи Nginx для более детальной информации о том, что может вызывать ошибки. Логи Puma обычно располагаются в директории вашего проекта и могут предоставить ценную информацию для диагностики.

Заключение

Проблема с puma.sock failed (111: Connection refused) может возникать по разным причинам, от неработающего сервера Puma до неправильных прав доступа или конфигурации Nginx. Тщательная проверка каждого из этих аспектов поможет вам быстро диагностировать и устранить проблему. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться к сообществу или профессионалам за помощью.

Оцените материал
Добавить комментарий

Капча загружается...