Я получаю сервер, на котором в настоящее время установлены два приложения, и мне нужно добавить еще одно, вот мои конфигурации.
user www-data www-data;
worker_processes 4;
pid /var/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;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Disable unknown domains
##
server {
listen 80 default;
server_name _;
return 444;
}
##
# Virtual Host Configs
##
include /home/ruby/apps/*/shared/config/nginx.conf;
}
deploy_to = "/home/ruby/apps/staging.domain.com"
rails_root = "#{deploy_to}/current"
pid_file = "#{deploy_to}/shared/pids/unicorn.pid"
socket_file= "#{deploy_to}/shared/sockets/.sock"
log_file = "#{rails_root}/log/unicorn.log"
err_log = "#{rails_root}/log/unicorn_error.log"
old_pid = pid_file + '.oldbin'
timeout 30
worker_processes 10 # Здесь тоже в зависимости от нагрузки, погодных условий и текущей фазы луны
listen socket_file, :backlog => 1024
pid pid_file
stderr_path err_log
stdout_path log_file
preload_app true
GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=)
before_exec do |server|
ENV["BUNDLE_GEMFILE"] = "#{rails_root}/Gemfile"
end
before_fork do |server, worker|
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
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
Также я добавил в проект капистрано
# encoding: utf-8
require 'capistrano/ext/multistage'
require 'rvm/capistrano'
require 'bundler/capistrano'
set :stages, %w(staging production)
set :default_stage, "staging"
default_run_options[:pty] = true
ssh_options[:paranoid] = false
ssh_options[:forward_agent] = true
set :scm, "git"
set :user, "ruby"
set :runner, "ruby"
set :use_sudo, false
set :deploy_via, :remote_cache
set :rvm_ruby_string, '1.9.2'
# Create uploads directory and link
task :configure, :roles => :app do
run "cp #{shared_path}/config/database.yml #{release_path}/config/database.yml"
# run "ln -s #{shared_path}/db/sphinx #{release_path}/db/sphinx"
# run "ln -s #{shared_path}/config/unicorn.rb #{release_path}/config/unicorn.rb"
end
namespace :deploy do
task :restart do
run "if [ -f #{unicorn_pid} ] && [ -e /proc/$(cat #{unicorn_pid}) ]; then kill -s USR2 `cat #{unicorn_pid}`; else cd #{deploy_to}/current && bundle exec unicorn_rails -c #{unicorn_conf} -E #{rails_env} -D; fi"
end
task :start do
run "cd #{deploy_to}/current && bundle exec unicorn_rails -c #{unicorn_conf} -E #{rails_env} -D"
end
task :stop do
run "if [ -f #{unicorn_pid} ] && [ -e /proc/$(cat #{unicorn_pid}) ]; then kill -QUIT `cat #{unicorn_pid}`; fi"
end
end
before 'deploy:finalize_update', 'configure'
after "deploy:update", "deploy:migrate", "deploy:cleanup"
require './config/boot'
upstream staging_whotracker {
server unix:/home/ruby/apps/staging.whotracker.com/shared/sockets/.sock;
}
server {
listen 209.105.242.45;
server_name beta.whotracker.com;
rewrite ^/(.*) http://www.beta.whotracker.com/$1 permanent;
}
server {
listen 209.105.242.45;
server_name www.beta.hotracker.com;
root /home/ruby/apps/staging.whotracker.com/current/public;
location ~ ^/sitemaps/ {
root /home/ruby/apps/staging.whotracker.com/current/system;
if (!-f $request_filename) {
break;
}
if (-f $request_filename) {
expires -1;
break;
}
}
# cache static files :P
location ~ ^/(images|javascripts|stylesheets)/ {
root /home/ruby/apps/staging.whotracker.com/current/public;
if ($query_string ~* "^[0-9a-zA-Z]{40}$") {
expires max;
break;
}
if (!-f $request_filename) {
break;
}
}
if ( -f /home/ruby/apps/staging.whotracker.com/shared/offline ) {
return 503;
}
location /blog {
index index.php index.html index.htm;
try_files $uri $uri/ /blog/index.php?q=$uri;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
proxy_set_header HTTP_REFERER $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_max_temp_file_size 0;
# If the file exists as a static file serve it directly without
# running all the other rewite tests on it
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
proxy_pass http://staging_whotracker;
break;
}
}
error_page 502 =503 @maintenance;
error_page 500 504 /500.html;
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /503.html break;
}
}
executing ["/home/ruby/apps/staging.whotracker.com/shared/bundle/ruby/1.9.1/bin/unicorn_rails", "-c", "/home/ruby/apps/staging.whotracker.com/current/config/unicorn.rb", "-E", "staging", "-D", {5=>#<Kgio::UNIXServer:/home/ruby/apps/staging.whotracker.com/shared/sockets/.sock>}] (in /home/ruby/apps/staging.whotracker.com/releases/20120517114413)
I, [2012-05-17T06:43:48.111717 #14636] INFO -- : inherited addr=/home/ruby/apps/staging.whotracker.com/shared/sockets/.sock fd=5
I, [2012-05-17T06:43:48.111938 #14636] INFO -- : Refreshing Gem list
worker=0 ready
...
master process ready
...
reaped #<Process::Status: pid 2590 exit 0> worker=6
...
master complete
Развертывание проходит успешно, но когда я пытаюсь получить доступ к beta.whotracker.com или ip-адресу, я получаю SERVER NOT FOUND
ошибка, в то время как другие приложения работают отлично. В журналах ошибок ничего не отображается. Не могли бы вы указать мне, где я виноват?
Похоже, у вас есть опечатка в общем nginx.conf
. Домен, который вы пытаетесь использовать, www.beta.whotracker.com
но конфиг сервера говорит www.beta.hotracker.com
.
Проверьте свой брандмауэр и DNS.
Два приложения работают? я однажды была проблема с nginx / unicorn это оказалось неправильно настроенным брандмауэром.
Это не код ошибки http. Вы используете браузер Chrome? Это может быть проблема с кешированием браузера. Очистите кеш и попробуйте.