Ruby 当访问到特定端口的时候,启动对应的服务

linjunhalida · 2014年06月28日 · 最后由 lululau 回复于 2015年04月02日 · 2205 次阅读

在开发环境下,需要启动一堆杂七杂八的服务,比如mysql, postgresql, memcache, redis, nginx, elastic-search, solr, ...

我希望平时可以不用开启,等需要的时候(访问到特定端口),会根据访问状况,自动把服务启动起来。 类似于pow,请问有没有这样的一个工具?

如果没有的话,写起来应该也不会很复杂吧?监听系统端口访问,然后设置一些规则,如果触发了,就启动对应的服务。

好奇怪的需求,开机都启动不就好了么?机器慢了就升级机器,把精力都放在开发上。

inetd/xinetd 提供的机制看起来可以满足你的要求,不过近些年没什么人用它,也就没几个服务支持它了。。。 比如 mysql,就不支持通过 inetd 来 start on demand。

楼主这么做的原因是什么呢? 这些服务本身占用非常少的内存,如果等访问时才启用,会耗费很多启动时间。

no zuo no die. 一个 foreman 搞定。

@linjunhalida 我猜 Fig 一定能满足你的需求。把所有服务都塞到 docker 里面,一切安静了。 https://orchardup.github.io/fig/rails.html

Foreman + Profile.local

听起来楼主的需求只要用 systemd 就好了....不过这是 linux 下的东西........

不过有看到 systemd 的介绍说,the feature of socket activation is inspired by launchd, the apple project. 所以楼主也可以看看 launchd 有没有写法也是支持 socket activation 这样功能..

#5 楼 @xds2000 Docker 版本的 foreman?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号