gpt4 book ai didi

ruby-on-rails - 将多个 Rails 应用程序部署到 DigitalOcean

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

我正在使用 Digital Ocean Droplet 进行 Rails 应用程序。我已经成功部署了第一个应用程序,但现在在尝试部署第二个应用程序时遇到了问题。我使用 unicorn 作为应用程序服务器,使用 nginx 作为 Web 服务器。操作系统是 Ubuntu 14.04

我在 stackexchange 网站上阅读了很多主题,也在博客等上阅读了很多主题,但没有一个适合我的立场。我认为问题在于应用程序和系统文件夹/文件/配置结构。我非常谨慎地更改系统配置文件上的任何内容。

在网络上的大多数例子中,每个人都在谈论 unicorn.rb 里面rails_root/config/但是我没有。相反,我在 /etc 中有相同内容的 unicorn.conf .

还有一个监听第一个应用程序的套接字文件,我尝试了两个为我的第二个应用程序创建第二个应用程序 - 但它失败了。

我知道,我必须为第二个应用程序创建另一个 unicorn 配置,并且还必须做一些应该通过创建第二个套接字而导致的事情。

但是缺乏对系统管理的知识和理解使我陷入困境。

任何人都可以指导我解决这个问题吗?

如果需要,我可以提供更多文件。

第一个应用程序的 nginx 配置文件(路径 /etc/sites-available/first_app)。

upstream app_server {
server unix:/var/run/unicorn.sock fail_timeout=0;
}

server {
listen 80;
root /home/rails/myfirstapp/public;
server_name www.myfirstapp.com;
index index.htm index.html index.php index.asp index.aspx index.cgi index.pl index.jsp;

location / {
try_files $uri/index.html $uri.html $uri @app;
}


location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
try_files $uri @app;
}

location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}

server {
listen 80;
server_name www.myfirstapp.com;
return 301 $scheme://myfirstapp.com$request_uri;
}

第二个应用程序( /etc/sites-available/second_app)
upstream app_server_2 {
server unix:/var/run/unicorn.app_two.sock fail_timeout=0;
}

server {
listen 80;
root /home/rails/secondapp/public;
server_name secondapp.com;
index index.htm index.html index.php index.asp index.aspx index.cgi index.pl index.jsp;

location / {
try_files $uri/index.html $uri.html $uri @app;
}


location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
try_files $uri @app;
}

location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server_2;
}
}

server {
listen 80;
server_name secondapp.com www.secondapp.com;
return 301 $scheme://secondapp.com$request_uri;
}

( /etc/unicorn.conf )
listen "unix:/var/run/unicorn.sock"
worker_processes 4
user "rails"
working_directory "/home/rails/myfirstapp"
pid "/var/run/unicorn.pid"
stderr_path "/var/log/unicorn/unicorn.log"
stdout_path "/var/log/unicorn/unicorn.log"

最佳答案

这可能没有得到解答,因为您应该只使用 2 个独立的 Droplet,而不是试图使其工作(对于那些不熟悉服务器和部署内容的人来说,这将是一场噩梦)。 Rails 有很多方法可以在互联网上互连 2 个应用程序。

如果您需要共享数据库,您甚至可以设置第三个 Droplet(虽然不需要)并从那里托管集中式数据库,并将两个应用程序连接到它。这也为您提供了更多的可扩展性。

当然,除非我误解了你想要做什么。

如果您使用的是 2 个 droplets 并且语法是我们善变的情妇,请为我们提供更多细节信息。

关于ruby-on-rails - 将多个 Rails 应用程序部署到 DigitalOcean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36385153/

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