我真的很难将我的Rails应用程序部署到我新创建的DigitalOcean Droplet。
我的设置如下:
我在Docker容器中有 Postgres 和 Redis 的本地 Rails 5 应用。
我只是想使用 Puma + Nginx 作为网络服务器将其部署到制作中。
我无法为我的生活做到这一点。这是我的docker-compose.yml文件:
version: "2"
services:
postgres:
image: postgres:9.6
ports:
- "5432:5432"
environment:
POSTGRES_DB: "${DATABASE_NAME}"
POSTGRES_PASSWORD: "${DATABASE_PASSWORD}"
volumes:
- postgres-data:/var/lib/postgresql/data
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
# This allows the data to persist to disk without being lost on
# Docker container restarts:
postgres-data:
driver: local
在生产中为这样一个简单的应用程序提供正确的Puma / Nginx配置是什么?我一直在寻找,但似乎无法弄明白。
提前致谢!
答案 0 :(得分:0)
如果你的rails应用程序已经严格部署了Droplet,而不是docker,你可以尝试下面的简单配置:
<强> nginx.conf 强>
upstream your_app {
server unix:/path_to_app_home/shared/tmp/sockets/puma.sock
fail_timeout=0;
}
server {
listen 80;
server_name yor_domain.tld;
root /path_to_app/current/public;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @your_app;
location @your_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://your_app;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 1G;
}
<强> /path_to_your_app/shared/config/puma.rb 强>
environment "production"
bind "unix:///path_to_your_app/shared/tmp/sockets/puma.sock"
pidfile "/path_to_your_app/shared/tmp/pids/puma.pid"
state_path "/path_to_your_app/shared/tmp/sockets/puma.state"
directory "/path_to_your_app/current"
workers 1
threads 1,2
daemonize true
activate_control_app 'unix:///path_to_your_app/shared/tmp/sockets/pumactl.sock'
prune_bundler
stdout_redirect "/path_to_your_app/shared/log/puma.stdout.log", "/path_to_your_app/shared/log/puma.stderr.log"