我希望在同一台服务器上运行相同的rails应用程序几次配置差异。每个应用都必须有自己的:
假设我想多次运行相同的代码来为不同的城市提供服务: newyork.myapp.com和boston.myapp.com。我想知道存储和使用不同配置的最佳方式是什么。
答案 0 :(得分:1)
使用环境:
将文件添加到config/environments
,每个网站对应一个您要托管的网站。将其命名为' production_ [city]',用城市名称替换[city]。将production.rb
文件内容复制到每个文件中。
config/database.yml
中找到'制作' yml块,并为您要托管的每个站点复制一次。将每个块的根节点重命名为production_ [city],与上面的文件名匹配。例如:
production_ny:
adapter: mysql2
username: my_user
password: my_pa$$w0rd%&*#
database: production_ny
这会照顾每个应用程序的数据库设置。
假设Rails 4,您的密钥库将位于环境节点下的config / secrets.yml中,根据config / database.yml,所以只需为每个站点添加一个条目:
production_ny:
secret_key_base: xxxxxxxx1111111122222223333333344444444...
所有网站都需要一个终点。为每个域使用不同的域将免费为您提供单独的cookie和会话。或者你可以去子域路线:
http://guides.rubyonrails.org/configuring.html#deploy-to-a-subdirectory-relative-url-root
tldr:
在config / environments / production_ny.rb中:
config.relative_url_root = "/ny"
例如,。然后设置您的Web服务器以处理子目录。您可能需要添加cookie的路径,以便将它们范围限定为虚拟目录。只需使用:
Rails.configuration.relative_url_root
还必须在网络服务器级别设置端口。 (Apache,nginx等)
要查看是否一切正常,请在命令行中尝试:
RAILS_ENV=production_ny bundle exec rails s
这应该启动一个开发风格的Web服务器供您访问,但使用production_ny环境。
您需要正常创建和设置数据库 - 创建,迁移,种子。
最后一步是使用您的Web服务器将每个应用程序的RAILS_ENV环境变量设置为production_[city]
。执行此操作的步骤取决于您的技术选择。