備註:
首先需要安裝 elixir 環境
1. 基本專案說明
參考專案:
https://github.com/rongfengliang/phoenix-rest-demo
2. 專案說明
備註: 主要是外掛的配置
mix.exs
defp deps do
[
{:phoenix, "~> 1.3.2"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:mariaex, "~> 0.8.4"},
{:phoenix_html, "~> 2.10"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:distillery, "~> 1.5", runtime: false} # 需要新增的構建包
]
end
3. 使用
a. 初始化
首次使用需要進行環境的初始化
mix release.init
修改config/prod.exs
config :hello, Hello.Endpoint,
# http: [:inet6, port: {:system, "PORT"}],
http: [port: 4000],
cache_static_manifest: "priv/static/cache_manifest.json",
server: true # 比較重要的引數,啟動的時候需要
b. 構建打包
mix release or MIX_ENV=prod mix release (生產環境建議)
備註: 可以指定環境 dev、 prod (預設為dev),實際中我們需要新增 MIX_ENV=prod mix release
c. 使用生成的軟體包
Interactive: _build/prod/rel/hello/bin/hello console
Foreground: _build/prod/rel/hello/bin/hello foreground
Daemon: _build/prod/rel/hello/bin/hello start
4. 生成專案結構
生成的專案在 _build/prod/rel/hello ,實際使用docker 或者類似的工具進行執行
備註:預設prod 版本,執行時環境也會為我們打包,執行是比較簡單的,可以參考3.c
.
├── bin # 應用啟動目錄
├── erts-9.3 # 執行是環境
│ ├── bin
│ ├── include
│ │ └── internal
│ │ ├── gcc
│ │ ├── i386
│ │ ├── libatomic_ops
│ │ ├── ppc32
│ │ ├── pthread
│ │ ├── sparc32
│ │ ├── sparc64
│ │ ├── tile
│ │ ├── win
│ │ └── x86_64
│ ├── lib
│ │ └── internal
│ └── src
├── lib # 依賴的包
│ ├── asn1-5.0.5
│ │ ├── ebin
│ │ └── priv
│ │ └── lib
│ ├── compiler-7.1.5
│ │ └── ebin
│ ├── connection-1.0.4
│ │ └── ebin
│ ├── cowboy-1.1.2
│ │ └── ebin
│ ├── cowlib-1.0.2
│ │ ├── ebin
│ │ └── include
│ ├── crypto-4.2.1
│ │ ├── ebin
│ │ └── priv
│ │ ├── lib
│ │ └── obj
│ ├── db_connection-1.1.3
│ │ └── ebin
│ ├── decimal-1.5.0
│ │ └── ebin
│ ├── ecto-2.2.10
│ │ └── ebin
│ ├── eex-1.6.4
│ │ └── ebin
│ ├── elixir-1.6.4
│ │ └── ebin
│ ├── gettext-0.15.0
│ │ └── ebin
│ ├── hello-0.0.1
│ │ ├── consolidated
│ │ ├── ebin
│ │ └── priv
│ │ ├── gettext
│ │ │ └── en
│ │ │ └── LC_MESSAGES
│ │ ├── repo
│ │ │ └── migrations
│ │ └── static
│ │ ├── css
│ │ ├── images
│ │ └── js
│ ├── iex-1.6.4
│ │ └── ebin
│ ├── kernel-5.4.3
│ │ ├── ebin
│ │ └── include
│ ├── logger-1.6.4
│ │ └── ebin
│ ├── mariaex-0.8.4
│ │ └── ebin
│ ├── mime-1.2.0
│ │ └── ebin
│ ├── phoenix-1.3.2
│ │ ├── ebin
│ │ └── priv
│ │ ├── static
│ │ └── templates
│ │ ├── phoenix.gen.channel
│ │ ├── phoenix.gen.html
│ │ ├── phoenix.gen.json
│ │ ├── phoenix.gen.model
│ │ ├── phx.gen.channel
│ │ ├── phx.gen.context
│ │ ├── phx.gen.embedded
│ │ ├── phx.gen.html
│ │ ├── phx.gen.json
│ │ ├── phx.gen.presence
│ │ └── phx.gen.schema
│ ├── phoenix_ecto-3.3.0
│ │ └── ebin
│ ├── phoenix_html-2.11.2
│ │ ├── ebin
│ │ └── priv
│ │ └── static
│ ├── phoenix_pubsub-1.0.2
│ │ └── ebin
│ ├── plug-1.5.0
│ │ └── ebin
│ ├── poison-3.1.0
│ │ └── ebin
│ ├── poolboy-1.5.1
│ │ └── ebin
│ ├── postgrex-0.13.5
│ │ └── ebin
│ ├── public_key-1.5.2
│ │ ├── ebin
│ │ └── include
│ ├── ranch-1.3.2
│ │ └── ebin
│ ├── runtime_tools-1.12.5
│ │ ├── ebin
│ │ ├── include
│ │ └── priv
│ │ └── lib
│ ├── sasl-3.1.1
│ │ └── ebin
│ ├── ssl-8.2.5
│ │ └── ebin
│ └── stdlib-3.4.5
│ ├── ebin
│ └── include
└── releases # release 版本
└── 0.0.1
├── commands
├── hooks
│ ├── post_configure.d
│ ├── post_start.d
│ ├── post_stop.d
│ ├── post_upgrade.d
│ ├── pre_configure.d
│ ├── pre_start.d
│ ├── pre_stop.d
│ └── pre_upgrade.d
└── libexec
└── commands
同時在 releases/0.0.1 會有一個tar.gz 的包,這個是直接可以拷貝執行的軟體包
5. 總結
總的來說,還是比較簡單的,實際使用中我們可以整合docker,很方便
6 . 執行截圖
7 . 參考資料
https://github.com/bitwalker/distillery
https://hexdocs.pm/phoenix/deployment.html
https://github.com/rongfengliang/phoenix-rest-demo