因为 Phoenix 只是 Elixir 应用程序的一种,所以他的配置和结构和其他的 Mix 工程基本一致 (绝大多数的 Elixir 应用都 使用 Mix 作为构建工具)。
Phoenix 应用的配置存储在 .ex
和 .exs
文件中,尽管这两种文件都是 Elixir 脚本,但他们在经过编译后还是差异。
.exs
文件是在每次运行时(比如重启)编译到内存中,这使得他非常适合那些变动非常频繁的配置(比如开发是时的独立
任务等)。
而 .ex
文件会被编译成 .beam
后缀的文件运行在 Erlang 虚拟机上 (Erlang Virtual Machine BEAM
), 这使得他比较
适合存储变动不太频繁的配置 (比如 OTP 的 supervisor/worker 配置)。
mix.exs
配置文件在项目的根目录, 他包含一些非常重要的配置,包括编译路径,项目依赖以及别名等等。
Phoenix 应用惯例是在不同的环境下使用不同的配置文件,比如 开发环境
或 生产环境
。这使得开发者在部署应用时体
验一流,默认情况下,根目录的 /config
默认包含下列配置文件:
config.exs
是我们的主配置文件(master config file), 在所有环境下起效。包含总体的配置信息比如日志和 endpoint
细节,比如我们应用的 url 和根目录。另外文件的最下面,我们同样根据当前的环境引入对应的配置文件。我们可以在启动
或部署应用的时候通过设置 Mix.env
环境变量轻松的切换不同环境的配置文件。比如,我们将变量设置成 #prod.exs
来
启动生产服务器。
...
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env}.exs"
...
dev.exs
, 开发环境配置文件,包含调试设置以及数据库连接细节等。
prod.exs
, 生产环境配置文件,这里的配置和开发或者测试都不同并且更加严格,比如,在生产环境下我们需要使用强哈希
的密码,这在开发和测试时可能会影响性能,但对于生产环境是不可避免的。
prod.secret.exs
, 用于存储敏感的配置信息,比如密码 和 API 密钥等,因此需要在版本控制时将其排除在外,注意这里
的配置可以在其他文件中引用。
test.exs
, 测试环境的配置文件。
这些文件中的配置大同小异。
另外除了默认的 开发环境 (dev.exs
), 测试环境 (test.exs
) 和生产环境 (prod.exs
), Phoenix 同样支持自定义的环
境配置。
主从应用允许多个子应用在一起运行,这样,通过将不同功能分给子应用可以减轻应用的复杂性。详细谈论主从应用的细节超 过了本指南的范围,现在只需要知道主从应用的配置比正常应用有一些不同(甚至在某些方面更简单),因为一些配置的细节 由自应用保管。
- 应用的配置由
.ex
和.exs
文件保管。 .exs
文件每次会编译到内存中适用于保存改动频繁的配置。- Mix 应用默认包括开发环境,测试环境以及生产环境,还可以手动添加自定义环境。
- 我们可以在
prod.secret.exs
存储敏感信息,排除在版本控制之外。