如何正确地将Elixir / Phoenix程序部署到Windows?

时间:2017-02-21 00:59:05

标签: windows elixir exrm

我正在寻找有关如何在Windows上部署和运行elixir / phoenix程序的建议。

我已经使用过Distillery,但它使用了mix release,但是没有可用于命令提示符的命令。每个建议的命令,如

_build/dev.../<program> console

产生错误not a recognized internal or external command

我也使用了exrm,但是,即使修改了.bat文件以删除路径中不需要的//,它也会产生kernel PID terminated erlang转储文件中的错误。

VERSION:

  • Elixir:1.4.2
  • Erlang:19.2 [erts-8.2]
  • Exrm:1.0.3

.bat的编辑是:

<app>/rel/<app>/releases/version/app.bat and 
<app>/rel/<app>/bin/app.bat 

这是因为它试图执行:

<app>/rel/<app>/releases//app.bat 

而不是上述。 (修复程序在这里找到)

这个工作,程序执行但是抛出错误:

  

内核PID终止(应用程序控制器)无法启动子项#elixir.helloworld.endpoint&#39;

感谢您的帮助,感谢道歉,因为这是我第一次做这一部分。

注意:带有exrm程序的Windows 10正常运行mix phoenix.server

有没有人一步一步地在Windows上启动elixir程序或服务?

修改:mix release期间收到警告:

variable deps does not exist and is being expanded to deps()

在尝试开始时:

failed to open file <app>/rel/<app>releases/version/conform

已编辑<app>/rel/<app>/bin/app.bat

""添加到%start_erl%

@set start_erl=%release_root_dir%\releases\start_erl.data
@for /f "delims=" %%i in ('type "%start_erl%"') do 
@(set start_erl_data=%%i)

已编辑<app>/rel/<app>/releases/version/app.bat

""添加到%start_erl%

:: Discover the release root directory from the directory of this script
@set script_dir=%~dp0
@for %%A in ("%script_dir%\..\..") do @(set release_root_dir=%%~fA)
@set start_erl=%release_root_dir%\releases\start_erl.data
@for /f "delims=" %%i in ('type "%start_erl%"') do 
@(set start_erl_data=%%i)

""添加到%werl%

:: Start a console
:console
@call :generate_config
@start "%rel_name% console" "%werl%" -config "%sys_config%" ^
-boot "%boot_script%" -boot_var ERTS_LIB_DIR "%erts_dir%"/lib ^
-env ERL_LIBS "%release_root_dir%"/lib ^
-pa "%release_root_dir%"/lib "%release_root_dir%"/lib/consolidated ^
-args_file "%vm_args%" ^
-user Elixir.IEx.CLI -extra --no-halt +iex

1 个答案:

答案 0 :(得分:1)

还有一些建议:

  1. 试用最新版本的EXRM(它的1.08,你得到了1.03)。顺便说一句,请仔细检查您的EXRM版本,因为如果它实际上不是1.08并且您误读了它,我会感到有点惊讶。
  2. 创建一个小/简单的应用程序,并使用未修改的尝试控制台 批处理文件。
  3. 卸载Erlang并将其安装到没有的路径中 空格(例如c:\ usr \ bin \ erlang)。是的,我知道这不是标准 Windows但带有空格的目录名似乎总是会导致问题。
  4. 查找erl_crash.dump文件。如果找到一个,请通过启动iex shell并在观察者中键入:observer.start()来使用观察者,从菜单中选择File-&gt; Examine Crashdump。这可以帮助您找出问题所在。
  5. 如果您可以找出批处理文件构建的确切命令行,请尝试直接运行命令行,看看会发生什么。它不太可能有任何不同的行为,但如果有其他消息被隐藏而不是回应,你可以这样看待它们。