我在一台机器上有一个production
和staging
环境。一个 Rails 应用程序可以全职工作。一个(实际上是相同的)rails 应用程序仅用于测试/实现新功能。
所以我使用了一个mongodb:
mongod --dbpath /path/to/my/production/rails/app/db
我还想运行一个 mongod:
mongod --dbpath /path/to/my/staging/rails/app/db
但我无法想象如何做到这一点,因为如果我按照描述的那样做,我显然会得到:
Mon Oct 14 16:12:59 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Mon Oct 14 16:12:59 [initandlisten] ERROR: addr already in use
那么在一台机器上使用两个不同的 mongodb 实例以便能够分别使用生产和暂存应用程序的最佳实践是什么?
更新:
当然,最好在 rails 应用程序(例如 mongodb.yml)中定义不同的环境并使用相同的 mongod 进程和端口,但如果有可能像这样(完全独立的环境)会很有趣:
port 27017 <--> --dbpath /path/to/my/production/rails/app/db
port 27018 <--> --dbpath /path/to/my/staging/rails/app/db