繁体   English   中英

如何在生产中运行连接到同一个数据库和混合环境的 iex 会话和凤凰服务器?

[英]How can you run an iex session and a phoenix server attached to the same database and mix environment in production?

当您运行像MIX_ENV=prod mix phx.server这样的服务器,然后在连接到同一台服务器的另一个屏幕上尝试运行像iex -S mix这样的混合环境附加 iex 会话时,您会收到错误并关闭,并出现类似Failed to start Ranch listener VukWeb.Endpoint.HTTP in :ranch_tcp:listen([port: 4000]) for reason :eaddrinuse (address already in use)的抱怨Failed to start Ranch listener VukWeb.Endpoint.HTTP in :ranch_tcp:listen([port: 4000]) for reason :eaddrinuse (address already in use)

当服务器在连接到同一数据库的单独屏幕中运行时,有没有办法运行 iex 会话? 我很困惑为什么iex -S mix甚至试图连接到外部端口,因为该 iex 会话应该没有服务器运行,也不需要外部端口来加载混合环境?

我知道你可以使用像MIX_ENV=prod iex -S mix phx.server这样的 iex 会话来运行服务器,但我的理解是这对性能来说既不理想,也不会让你的 iex 会话被用户日志流中断随着请求的处理(这就是我们现在正在做的事情)。 我还尝试切换端口,如MIX_ENV=prod PORT=4040 iex -S mix但该标志似乎被忽略了,因为投诉回来了,引用了端口 4000。我想知道是否有一些硬编码导致环境变量被忽略,如果只是撤消此硬编码并将其切换到不同的端口是正确的方法,即使非服务器混合环境未使用该端口也是如此。

如果有人有关于如何同时获得 iex 会话和服务运行的提示——或者对工作流程有不同的建议,使这种愿望变得不必要——希望听到!

谢谢

Mix有完善的非常详细的文档。

Mix.Tasks.Run是默认任务。 iex -S -mix本质上等同于iex -S mix run

后者启动您的应用程序,[疯狂的合理猜测] 反过来将cowboy作为依赖项启动。 因此错误。

 iex -S mix run --no-start

就是你要找的。 此任务接受多个参数,其他参数列在我链接的帮助页面上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM