AWS에서 unicorn + nginx + sinatra를 실행해보십시오.
왜 unicorn + nginx?
unicorn은 범용의 Rack 어플리케이션 서버. Rails에서도 sinatra에서도 사용할 수 있습니다.
unicorn만으로도 모든 포트를 청취하면 웹 서버로 사용할 수 있지만,
다음과 같은 이점이 있기 때문에 프로덕션에서는 nginx를 역방향 프록시로 사용
앞에 서서 요청을 unicorn으로 보내는 것이 좋습니다.
던지기 위해 느린 회선 (3G 등)으로 연결이 왔을 때 unicorn
작업자 프로세스 대기 시간을 줄일 수 있습니다
동작 원리는 github의 운영 예가 기재된 이하의 문서가 상세하다
htps : // 기주 b. 코 m / b ぉ g / 517 - 니코 rn
우선 unicorn만으로 서버를 세운다.
샘플 sinatra 앱을 unicorn에서 호출하십시오.
config.ru
require 'rubygems'
require 'sinatra/base'
class HelloApp < Sinatra::Base
get '/hello' do
'Good Sunday Morning!'
end
end
run HelloApp
Gemfile에 unicorn을 더하여 bundle install
Gemfile
gem "unicorn"
쉘
$ bundle install
$ bundle exec unicorn -v
unicorn v4.6.3
unicorn 설정 파일을 만듭니다. 루비 코드로 작성할 수 있습니다.
unicorn.rb
@dir = "/path/to/app/"
worker_processes 2 # CPUのコア数に揃える
working_directory @dir
timeout 300
listen 80
pid "#{@dir}tmp/pids/unicorn.pid" #pidを保存するファイル
# unicornは標準出力には何も吐かないのでログ出力を忘れずに
stderr_path "#{@dir}log/unicorn.stderr.log"
stdout_path "#{@dir}log/unicorn.stdout.log"
AWS를 사용하는 경우 보안 그룹에 지정된 포트
비워 둔다 (잘 잊고 빠져...)
이것으로 준비 완료. 다음 명령으로 시작할 수 있습니다. -D는 데몬으로 시작.
프로덕션 환경에서 시작할 때는 -E production
(※ 옵션은 설정 파일보다 우선한다)
쉘
$ bundle exec unicorn -c unicorn.rb -D
$ ps auxf | grep unicorn | grep -v grep
unicorn master -c unicorn.rb -D
\_ unicorn worker[0] -c unicorn.rb -D
\_ unicorn worker[1] -c unicorn.rb -D
ps를 보면 worker 프로세스와 그것을 관리하는 master 프로세스가
움직이고 있는지 확인할 수 있습니다.
또한 unicorn_rails라는 실행 파일이 있지만 여기
과거 버전의 Rails를 위해 기본적으로 unicorn을 사용하는 것이 좋습니다.
nginx를 역방향 프록시로 unicorn 앞에 넣습니다.
그런 다음 nginx를 unicorn 앞에 놓습니다.
유닉스 도메인 소켓을 통해 nginx와 unicorn이 상호 작용하도록 설정
또한/path/to/app/static 이하의 요청은 nginx가 처리한다 (unicorn까지 가지 않는다)
쉘
$ sudo yum -y install nginx
$ nginx -v
nginx version: nginx/1.4.2
/etc/nginx/nginx.conf
user root;
worker_processes 2;
http {
upstream unicorn_server {
server unix:/path/to/app/tmp/unicorn.sock;
}
server {
listen 80;
server_name ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com;
root /path/to/app/static;
location / {
# 静的ファイルが存在しなかった時はUnicornにproxy
if (!-f $request_filename) {
proxy_pass http://unicorn_server;
break;
}
}
}
}
unicorn.rb
# listen 80
listen "/path/to/app/tmp/unicorn.sock", backlog: 1024 # UNIXソケットを見るように変更
nginx 시작, unicorn 재부팅
브라우저에서 http://xx.xx.xx.xx/hello을 두드려 확인
쉘
$ sudo /etc/init.d/nginx start
or
$ sudo nginx
다음 단계
이상으로 우선은 움직이지만, 그 밖에도 unicorn에는 조사해 두어야 할 주제가
그래서 몇 가지를 둡니다.
Have Fun!
Reference
이 문제에 관하여(AWS에서 unicorn + nginx + sinatra를 실행해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/konpyu/items/3ba3774bcde226d7d07d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)