簡體   English   中英

如何正確地將Elixir / Phoenix程序部署到Windows?

[英]How to correctly deploy Elixir/Phoenix program to Windows?

我正在尋找有關如何在Windows上部署和運行elixir / phoenix程序的建議。

我使用過Distillery,但是它與mix release一起使用,但是命令提示符下沒有可用的命令。 每個建議的命令,例如

_build/dev.../<program> console

產生錯誤, not a recognized internal or external command

我也使用過exrm ,但是,即使在修改.bat文件以刪除路徑中不需要的//之后,它也會在erlang轉儲文件中產生kernel PID terminated錯誤。

版:

  • 葯劑:1.4.2
  • Erlang:19.2 [erts-8.2]
  • 外部: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'

謝謝您到目前為止的幫助,很抱歉,這是我第一次做這部分。

注意:帶有exrm程序的Windows 10與mix phoenix.server正常運行

是否有人一步一步地使Elixir程序或服務在Windows上啟動?


編輯: 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. 嘗試使用最新版本的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-> External Crashdump。 這也可以幫助您找出問題所在。
  5. 如果您可以弄清批處理文件正在構造的確切命令行,請嘗試直接運行命令行,看看會發生什么。 它的行為不太可能有所不同,但是,如果有其他消息被隱藏而不是被回顯,則可以通過這種方式看到它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM