Comment déboguer la connexion de chaussette Puma

METTRE À JOUR

D’après le commentaire de @BoraMa – je me suis rendu compte que mon emplacement puma.rb (qui était tout à fait normal) n’avait pas été configuré correctement. Cependant, je ne sais pas comment faire ces correspondances … Est-ce important où se trouve mon emplacement de chaussette? Puis-je le mettre n’importe où?

Mon chemin depuis le fichier disponible sur mon site est –

"unix:///home/deploy/apps/mll/shared/tmp/sockets/mll-puma.sock:/" 

Cependant, je me suis déconnecté de app_dir vu ci-dessous, et j’ai:

 /home/deploy/apps/mll/releases/20160415184544 

Donc, je ne sais pas comment je peux les faire correspondre / ce que je devrais utiliser, car il semble que cela utilise mes versions de capistrano dans le puma.rb

Mon puma.rb mis à jour

 # Change to match your CPU core count workers 1 # Min and Max threads per worker threads 1, 6 app_dir = File.expand_path("../..", __FILE__) puts "App dir: #{app_dir}" # App dir: /home/deploy/apps/mll/releases/20160415184544 shared_dir = "#{app_dir}" # Default to production rails_env = ENV['RAILS_ENV'] || "production" environment rails_env # Set up socket location # bind "unix://#{shared_dir}/sockets/puma.sock" bind "unix://#{shared_dir}/tmp/sockets/mll-puma.sock" # Logging stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true # Set master PID and state locations pidfile "#{shared_dir}/pids/puma.pid" state_path "#{shared_dir}/pids/puma.state" activate_control_app on_worker_boot do require "active_record" ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env]) end 

Remarque – J’étais à l’origine suivant: https://www.digitalocean.com/community/tutorials/deploying-a-rails-app-on-ubuntu-14-04-with-capistrano-nginx-and-puma

Poste d’origine

J’essaie de lancer Puma via Capistrano / Capistrano sur Nginx pour une application rails.

Après avoir exécuté la fonction cap production deploy:initial An unhandled lowlevel error occurred. The application logs may have details. et chargement de mon navigateur, An unhandled lowlevel error occurred. The application logs may have details. An unhandled lowlevel error occurred. The application logs may have details.

Je ne suis pas très familier avec Puma / Sockets / Permissions.

Mon journal indique:

 [crit] 27411#0: *2 connect() to unix:///home/deploy/apps/mll/shared/tmp/sockets/mll-puma.sock failed (13: Permission denied) while connecting to upstream, client: my_ip_address, server: mysite.com, request: "GET / HTTP/1.1", upstream: "http://unix:///home/deploy/apps/mll/shared/tmp/sockets/mll-puma.sock:/", host: "centers.m$ 

/ etc / nginx / sites-available / centres –

 upstream mll-puma { server unix:///home/deploy/apps/mll/shared/tmp/sockets/mll-puma.sock; } server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /home/deploy/apps/mll/current/public; access_log /home/deploy/apps/mll/current/log/nginx.access.log; error_log /home/deploy/apps/mll/current/log/nginx.error.log info; server_name centers.mrs-lodges-library.com; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; } try_files $uri/index.html $uri @puma; location @puma { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://mll-puma; } error_page 500 502 503 504 /500.html; client_max_body_size 10M; keepalive_timeout 10; } 

puma.rb, à peu près passe-partout, n’a pas changé les parameters

 # Change to match your CPU core count workers 1 # Min and Max threads per worker threads 1, 6 app_dir = File.expand_path("../..", __FILE__) shared_dir = "#{app_dir}/shared" # Default to production rails_env = ENV['RAILS_ENV'] || "production" environment rails_env # Set up socket location bind "unix://#{shared_dir}/sockets/puma.sock" # Logging stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true # Set master PID and state locations pidfile "#{shared_dir}/pids/puma.pid" state_path "#{shared_dir}/pids/puma.state" activate_control_app on_worker_boot do require "active_record" ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env]) end 

/etc/nginx/nginx.conf

 user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 64; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; 

Autorisations:

namei -l / var / www / centres /

 drwxr-xr-x root root / drwxr-xr-x root root var drwxr-xr-x root root www drwxrwxr-x root root centers 

namei -l / home / deploy / apps / mll / actuel / public /

 drwxr-xr-x root root / drwxr-xr-x root root home drwxr-xr-x deploy deploy deploy drwxr-xr-x deploy deploy apps drwxr-xr-x deploy deploy mll lrwxrwxrwx deploy deploy current -> /home/deploy/apps/mll/releases/20160415164906 drwxr-xr-x root root / drwxr-xr-x root root home drwxr-xr-x deploy deploy deploy drwxr-xr-x deploy deploy apps drwxr-xr-x deploy deploy mll drwxr-xr-x deploy deploy releases drwxrwxr-x deploy deploy 20160415164906 drwxrwxr-x deploy deploy public deploy@banana:/etc/nginx$ 

Sockets –

$ ls -l

 drwxr-xr-x 2 deploy deploy 4096 Apr 14 18:22 pids drwxr-xr-x 2 deploy deploy 4096 Apr 14 18:22 sockets 

$ ls -l

 srwxrwxrwx 1 deploy deploy 0 Apr 14 18:22 mll-puma.sock 

Je pense que dans vos fichiers de configuration de site puma.rb et nginx , vous devriez pointer puma / nginx sur le même socket. En ce moment, il existe différents chemins.