大家好, 由于工作原因,经常需要本地同时运行多个 Rails App 开发环境,并且希望这些环境都运行在默认的端口上,能不能在本地开发环境上实现类似于 Apache 或 Nginx 根据 domain name 判断要访问的 Rails App 的功能?谢谢!
我是用的 railscasts 给的方案:http://railscasts.com/episodes/122-passenger-in-development 用的是 passenger + apache 不过他是在 mac 做开发的,我用 ubuntu,所以过程是这样的 http://happycasts.net/episodes/18
现在发现这个方案很好啊,即使是用 nginx + unicorn + capistrano 的项目,拿到本地开发环境,也可以不改配置直接跑,虽然我本地跑的是 passenger。而当初我试着在开发环境下用服务器上的 nginx + unicorn 反而要改配置的地方很多。
#16 楼 @happypeter 不过我有个问题 它使用该防火墙 routes 的办法实现的么?因为我看到它的规则似乎比/etc/hosts 还要优先。
1 楼 @miclle @iBachue 挖了个坟,不好意思,我使用源码安装了最新的 nginx,只是对如何使用 nginx 让本地运行多个 rails app 感到有点疑惑。我的意思是每次运行 rails s 的时候它默认使用 3000 这个端口,如果我们不改端口号的话(我不知道怎么改 rails 启动的端口号=。=|||),是需要为它们各自创建一个 virtual host 对吗,这个 host 就是配置文件中的 server_name 对么?
我在 Mac 中安装的 nginx,它的配置文件是/usr/local/conf/nginx.conf 还有一个/usr/local/conf/nginx.conf.default,这 2 个文件的内容一样,而且都无法编辑,是 readonly 的,我该怎么去配置 nginx 的多个 host 呢?
看了@iBachue的 blog,地址:http://bachue.is-programmer.com/posts/35984.html 里面谈到的那个/etc/nginx/sites-available 没找到这个目录。我看到他是配置了多个端口,应该是想把不同的端口号绑定到不同的域名上面去,和我这里的需求应该是不一样的。但是你的题目中说的本地同时运行多个 rails app 同时监听某个端口 (80 或 3000) 确实是我想要的,不知道 Blog 中那个部分是解决标题中的问题的。
求教,谢谢!
配置文件如下:
挖了个坟,不好意思,我使用源码安装了最新的 nginx,只是对如何使用 nginx 让本地运行多个 rails app 感到有点疑惑。我的意思是每次运行 rails s 的时候它默认使用 3000 这个端口,如果我们不改端口号的话(我不知道怎么改 rails 启动的端口号=。=|||),是需要为它们各自创建一个 virtual host 对吗,这个 host 就是配置文件中的 server_name 对么?
滴汗。。 rails s -p xxxx
要启动多个 Rails Server,必须启动多个服务器并绑定不同的端口,这点是毫无疑问的,不同应用无法监听同一个端口。
我在 Mac 中安装的 nginx,它的配置文件是/usr/local/conf/nginx.conf 还有一个/usr/local/conf/nginx.conf.default,这 2 个文件的内容一样,而且都无法编辑,是 readonly 的,我该怎么去配置 nginx 的多个 host 呢?
你最好先补习下 Linux 操作,连权限问题都无法解决后面你没法混了。。
里面谈到的那个/etc/nginx/sites-available 没找到这个目录。
这个路径是针对 Ubuntu 的,Mac 下可能有它自己的路径吧,我不知道。
还有,你也要好好学习 Nginx 的使用,否则就算你抄了我配置文件里的内容其实也没什么用。我这个东西之所以后来没用上是因为涉及到的坑太多了,你如果不花点心思去玩的话肯定玩不起来。如果不想花什么多心思的话你还是趁早放弃得了,像我就懒得给自己挖更多的坑了。。