phoenix API服務發布

2022-02-09 03:33:10 字數 1688 閱讀 8993

elixir 的 phoenix 框架對於開發 web 應用非常方便,不僅有 ror 的便利,還有 erlang 的效能和高併發優勢。 但是應用的發布涉及到 erlang 和 elixir 環境,部署不是那麼方便,特別是很多 package 需要訪問國外的伺服器。

因此,如果能像 golang 那樣,把整個應用打包成乙個可執行的二進位制,部署時會方便很多。 打包後不僅包含應用引用的 packages,也包含 erlang 的執行環境。

使用 distillery 就可以完成需求。這裡打包的是 api 服務,也就是不包含前端的部分。

distillery 提供豐富了 api,除了打包,還有公升級/降級,**熱替換等功能,這裡我們只介紹打包的功能。

$ mix phx.new hello --no-brunch --no-ecto
只是實驗 phoenix 工程的打包功能,所以這裡不安裝前端的依賴,也不安裝資料庫相關依賴。

建立乙個簡單的 api lib/hello_web/router.ex

scope "/api", helloweb do

pipe_through(:api)

get("/", pagecontroller, :api)

end

lib/hello_web/controllers/page_controller.ex

def api(conn, _params) do

json(conn, %)

end

mix.exs 中的 deps 中新增:

defp deps do

[ ...

]end

然後在 hello 工程目錄下執行:

mix deps.get
執行成功的話,在命令列介面上可以看到安裝了 distillery 依賴。

首先,生成配置檔案

mix release.init
這個命令生成的 rel/config.exs 沒有什麼要修改的。

修改 config/prod.exs

url: [host: "localhost", port: 4001]這裡寫死了 port,也可以改成從環境變數中讀取。

mix_env=prod mix release
編譯成功後,在 _build/prod/rel/hello/releases/資料夾下生成乙個 hello.tar.gz 包,這個包就可以直接部署在其他機器上。 如果預設配置,version 就是 0.0.1

將生成的 hello.tar.gz 放到其他機器也可以直接執行,不用安裝 erlang 和 elixir 環境。

cd /home

mkdir hello

tar zxvf hello.tar.gz -c hello

cd hello

./bin/hello foreground

distillery 的功能遠不止此,更多的功能可以參考:

使用Windows服務發布WCF服務

原創 灰灰蟲的家 第一步 建立windows服務程式windowsservicehost 圖1 圖2 第二步 向consolebookservicehost程式中新增兩個引用 乙個是wcf服務庫services專案的引用,另乙個是system.servicemodel引用。第三步 修改service...

ArcGIS 發布Feature服務

win10 arcgis10.4 1 開啟arcmap,載入sde中匯入的檔案,也可以載入shp資料來源指向sde中檔案 2 儲存成mxd,然後點share as service 3 publish a service選擇發布的服務,取名 4 勾選上feature access,然後點analyze...

將Redis服務發布到Windows服務中

環境變數配置好之後,開啟命令列輸入命令 redis server.exe service install redis.windows.conf loglevel verbose 如果遇到如下錯誤 invalid argument during startup failed to open the c...