ror 설정 유 니 콘 배치

7282 단어 ror
유 니 콘 은 현재 ror 에서 유행 하 는 응용 서버 입 니 다. nginx 와 함께 rails 프로그램 을 직접 배치 합 니 다. 아래 의 방식 은 socket 을 공유 하고 포크 서브 프로 세 스 를 계속 하 는 것 입 니 다. pp - fpm 와 유사 한 모델 입 니 다.
 
유 니 콘 설치
gem install unicorn
          gemfile
gem 'unicorn'

 
공정 설명
 rails    unicorn     
   unicorn_rails /xxxx/yyyy/zzzz/unicorn.rb  rails  
nginx   ,      ror  

 
다음은 자세 한 스 크 립 트 부분 입 니 다.
예 를 들 어 저희 가 hello 라 는 ror 프로젝트 가 있어 요.
hello / config 아래 유 니 콘 rb 만 들 기
root_path = File.expand_path '../', File.dirname(__FILE__)

log_file = root_path + '/log/unicorn.log'
err_log  = root_path + '/log/unicorn_error.log'

pid_file = '/tmp/unicorn_hello.pid'
old_pid = pid_file + '.oldbin'

socket_file = '/tmp/unicorn_hello.sock'

worker_processes 6
working_directory root_path
listen socket_file, backlog: 1024
timeout 30

pid pid_file
stderr_path err_log
stdout_path log_file

preload_app true

before_exec do |server|
  ENV['BUNDLE_GEMFILE'] = root_path + '/Gemfile'

  defined?(ActiveRecord::Base) and
      ActiveRecord::Base.connection.disconnect!
end

before_fork do |server, worker|
  if File.exists?(old_pid) && server.pid != old_pid
    begin
      Process.kill('QUIT', File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
      puts "Send 'QUIT' signal to unicorn error!"
    end
  end

  defined?(ActiveRecord::Base) and
      ActiveRecord::Base.establish_connection
end

 
hello 프로젝트 밖에서 start 구축hello.sh
#!/bin/sh

UNICORN=unicorn_rails
#       
CONFIG_FILE=/home/mmc/Projects/ruby/hello/config/unicorn.rb
 
case "$1" in
  start)
  #$UNICORN -c $CONFIG_FILE -E production -D
  $UNICORN -c $CONFIG_FILE -D
  ;;
  stop)
  kill -QUIT `cat /tmp/unicorn_hello.pid`
  ;;
  restart|force-reload)
    kill -USR2 `cat /tmp/unicorn_hello.pid`
  ;;
  *)
   echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
   exit 3
   ;;
esac

실행 sh starthello.sh start
 
마지막 설정 nginx
upstream unicorn {
    server unix:/tmp/unicorn_hello.sock fail_timeout=0;
}
 
server {
  listen 80 default deferred;
  root /home/mmc/Projects/ruby/hello/;
  
 
  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }
 
  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }
 
  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

sudo invoke - rc. d nginx restart 시작
 
http://127.0.0.1 ror 페이지 를 볼 수 있 을 거 예요.

좋은 웹페이지 즐겨찾기