首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang/Webmachine不是从heroku开始的

Erlang/Webmachine不是从heroku开始的
EN

Stack Overflow用户
提问于 2015-12-08 16:41:26
回答 1查看 119关注 0票数 1

我一直试图在Heroku上安装一个Webmachine应用程序,使用推荐的积木包。我的过程文件是

代码语言:javascript
复制
# Procfile
web: sh ./rel/app_name/bin/app_name console

不幸的是,这没有正确地启动dyno,它失败了

代码语言:javascript
复制
2015-12-08T16:34:55.349362+00:00 heroku[web.1]: Starting process with command `sh ./rel/app_name/bin/app_name console`
2015-12-08T16:34:57.387620+00:00 app[web.1]: Exec: /app/rel/app_name/erts-7.0/bin/erlexec  -boot /app/rel/app_name/releases/1/app_name -mode embedded -config /app/rel/app_name/releases/1/sys.config -args_file /app/rel/app_name/releases/1/vm.args -- console
2015-12-08T16:34:57.387630+00:00 app[web.1]: Root: /app/rel/app_name
2015-12-08T16:35:05.396922+00:00 app[web.1]: 16:35:05.396 [info] Application app_name started on node 'app_name@127.0.0.1'
2015-12-08T16:35:05.388846+00:00 app[web.1]: 16:35:05.387 [info] Application lager started on node 'app_name@127.0.0.1'
2015-12-08T16:35:05.399281+00:00 app[web.1]: Eshell V7.0  (abort with ^G)
2015-12-08T16:35:05.399283+00:00 app[web.1]: (app_name@127.0.0.1)1> *** Terminating erlang ('app_name@127.0.0.1')
2015-12-08T16:35:06.448742+00:00 heroku[web.1]: Process exited with status 0
2015-12-08T16:35:06.441993+00:00 heroku[web.1]: State changed from starting to crashed

但是,当我通过heroku工具带运行相同的命令时,它会从控制台启动。

代码语言:javascript
复制
$ heroku run "./rel/app_name/bin/app_name console"
Running ./rel/app_name/bin/app_name console on tp-api... up, run.4201
Exec: /app/rel/app_name/erts-7.0/bin/erlexec  -boot /app/rel/app_name/releases/1/app_name -mode embedded -config /app/rel/app_name/releases/1/sys.config -args_file /app/rel/app_name/releases/1/vm.args -- console
Root: /app/rel/app_name
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

16:38:43.194 [info] Application lager started on node 'app_name@127.0.0.1'
16:38:43.196 [info] Application app_name started on node 'app_name@127.0.0.1'
Eshell V7.0  (abort with ^G)
(app_name@127.0.0.1)1>

是否有方法启动节点,可能是作为dyno上的守护进程?

注意,我尝试过使用start而不是console,但这并没有取得任何成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-09 15:16:15

因此,经过多次修补,反复尝试,找出了到底出了什么问题。Heroku不喜欢交互的shell,因此通过console启动Erlang应用程序失败了。

我调整了我的Procfile,如下所示:

代码语言:javascript
复制
# Procfile
web: erl -pa $PWD/ebin $PWD/deps/*/ebin -noshell -boot start_sasl -s reloader -s app_name -config ./rel/app_name/releases/1/sys

它使用发行版的app_name配置文件引导应用程序sys.config。这里的关键是在命令中有-noshell选项,这允许heroku按他们的预期运行进程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34161297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档