Erlang OTP: Distributed & Fault-Tolerant Systems Programming · Leçon

Création de versions Erlang

Utilisez des outils comme rebar3 et relx pour regrouper votre application Erlang, ses dépendances et l'environnement d'exécution Erlang dans une version autonome

Leçon 1 sur 411 étapes

Création de versions Erlang est une leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Erlang OTP: Distributed & Fault-Tolerant Systems Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

What are Erlang Releases?

When you develop an Erlang application, it's a collection of modules and configuration files. To deploy it, you need to package it all up.

An Erlang Release is a self-contained, deployable package of your application, its dependencies, and optionally, a specific version of the Erlang Runtime System (ERTS).

  • It's like a standalone executable for your Erlang system.
  • It simplifies deployment by bundling everything needed to run.

Benefits of a Release

Why go through the effort of creating a release? Releases offer significant advantages for production systems:

  • Self-contained: Includes all necessary Erlang libraries and even the Erlang VM itself.
  • Simplified Deployment: Just copy the release folder to a server and start it.
  • Version Management: Each release has a clear version number, making upgrades and rollbacks easier.
  • Foundation for Live Upgrades: Releases are essential for Erlang's famous 'hot code loading' feature (covered in a later lesson!).

Meet rebar3

Building Erlang applications and releases manually can be complex. Fortunately, we have rebar3!

rebar3 is the standard build tool for Erlang. It handles:

  • Project creation and management
  • Dependency resolution
  • Compilation
  • Testing
  • And, crucially for this lesson, creating releases.

It streamlines the entire development and deployment workflow.

Your Erlang Application Code

Let's start with a very simple Erlang module. In a real application, this would be part of your overall system logic.

For demonstration, we'll create a module with a main/0 function, which can be run directly. This module will be included in our release.

-module(my_release_app).
-export([main/0]).

main() ->
    io:format("Hello from my Erlang release application!~n").

The Application Resource File

Every Erlang application has an application resource file (.app or .app.src). This file defines metadata about your application, such as its version, description, and which modules it depends on.

rebar3 uses the .app.src file to generate the final .app file during the build process.

{application, my_release_app,
 [{description, "My simple release app"},
  {vsn, "0.1.0"},
  {registered, []},
  {applications, [
    kernel,
    stdlib
  ]},
  {mod, {my_release_app, []}},
  {env, []}
 ]}.

Configuring the Release

To tell rebar3 how to build your release, you add a relx section to your rebar.config file. This configuration specifies:

  • The name and version of your release.
  • Which applications to include.
  • If the Erlang Runtime System (ERTS) should be bundled.

For development, we often don't include ERTS to save space.

{apps, [my_release_app]}.

{relx, [{release, {my_release_app, "0.1.0"}, [my_release_app]},
        {dev_mode, true},
        {include_erts, false},
        {extended_start_script, true}]}.

Building Your Release Bundle

With your application code, .app.src, and rebar.config in place, building the release is straightforward. rebar3 will compile your code, fetch dependencies, and package everything into a single directory.

This command does all the heavy lifting:

rebar3 release

Inside the Release Package

After running rebar3 release, you'll find your release in _build/default/rel/my_release_app/. The structure typically includes:

  • bin/: Contains the start script for your application.
  • lib/: All your application's compiled code and dependencies.
  • releases/: Release definitions and version information.
  • erts/: (Optional) The Erlang Runtime System if include_erts was true.

This organized structure makes deployment predictable and reliable.

Running Your Packaged App

Once built, you can start your Erlang application by executing the generated start script. This script handles starting the Erlang VM and loading your application.

Navigate to the release directory and use the bin/<release_name> script.

For our example, you would run (in a shell, not runnable in this environment):

_build/default/rel/my_release_app/bin/my_release_app start

Release Benefits Check

Creating an Erlang release is a crucial step for deployment. Which of the following are primary benefits of packaging an Erlang application as a release?

Recap: Erlang Releases

You've taken a big step towards deploying Erlang applications!

  • Erlang Releases package your app, its dependencies, and optionally ERTS.
  • rebar3 is the essential tool for building and managing releases.
  • The .app.src and rebar.config files define your application and release.
  • Releases simplify deployment, versioning, and enable powerful features like live upgrades.

Next, we'll dive into the fascinating world of hot code loading and how to perform live upgrades on running systems!

Gratuit pour commencer

Apprends Erlang avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
12
Leçons
48

Questions Fréquemment Posées

La leçon « Création de versions Erlang » est-elle gratuite ?

Oui — le texte complet de « Création de versions Erlang » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming, passe à CoddyKit PRO. Le cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Création de versions Erlang » ?

Utilisez des outils comme rebar3 et relx pour regrouper votre application Erlang, ses dépendances et l'environnement d'exécution Erlang dans une version autonome Tu pratiques Erlang OTP: Distributed & Fault-Tolerant Systems Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Erlang OTP: Distributed & Fault-Tolerant Systems Programming ?

Aucune expérience préalable n'est requise. Erlang OTP: Distributed & Fault-Tolerant Systems Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Création de versions Erlang » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming ?

Oui. Chaque leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Création de versions Erlang
  2. Chargement à chaud du code et mises à niveau
  3. Gestion des versions et déploiement
  4. Configuration des versions et scripts de démarrage
← Retour à Erlang OTP: Distributed & Fault-Tolerant Systems Programming