首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于unicorn.sock文件错误,Nginx和Unicorn无法工作

由于unicorn.sock文件错误,Nginx和Unicorn无法工作
EN

Stack Overflow用户
提问于 2020-06-16 13:03:50
回答 1查看 680关注 0票数 0

我第一次在upcloud上设置VPS。我用独角兽5.5.5和Nginx。Rails 4.2.8和ruby 2.4.2。我的Nginx服务运行良好。不会显示出任何错误。每当我启动独角兽服务时,我都会收到这个错误。我遵循了这个教程。

https://medium.com/@manishyadavv/how-to-deploy-ruby-on-rails-apps-on-aws-ec2-7ce55bb955fa

代码语言:javascript
复制
F, [2020-06-16T12:44:20.611895 #12683] FATAL -- : error adding listener addr=/tmp/unicorn.sock
/usr/share/rvm/gems/ruby-2.4.2/gems/unicorn-5.5.5/lib/unicorn/socket_helper.rb:132:in `bind_listen': socket=/tmp/unicorn.sock specified but it is not a socket! (ArgumentError)
        from /usr/share/rvm/gems/ruby-2.4.2/gems/unicorn-5.5.5/lib/unicorn/http_server.rb:243:in `listen'
        from /usr/share/rvm/gems/ruby-2.4.2/gems/unicorn-5.5.5/lib/unicorn/http_server.rb:851:in `block in bind_new_listeners!'
        from /usr/share/rvm/gems/ruby-2.4.2/gems/unicorn-5.5.5/lib/unicorn/http_server.rb:851:in `each'
        from /usr/share/rvm/gems/ruby-2.4.2/gems/unicorn-5.5.5/lib/unicorn/http_server.rb:851:in `bind_new_listeners!'
        from /usr/share/rvm/gems/ruby-2.4.2/gems/unicorn-5.5.5/lib/unicorn/http_server.rb:142:in `start'
        from /usr/share/rvm/gems/ruby-2.4.2/gems/unicorn-5.5.5/bin/unicorn:128:in `<top (required)>'
        from /usr/share/rvm/gems/ruby-2.4.2/bin/unicorn:23:in `load'
        from /usr/share/rvm/gems/ruby-2.4.2/bin/unicorn:23:in `<main>'
        from /usr/share/rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:24:in `eval'
        from /usr/share/rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:24:in `<main>'

我的unicorn.sock文件是空的,如果这是菜鸟的错误,我很抱歉,但是我现在被这个问题困扰了2天。请帮帮我。这里是etc/init.d目录中的unicorn_repo文件

代码语言:javascript
复制
#!/bin/sh
### BEGIN INIT INFO
# Provides:          unicorn
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the unicorn app server
# Description:       starts unicorn using start-stop-daemon
### END INIT INFO
set -e
USAGE="Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>"
# app settings
USER="root"
APP_NAME="soup"
APP_ROOT="/$USER/$APP_NAME"
ENV="production"
# environment settings
PATH="/home/$USER/.rbenv/shims:/home/$USER/.rbenv/bin:$PATH"
CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D"
PID="$APP_ROOT/shared/pids/unicorn.pid"
OLD_PID="$PID.oldbin"

这是我的nginx/默认文件

代码语言:javascript
复制
upstream app {
    # Path to Unicorn SOCK file, as defined previously
    server unix:/tmp/unicorn.sock fail_timeout=0;
}
server {
    listen 0.0.0.0;
    server_name localhost;
    root root/soup/;
    try_files $uri/index.html $uri @app;
    location @app {
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }
    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}

这是我的unicorn.rb文件。

代码语言:javascript
复制
# set path to application
app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"
working_directory app_dir
# Set unicorn options
worker_processes 2
preload_app true
timeout 30
# Set up socket location
listen "/tmp/unicorn.sock", :backlog => 64
listen 3000, :tcp_nopush => true

# Logging
stderr_path "#{shared_dir}/log/unicorn.stderr.log"
stdout_path "#{shared_dir}/log/unicorn.stdout.log"
# Set master PID location
pid "#{shared_dir}/pids/unicorn.pid"
~
~
~
~
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-17 12:59:37

插座是用于进程间通信的一种特殊文件。如果您运行ls -la套接字,则模式字符串中有一个前导s

你的应该是这样的:

代码语言:javascript
复制
srwxrwxrwx /tmp/unicorn.sock

如果您已经手动创建了/tmp/unicorn.sock文件,请删除它。

请注意:您使用的教程已经3年了,所以您的设置从一开始就已经过时了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62409204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档