Я пытаюсь развернуть свое первое API-приложение Ruby on Rails в amazon ec2 .Для этого я скопировал мой myapp
в мой домашний каталог /home/user
.На моем сервере я установил Rails, используя rbenv
, также установил mysql-client
.
В приложении Gemfile Я добавил следующие гемы:
# Use Puma as the app server
gem 'puma', '~> 3.11'
#for server deployment
group :production, :staging do
gem 'capistrano'
gem 'capistrano3-puma'
gem 'capistrano-rails', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano-rbenv'
end
puma.rb :
# Change to match your CPU core count
workers 1
# Min and Max threads per worker
threads 1, 6
app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"
# Default to production
rails_env = ENV['RAILS_ENV'] || "production"
environment rails_env
# Set up socket location
bind "unix://#{shared_dir}/sockets/puma.sock"
# Logging
stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true
# Set master PID and state locations
pidfile "#{shared_dir}/pids/puma.pid"
state_path "#{shared_dir}/pids/puma.state"
activate_control_app
on_worker_boot do
require "active_record"
ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished
ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env])
end
Изначально я не ищу развертывания capistrano .Так что я не перечисляю deploy.rb
файл здесь.Я установил nginx на сервере и в файле конфигурации я добавил следующие
/ etc / nginx / conf.d / virtual.conf :
upstream app {
server unix:///home/user/myapp/shared/sockets/puma.sock fail_timeout=0;
}
server {
listen 80;
server_name localhost;
root /home/user/myapp/current/public;
try_files $uri/index.html $uri @app;
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection '';
proxy_pass http://app;
}
location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
gzip_static on;
expires max;
add_header Cache-Control public;
}
}
После добавления конфигурации я перезапустил сервер, мне надоело получать сервер, указав IP в браузере, но тайм-аут произошел.Затем я запустил сервер puma с помощью команды
bundle exec puma -e production -p 3000 -b unix:/home/user/myapp/shared/sockets/puma.sock
Нужно ли запускать сервер следующим образом?