具有多个 Puma 应用程序的 Capistrano
Capistrano with multiple Puma applications
我想通过 capistrano 将多个 rails 应用程序部署到一个虚拟机。
deploy.rb
中的两个应用程序都有这种设置:
set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
他们有自己的 Nginx 配置文件。
第一个应用程序:
upstream puma {
server unix:///var/www/first-app/shared/tmp/sockets/first-app-puma.sock;
}
server {
listen 80 default_server deferred;
第二个应用程序:
upstream puma_second {
server unix:///var/www/second-app/shared/tmp/sockets/second-app-puma.sock;
}
server {
listen 81;
第一个在 80 端口,第二个在 81 端口。
然而,当我部署第二个应用程序然后重新启动 Nginx,然后我打开 example.com:81
,它显示第一个应用程序的页面没有任何样式。
为什么会这样?我需要将第二个应用程序绑定到其他地方吗?
您是否尝试过将两者都保留在端口 80 上并在应用程序的每个服务器块上添加不同的 server_names?
server {
listen 80 default_server deferred;
server_name railsapp1.com;
.
.
.
}
和
server {
listen 80 default_server deferred;
server_name railsapp2.com;
.
.
}
我可以通过更改两个应用程序的 nginx.conf
文件来解决这个问题。
第一个应用程序:
upstream puma_first_app {
server unix:///var/www/first_app/shared/tmp/sockets/first_app-puma.sock;
}
server {
listen 9999;
我在 location @puma
中添加了这个:
proxy_pass http://puma_first_app;
在第二个应用程序中,我使用端口 80 并将 first_app
字符串更改为 second app
我想通过 capistrano 将多个 rails 应用程序部署到一个虚拟机。
deploy.rb
中的两个应用程序都有这种设置:
set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
他们有自己的 Nginx 配置文件。
第一个应用程序:
upstream puma {
server unix:///var/www/first-app/shared/tmp/sockets/first-app-puma.sock;
}
server {
listen 80 default_server deferred;
第二个应用程序:
upstream puma_second {
server unix:///var/www/second-app/shared/tmp/sockets/second-app-puma.sock;
}
server {
listen 81;
第一个在 80 端口,第二个在 81 端口。
然而,当我部署第二个应用程序然后重新启动 Nginx,然后我打开 example.com:81
,它显示第一个应用程序的页面没有任何样式。
为什么会这样?我需要将第二个应用程序绑定到其他地方吗?
您是否尝试过将两者都保留在端口 80 上并在应用程序的每个服务器块上添加不同的 server_names?
server {
listen 80 default_server deferred;
server_name railsapp1.com;
.
.
.
}
和
server {
listen 80 default_server deferred;
server_name railsapp2.com;
.
.
}
我可以通过更改两个应用程序的 nginx.conf
文件来解决这个问题。
第一个应用程序:
upstream puma_first_app {
server unix:///var/www/first_app/shared/tmp/sockets/first_app-puma.sock;
}
server {
listen 9999;
我在 location @puma
中添加了这个:
proxy_pass http://puma_first_app;
在第二个应用程序中,我使用端口 80 并将 first_app
字符串更改为 second app