gpt4 book ai didi

ruby-on-rails - 如何在同一个 ec2 实例中运行两个 unicorn 环境

转载 作者:行者123 更新时间:2023-12-04 18:47:35 25 4
gpt4 key购买 nike

我有一个在 Nginx 上运行的 AngularJS(前端)和在 Ubuntu EC2 实例中在 Unicorn 上运行的 Rails API(后端)。

Rails API 集成了一些其他平台,例如 Paypal 和其他服务,所以我有一些配置属性,可能会根据环境有不同的值。

另一方面,我试图在同一个 EC2 实例中部署两个不同的环境(在不同的路径中)。

我对 AngularJS Nginx 部分没有任何问题。我有两台服务器指向不同的路径。但问题是当我启动 Unicorn 时,我以一种环境模式(测试或生产)启动它,我需要同时启动和运行这两个环境。可能吗?我应该启动两个 unicorn 服务器吗?

有没有更好的方法?

   **UPDATE**

这是我的 config/unicorn.rb 文件(我不知道它的作用,我从某处复制)。
# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 2)
timeout 15
preload_app true

before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end

defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end

defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end

这是我的 Nginx 站点可用/默认:
server {

root /home/ubuntu/test/apps/domain/app;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name www.test.domain.com;
}

server {

server_name www.domain.com;
root /home/ubuntu/production/apps/domain/app;
}

Nginx 网络服务器工作正常,但我想要的是 www.test.domain.com 重定向到在测试环境中启动的 unicorn ,而 www.domain.com 重定向到 unicorn 生产环境(可能在不同的端口监听)。

我没有任何其他 Nginx 配置。

最佳答案

当 unicorn 启动时,它会创建 3 个“锁”。一是进程id文件,二是socket文件,三是服务器监听的tcp端口。

因此,假设您在生产环境中启动应用程序,如下所示:

unicorn_rails -E production -c config/unicorn.rb -D

接下来你要做的是:
cp config/unicorn.rb config/unicorn_test.rb

然后,编辑新文件并更改这些行(示例值,但您会看到图片),如果它们已定义:
pid APP_PATH + "/tmp/pids/unicorn.pid" # change to another pid
[..]
listen APP_PATH + "/tmp/pids/.unicorn.sock", :backlog => 64 # use antother .sock
listen 8080, :tcp_nopush => true # use another port

然后,您必须复制您的 nginx 服务器配置以指向新应用程序。相同的根,不同的套接字,不同的端口,无论它使用哪个。

最后:
unicorn_rails -E test -c config/unicorn_test.rb -D

关于ruby-on-rails - 如何在同一个 ec2 实例中运行两个 unicorn 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com