FAQ

Veelgestelde vragen

Hoe publiceer ik mijn applicatie op de server?

Het uitrollen van een applicatie op het Elixify platform kan gedaan worden door gebruik te maken van edeliver.

Edeliver en distillery installeren

Verwerk onderstaande code in mix.exs en voer mix deps.get uit.

mix.exs
def application, do: [ applications: [ ... # Add edeliver to the END of the list :edeliver ] ] defp deps do [ ... {:edeliver, "~> 1.4.0"}, {:distillery, ">= 0.8.0", warn_missing: false}, # or :exrm ] end
prod.secret.exs

Plaats prod.secret.exs in ~/private/ van de build server en configureer daarin onder andere de database:

private/prod.secret.exs (op de server)
config :example_website, ExampleWebsite.Repo, adapter: Ecto.Adapters.Postgres, username: "example_production", password: "...", database: "example_production", hostname: "localhost"

Zorg er voor dat in config/prod.exs de regel 'import_config "prod.secret.exs"' aangezet wordt.

.deliver/config

Maak een .deliver/config en gebruik onderstaand template. De details zijn afhankelijk van de configuratie van het hostingpakket.

.deliver/config
APP="example_website" AUTO_VERSION=git-revision USING_DISTILLERY=true BUILD_HOST="build.example.com" BUILD_USER="build_user" BUILD_AT="/tmp/example_website/builds/" STAGING_HOSTS="staging.example.com" STAGING_USER="staging_user" TEST_AT="/var/www/vhosts/staging.example.com/" PRODUCTION_HOSTS="example.com" PRODUCTION_USER="example" DELIVER_TO="/var/www/vhosts/example.com/" pre_erlang_get_and_update_deps() { symlink_secrets } pre_erlang_clean_compile() { compile_assets } post_erlang_deployed_update() { symlink_vm_args } post_erlang_update() { symlink_static } post_upgrade_release() { symlink_static } symlink_secrets() { status "Creating symlinks for secrets" __sync_remote " ln -sfn '~/.private/prod.secret.exs' '$BUILD_AT/config/prod.secret.exs' " } compile_assets() { status "Preparing assets with: brunch build and phoenix.digest" __sync_remote " # runs the commands on the build host [ -f ~/.profile ] && source ~/.profile # load profile (optional) # fail if any command fails (recommended) set -e # enter the build directory on the build host (required) cd '$BUILD_AT' mkdir -p priv/static # required by the phoenix.digest task # installing npm dependencies npm install # building brunch node_modules/brunch/bin/brunch build --production # run your custom task APP='$APP' MIX_ENV='$TARGET_MIX_ENV' $MIX_CMD phoenix.digest $SILENCE " } symlink_static() { status "Creating symlinks for static assets" __remote " ln -sfn $DELIVER_TO$APP/lib/$APP$RELEASE-$VERSION/priv/static $DELIVER_TO$APP/static " } symlink_vm_args() { if [ "$TARGET_MIX_ENV" = "staging" ]; then status "Creating symlinks for staging vm.args" __remote " ln -sfn ~/private/staging.vm.args $DELIVER_TO$APP/vm.args " fi }
.gitignore

Voeg .deliver/releases/ toe aan .gitignore

release.init

Voer een mix release.init uit.

Staging

Voeg in rel/config.exs een :staging environment-blok toe. De inhoud van dit blok mag gelijk zijn aan dat van :production. Maak daarnaast ook een config/staging.exs aan, met inhoud overeenkomend aan config/prod.exs.

Uitrollen

Uitrollen is nu mogelijk met een commando zoals onderstaand. Meer informatie is beschikbaar in de documentatie van edeliver.

$ mix edeliver update production --branch=production --mix-env=prod $ mix edeliver restart production $ mix edeliver migrate production

Storing, vragen of opmerkingen?

Bel ons gerust!

Liever door ons gebeld worden? Kan ook! Laat je telefoonnummer achter.

  • 040-7110344