|
|
@@ -5,7 +5,7 @@ of mine in the aspects of build, integration and deployment.
|
|
|
|
|
|
## Goals
|
|
|
|
|
|
-* [] Document build
|
|
|
+* [x] Document build
|
|
|
* [] Implement and document cross-build
|
|
|
* [] Install the project as a systemd service
|
|
|
* [] Handle the current version via a git tag
|
|
|
@@ -13,6 +13,14 @@ of mine in the aspects of build, integration and deployment.
|
|
|
|
|
|
## Preconditions
|
|
|
|
|
|
+### Update Elixir's configuration to the best practices.
|
|
|
+
|
|
|
+For some reason the default configuration of newly-generated Phoenix projects is
|
|
|
+completely outdated, e.g. using `Mix.Config` when the standard is now `Config`.
|
|
|
+
|
|
|
+It is advised above all to update the configuration, and try to match the
|
|
|
+[master branch](https://github.com/phoenixframework/phoenix/tree/master/installer/templates/phx_single/config)
|
|
|
+
|
|
|
### PostgreSQL role
|
|
|
|
|
|
In `dev` as well as in `prod` modes, the role used in `config/#{mode}.exs` must
|
|
|
@@ -38,4 +46,14 @@ To start the server in dev mode :
|
|
|
* Start the server : `mix phx.server` or `iex -S mix phx.server` to run within a shell
|
|
|
|
|
|
The server can now be accessed on [`localhost:4000`](http://localhost:4000).
|
|
|
-
|
|
|
+
|
|
|
+### In production mode
|
|
|
+
|
|
|
+In production mode some configuration is extracted from the environment.
|
|
|
+
|
|
|
+* Generate a secret key using `mix phx.gen.secret`
|
|
|
+* Install dependencies with `mix deps.get --only prod`
|
|
|
+* Compile the application `MIX_ENV=prod mix compile`
|
|
|
+* Compile static assets into `priv/static` : `npm run deploy --prefix ./assets`
|
|
|
+* Compress and digest static assets `mix phx.digest`
|
|
|
+* Start the server : `MIX_ENV=prod DATABASE_URL=db-url SECRET_KEY_BASE=secret_key PORT=port mix phx.server`
|