Puma не создает файл pid. Ошибка «Отказ в подключении» от Nginx в конфигурации puma

Сокет Puma не существует в папке сокетов, но puma работает под службой systemd

tail -n10 /var/log/nginx/access.log

172.69.171.135 - - [15/Apr/2024:08:30:00 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:00 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:00 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:00 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:00 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:01 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:01 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:01 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:01 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"
172.69.171.135 - - [15/Apr/2024:08:30:01 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "41.139.181.57"

tail -n10 /var/log/nginx/error.log Не имеет выхода

/etc/nginx/conf.d/default.conf

upstream tuma_mizigo_client {
    server unix:///var/www/tuma_mizigo_client/current/tmp/sockets/puma.sock;
}

server {
    listen 80;
    server_name tumamzigo.co.ke;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name tumamzigo.co.ke;

    root /var/www/tuma_mizigo_client/current/public;

    access_log /var/log/nginx/nginx_access.log;
    error_log /var/log/nginx/nginx_error.log;

    ssl_certificate /etc/letsencrypt/live/tumamzigo.co.ke/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/tumamzigo.co.ke/privkey.pem;

    try_files $uri/index.html $uri @tuma_mizigo_client;

    location @tuma_mizigo_client {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://tuma_mizigo_client;
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}

tail -n5 /var/www/tuma_mizigo_client/shared/log/nginx_access.log

162.158.40.151 - - [09/Apr/2024:13:29:02 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
162.158.40.151 - - [09/Apr/2024:13:29:02 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
162.158.40.151 - - [09/Apr/2024:13:29:02 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
162.158.40.151 - - [09/Apr/2024:13:29:03 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
162.158.40.151 - - [09/Apr/2024:13:29:03 +0000] "GET / HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"

tail -n5 /var/www/tuma_mizigo_client/shared/log/nginx_error.log - Не имеет выхода

cat /etc/systemd/system/tuma_mizigo_client_puma_production.service

[Unit]
Description=Tuma Mizigo Client Puma Production
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/tuma_mizigo_client/current
ExecStart=/bin/bash -lc 'bundle exec puma -C config/puma.rb'
Restart=always

[Install]
WantedBy=multi-user.target

cap production puma:start

rvm 1.29.12 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
ruby-3.2.3
ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [aarch64-linux]
00:00 puma:start
      01 sudo /bin/systemctl start tuma_mizigo_client_puma_production
    ✔ 01 [email protected] 0.345s

sudo systemctl status tuma_mizigo_client_puma_production.service

● tuma_mizigo_client_puma_production.service - Tuma Mizigo Client Puma Production
     Loaded: loaded (/etc/systemd/system/tuma_mizigo_client_puma_production.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-04-15 08:44:54 UTC; 5s ago
   Main PID: 54194 (ruby)
      Tasks: 11 (limit: 18910)
     Memory: 77.5M
        CPU: 1.470s
     CGroup: /system.slice/tuma_mizigo_client_puma_production.service
             └─54194 "puma 6.4.2 (tcp://0.0.0.0:3000) [20240410205534]" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "">

Apr 15 08:44:54 ip-172-31-20-29 systemd[1]: Started Tuma Mizigo Client Puma Production.
Apr 15 08:44:55 ip-172-31-20-29 bash[54194]: Puma starting in single mode...
Apr 15 08:44:55 ip-172-31-20-29 bash[54194]: * Puma version: 6.4.2 (ruby 3.2.3-p157) ("The Eagle of Durango")
Apr 15 08:44:55 ip-172-31-20-29 bash[54194]: *  Min threads: 5
Apr 15 08:44:55 ip-172-31-20-29 bash[54194]: *  Max threads: 5
Apr 15 08:44:55 ip-172-31-20-29 bash[54194]: *  Environment: development
Apr 15 08:44:55 ip-172-31-20-29 bash[54194]: *          PID: 54194
Apr 15 08:44:56 ip-172-31-20-29 bash[54194]: * Listening on http://0.0.0.0:3000
Apr 15 08:44:56 ip-172-31-20-29 bash[54194]: Use Ctrl-C to stop
lines 1-19/19 (END)

tail -n10 /var/log/nginx/nginx_error.log

2024/04/15 08:33:39 [crit] 22197#22197: *23709 stat() "/var/www/tuma_mizigo_client/current/public/" failed (13: Permission denied), client: 34.65.177.84, server: tumamzigo.co.ke, request: "OPTIONS / HTTP/1.0", host: "13.244.144.128"
2024/04/15 08:33:39 [crit] 22197#22197: *23709 connect() to unix:///var/www/tuma_mizigo_client/current/tmp/sockets/puma.sock failed (13: Permission denied) while connecting to upstream, client: 34.65.177.84, server: tumamzigo.co.ke, request: "OPTIONS / HTTP/1.0", upstream: "http://unix:///var/www/tuma_mizigo_client/current/tmp/sockets/puma.sock:/", host: "13.244.144.128"
2024/04/15 08:33:39 [crit] 22197#22197: *23709 stat() "/var/www/tuma_mizigo_client/current/public/500.html/index.html" failed (13: Permission denied), client: 34.65.177.84, server: tumamzigo.co.ke, request: "OPTIONS / HTTP/1.0", upstream: "http://unix:///var/www/tuma_mizigo_client/current/tmp/sockets/puma.sock/", host: "13.244.144.128"
2024/04/15 08:33:39 [crit] 22197#22197: *23709 stat() "/var/www/tuma_mizigo_client/current/public/500.html" failed (13: Permission denied), client: 34.65.177.84, server: tumamzigo.co.ke, request: "OPTIONS / HTTP/1.0", upstream: "http://unix:///var/www/tuma_mizigo_client/current/tmp/sockets/puma.sock/", host: "13.244.144.128"
2024/04/15 08:33:39 [crit] 22197#22197: *23709 connect() to unix:///var/www/tuma_mizigo_client/current/tmp/sockets/puma.sock failed (13: Permission denied) while connecting to upstream, client: 34.65.177.84, server: tumamzigo.co.ke, request: "OPTIONS / HTTP/1.0", upstream: "http://unix:///var/www/tuma_mizigo_client/current/tmp/sockets/puma.sock:/500.html", host: "13.244.144.128"

ls /var/www/tuma_mizigo_client/shared/tmp/sockets В папке сокетов ничего не показывает

config/deploy/production.rb

set :port, 22
set :user, 'ubuntu'
set :application, 'tuma_mizigo_client'
set :deploy_to, '/var/www/tuma_mizigo_client'
set :deploy_via, :remote_cache
set :use_sudo, false

server '13.244.144.128',
  roles: [:web, :app, :db],
  port: fetch(:port),
  user: fetch(:user),
  primary: true

set :deploy_to, "/var/www/#{fetch(:application)}"
set :ssh_options, {
  forward_agent: true,
  auth_methods: %w(publickey),
  user: 'ubuntu',
  keys: %w[/Users/kelvin/.ssh/macbookpro2024.pem]
}

set :rails_env, :production
set :conditionally_migrate, true

set :default_env, {
  'SECRET_KEY_BASE': 'RANDOM STRING'
}

config/deploy.rb

# config valid for current version and patch releases of Capistrano
lock "~> 3.18.1"
require 'capistrano-db-tasks'

set :application, "tuma_mizigo_client"
set :repo_url, "[email protected]:username/appname.git"

set :use_sudo, false

# if you want to remove the local dump file after loading
set :db_local_clean, false

# Default branch is :master
ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp

set :use_sudo, false
set :bundle_binsstubs, nil

set :rvm_map_bins, %w{gem rake ruby rails bundle puma pumactl sidekiq sidekiqctl}

# Default deploy_to directory is /var/www/my_app_name
set :app_path, "#{deploy_to}/current"

# Default value for :format is :airbrussh.
# set :format, :airbrussh

# You can configure the Airbrussh format using :format_options.
# These are the defaults.
# set :format_options, command_output: true, log_file: "log/capistrano.log", color: :auto, truncate: :auto

# Default value for :pty is false
set :pty, false

# Default value for :linked_files is []
append :linked_files, 'config/database.yml', 'config/secrets.yml', 'config/application.yml', 'config/sidekiq.yml'

# Default value for linked_dirs is []
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system', 'public/uploads'

# Default value for default_env is {}
# set :default_env, { path: "/opt/ruby/bin:$PATH" }

# Default value for keep_releases is 5
# set :keep_releases, 5

## Capistrano DB Tasks
# if you want to remove the local dump file after loading
# set :db_local_clean, true

# if you want to remove the dump file from the server after downloading
# set :db_remote_clean, true

# if you are highly paranoid and want to prevent any push operation to the server
set :disallow_pushing, false

# If you want to import assets, you can change default asset dir (default = system)
# This directory must be in your shared directory on the server
set :assets_dir, %w(public/uploads)
set :local_assets_dir, %w(public/uploads)

### Puma Configuration ###
set :nginx_use_ssl, true
set :puma_workers, 2

### Sidekiq Configuration ###
SSHKit.config.command_map[:sidekiq] = "bundle exec sidekiq"
SSHKit.config.command_map[:sidekiqctl] = "bundle exec sidekiqctl"

# set :sidekiq_default_hooks, true
# set :sidekiq_pid, File.join(shared_path, 'tmp', 'pids', 'sidekiq.pid') # ensure this path exists in production before deploying.
# # set :sidekiq_env, fetch(:rack_env, fetch(:rails_env))
# set :sidekiq_env, :production
# set :sidekiq_log, File.join(shared_path, 'log', 'sidekiq.log')
# set :sidekiq_config, File.join(shared_path, 'config', 'sidekiq.yml') # if you have a config/sidekiq.yml, do not forget to set this. 
# set :sidekiq_roles, :app
# set :sidekiq_processes, 1
# # sidekiq monit
# # set :sidekiq_monit_templates_path => 'config/deploy/templates'
# # set :sidekiq_monit_conf_dir => '/etc/monit/conf.d'
# # set :sidekiq_monit_use_sudo => true
# # :monit_bin => '/usr/bin/monit'
# # set :sidekiq_monit_default_hooks => true
# # set :sidekiq_monit_group => nil
# # set :sidekiq_service_name => "sidekiq_#{fetch(:application)}_#{fetch(:sidekiq_env)}" + (index ? "_#{index}" : '') 
# # set :sidekiq_user, 'ubuntu' #user to run sidekiq as

# set :sidekiq_service_unit_name => 'sidekiq'
# set :sidekiq_service_unit_user => :user # :system
# set :sidekiq_enable_lingering => true
# set :sidekiq_lingering_user => :user

set :puma_systemctl_user, :system

set :puma_enable_socket_service, true
set :puma_user, fetch(:user)
set :puma_bind,       "unix://#{shared_path}/tmp/sockets/puma.sock"
set :puma_state,      "#{shared_path}/tmp/pids/puma.state"
set :puma_pid,        "#{shared_path}/tmp/pids/puma.pid"
set :puma_access_log, "#{shared_path}/log/puma.error.log"
set :puma_error_log,  "#{shared_path}/log/puma.access.log"
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, true 

Capfile

# Load DSL and set up stages
require 'capistrano/setup'

# Include default deployment tasks
require 'capistrano/deploy'

# Load the SCM plugin appropriate to your project:
#
# require 'capistrano/scm/hg'
# install_plugin Capistrano::SCM::Hg
# or
# require 'capistrano/scm/svn'
# install_plugin Capistrano::SCM::Svn
# or
require 'capistrano/scm/git'
install_plugin Capistrano::SCM::Git

# Include tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
#   https://github.com/capistrano/rvm
#   https://github.com/capistrano/rbenv
#   https://github.com/capistrano/chruby
#   https://github.com/capistrano/bundler
#   https://github.com/capistrano/rails
#   https://github.com/capistrano/passenger
#
require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
require 'capistrano/rails'
require 'capistrano/bundler'
# require 'capistrano/rails/assets'
# require 'capistrano/rails/migrations'
require 'capistrano/puma'
require 'capistrano/sidekiq'
require 'capistrano/nginx'

# require 'capistrano/sidekiq/monit' #to require monit tasks # Only for capistrano3
# require 'capistrano/passenger'
install_plugin Capistrano::Puma  # Default puma tasks
install_plugin Capistrano::Puma::Workers  # if you want to control the workers (in cluster mode)
# install_plugin Capistrano::Puma::Jungle # if you need the jungle tasks
# install_plugin Capistrano::Puma::Monit  # if you need the monit tasks
install_plugin Capistrano::Puma::Nginx  # if you want to upload a nginx site template
install_plugin Capistrano::Sidekiq::Systemd
install_plugin Capistrano::Puma::Systemd  # if you use SystemD
install_plugin Capistrano::Nginx



# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

Gemfile.lock

GIT
  remote: https://github.com/seuros/capistrano-puma.git
  revision: 2cc11846540489edda10d83e026c9bea04e6fab1
  specs:
    capistrano3-puma (6.0.0.beta.1)
      capistrano (~> 3.7)
      capistrano-bundler
      puma (>= 5.1, < 7.0)

GIT
  remote: https://github.com/seuros/capistrano-sidekiq.git
  revision: c8e1766b39478d5e9cfe10100d648dfd28c6c06b
  specs:
    capistrano-sidekiq (3.0.0.alpha.2)
      capistrano (>= 3.9.0)
      capistrano-bundler
      sidekiq (>= 6.0.6)

config/puma.rb

# This configuration file will be evaluated by Puma. The top-level methods that
# are invoked here are part of Puma's configuration DSL. For more information
# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html.

# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers: a minimum and maximum.
# Any libraries that use thread pools should be configured to match
# the maximum value specified for Puma. Default is set to 5 threads for minimum
# and maximum; this matches the default thread size of Active Record.
max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_threads_count

# Specifies that the worker count should equal the number of processors in production.
if ENV["RAILS_ENV"] == "production"
  require "concurrent-ruby"
  worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") { Concurrent.physical_processor_count })
  workers worker_count if worker_count > 1
  bind "unix:///var/www/tuma_mizigo_client/shared/tmp/sockets/puma.sock"
end

# Specifies the `worker_timeout` threshold that Puma will use to wait before
# terminating a worker in development environments.
worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"

# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
port ENV.fetch("PORT") { 3000 }

# Specifies the `environment` that Puma will run in.
environment ENV.fetch("RAILS_ENV") { "development" }

# Specifies the `pidfile` that Puma will use.
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }

# Allow puma to be restarted by `bin/rails restart` command.
plugin :tmp_restart

TL/DR - неясно, о чем вы спрашиваете и с чего вообще начать. Предложите сосредоточить внимание на своем вопросе и на том, что вы предоставили.

dbugger 15.04.2024 18:03

Можно ли увидеть ваш конфиг/puma.rb? Я подозреваю, что сокет там не определен

reesericci 15.04.2024 18:13

@reesericci Добавлен файл конфигурации puma.

Mutuma 16.04.2024 09:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что RAILS_ENV, переменная среды, которая сообщает Puma & Rails, в какой среде она работает, не установлена ​​в production, поскольку это требуется для привязки к сокету согласно вашему config/puma.rb. По умолчанию установлено значение development.

Вы можете настроить среду, добавив -e production к команде puma в ExecStart вашего служебного файла.

Полная строка ExecStart должна выглядеть так:

ExecStart=/bin/bash -lc 'bundle exec puma -C config/puma.rb -e production'

Другие вопросы по теме