RailsアプリをElastic BeanstalkまたはDockerにRails-Pumaアプリとしてデプロイすることもできます。答えはより一般的で、むしろをどこから始めるのがよりも完全な解決策を提供します。
ルビー - プーマ
これは非常に難しいことができます:あなたは(Webブラウザでの)コンソール経由でRuby用の新しいElastic Beanstalkで環境を作成する場合は、代わりにプーマのプラットフォームで、デフォルトでは旅客のプラットフォームを設定することができます。そして、おそらくあなたは、コンソールにそれを変更することはできません。
をeb cli
を使用し、プーマとの新しい環境を作成します。ニースウォークスルーhereあなたがeb create
を実行する前に、しかし、あなたはもう一つのことをしなければならない - 選択プラットフォーム:
$ eb platform select
It appears you are using Python. Is this correct?
(y/n): n
Select a platform.
1) Go
2) Node.js
3) PHP
4) Python
5) Ruby
6) Tomcat
7) IIS
8) Docker
9) Multi-container Docker
10) GlassFish
11) Java
(default is 1): 5
Select a platform version.
1) Ruby 2.3 (Puma)
2) Ruby 2.2 (Puma)
3) Ruby 2.1 (Puma)
4) Ruby 2.0 (Puma)
5) Ruby 2.3 (Passenger Standalone)
6) Ruby 2.2 (Passenger Standalone)
7) Ruby 2.1 (Passenger Standalone)
8) Ruby 2.0 (Passenger Standalone)
9) Ruby 1.9.3
(default is 1):
あなたはElastic Beanstalkでの労働者の代わりに、Webサーバーを作成したい場合は、次のコマンドを実行します
$ eb create -t worker
あなたは使用することができますがコンソール(Webブラウザ)またはeb cli
(docs)を使用して他の設定を行います。どのようにセットアップ
ドッカー
後ポスト多分便利レール+プーマ+ nginxの+ドッカー:
http://codepany.com/blog/rails-5-and-docker-puma-nginx/
これは、nginxのは、ポート80およびストリーム要求にバインドされ多容器構成は、ありますプーマを介してソケット。あなたの場合は次のようになります:"unix:///var/run/puma/my_app.sock"
ドッカーをアップロードするには、AWS ECRを使用してDockerイメージを保存します。 Dockerrun.aws.jsonファイル(docker-compose.ymlファイルと非常に似ています)を作成する必要があります.Dockerrun.aws.jsonファイルは、AWS Console(Webブラウザ)経由で環境にデプロイすることができます。
EDITここ
はpuma.rb
設定ファイルです:
threads_count = ENV.fetch('RAILS_MAX_THREADS') { 5 }
threads threads_count, threads_count
bind "unix:///var/run/puma.sock?umask=0000"
stdout_redirect "/var/log/puma.stdout.log", "/var/log/puma.stderr.log", true
# Specifies the `environment` that Puma will run in.
#
environment ENV.fetch('RAILS_ENV') { 'development' }
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart
一部の設定は変更になる場合がありますが、ポイントは、私はUnixのソケットにピューマサーバがバインドすると、それはnginxのと接続することです。 nginxの設定ファイル:
user root;
error_log /var/log/app-nginx-error.log;
pid /var/run/app-nginx.pid;
events {
worker_connections 8096;
multi_accept on;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/app-nginx-access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
upstream appserver {
server unix:///var/run/puma.sock;
}
server {
listen 80 default_server;
root /var/www/public;
client_max_body_size 16m;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @appserver;
location @appserver {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header Client-IP $remote_addr;
proxy_pass http://appserver;
}
access_log /var/log/app-nginx-access.log;
error_log /var/log/app-nginx-error.log debug;
error_page 500 502 503 504 /500.html;
}
}
nginxの設定ファイルの中で最も重要な部分である:あなたが行ったとき
upstream appserver {
server unix:///var/run/puma.sock;
}
は、あなただけのGemfileでピューマの宝石をインストールし、プーマとのRubyプラットフォームを選択しようとしましたElastic Beanstalkの設定を介して?最初に特別なプーマ設定ファイルなしで実行できるかどうかを確認します。 – littleforest
@littleforestプーマの宝石はすでに私のgemfileにあった。私はこれらの2行を追加する以外には、他の設定はしていませんでした。私はレールに乗っています5 – aks
あなたは乗客ではなく、プーマでRubyプラットフォームを起動したことを確認しましたか? – littleforest