gpt4 book ai didi

ruby-on-rails-4 - 在上游 "app"中找不到主机 nginx 不提供卡在欢迎页面上的应用程序

转载 作者:行者123 更新时间:2023-12-04 23:48:39 26 4
gpt4 key购买 nike

这是我第一次设置 nginx 和 unicorn。
我的 capistrano 部署通过了,一切都成功了。

here is my unicorn.rb

#app_dir = File.expand_path('../../', __FILE__)
#shared_dir = File.expand_path('../../../shared/', __FILE__)

preload_app true
worker_processes 4
timeout 30
working_directory "home/deploy/appname"
shared_dir = "home/deploy/appname/shared"

# Set up socket location
# by default unicorn listens on 8080
listen "#{shared_dir}/tmp/sockets/unicorn.sock", :backlog => 64

# Logging
stderr_path "#{shared_dir}/log/unicorn.stderr.log"
stdout_path "#{shared_dir}/log/unicorn.stdout.log"

# Set master PID location
pid "#{shared_dir}/tmp/pids/unicorn.pid"

#must set preload app true to use before/after fork
before_fork do |server, worker|
defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!

#before forking, this is suppose to kill the master process that belongs to the oldbin
#enables 0 downtime to deploy

old_pid = "#{shared_dir}/tmp/pids/unicorn.pid.oldbin"
if File.exists?(old_pid) && server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
end

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

# before_exec do |server|
# ENV['BUNDLE_GEMFILE'] = "#{app_dir}/Gemfile"
# end
我的 nginx conf 在/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;


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/*;
}
我的默认文件在/etc/nginx/sites-enabled/default
upstream app_server {
#path to unicorn sock file, as defined previously
server unix:/home/deploy/appname/shared/tmp/sockets/unicorn.sock fail_timeout=0;
}

server {
listen 80;

root /home/deploy/appname;

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

#click tracking
access_log /var/log/nginx/appname_access.log combined;

error_log /var/log/nginx/appname_error.log;

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

error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
当我这样做时
deploy@localhost:~$ sudo nginx -s reload
nginx: [emerg] host not found in upstream "app" in /etc/nginx/sites-enabled/default:46
当我进入
/shared/tmp/sockets
我里面没有文件。我不认为我应该手动创建它。我正在使用 capistrano 3。我想生成这个文件吗?
我在用
require 'capistrano3/unicorn' #in capfile
在部署.rb
符号文件和目录
set :linked_files, %w{config/database.yml config/secrets.yml}
set :linked_dirs, %w{tmp/pids tmp/cache tmp/sockets log bin vendor/bundle public/system}

#just pointing to our unicorn.rb
set :unicorn_config_path, "config/unicorn.rb"

#capistrano tasks and processes

after "deploy", "deploy:cleanup"

namespace :deploy do

desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
invoke 'unicorn:restart'
end
end

after :finishing, "deploy:cleanup"

end
我把我的上限文件放在这里,因为我注意到我的上限生产部署日志中没有登录 unicorn 重启。我不确定这是否有帮助。
我确保working_directory 与默认nginx 页面中的根目录匹配。
我确保 unicorn 中的监听与默认页面中的上游应用服务器 unix 相匹配。
我确保 nginx.conf 文件包含启用站点的默认配置 nginx 页面。

最佳答案

嗯,这是 6 个月大,但我还是要回答它。问题是在sites_enabled/default 中@app 中的proxy_pass。它试图传递到上游服务器 http://app ,但您没有该上游集,您将其命名为 app_server。

您需要重命名:
proxy_pass http://app

到:
proxy_pass http://app_server

关于ruby-on-rails-4 - 在上游 "app"中找不到主机 nginx 不提供卡在欢迎页面上的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com