Passer au contenu

Qu’est-ce que Heroku#

Heroku est une solution d’hébergement tout-en-un très populaire, vous pouvez en apprendre plus sur heroku.com

Inscription#

Vous aurez besoin d’un compte heroku, si vous n’en avez pas, veuillez vous inscrire ici : https://signup.heroku.com/

Installation de la CLI#

Assurez-vous d’avoir installé l’outil en ligne de commande heroku.

HomeBrew#

brew tap heroku/brew && brew install heroku

Autres options d’installation#

Consultez les autres options d’installation ici : https://devcenter.heroku.com/articles/heroku-cli#download-and-install.

Connexion#

Une fois la CLI installée, connectez-vous avec la commande suivante :

heroku login

Vérifiez que le bon email est connecté avec :

heroku auth:whoami

Créer une application#

Rendez-vous sur dashboard.heroku.com pour accéder à votre compte, et créez une nouvelle application depuis le menu déroulant en haut à droite. Heroku vous posera quelques questions comme la région et le nom de l’application, il vous suffit de suivre les instructions.

Git#

Heroku utilise Git pour déployer votre application, vous devez donc placer votre projet dans un dépôt Git, si ce n’est pas déjà fait.

Initialiser Git#

Si vous devez ajouter Git à votre projet, entrez la commande suivante dans le terminal :

git init

Main#

Vous devriez choisir une branche et vous y tenir pour déployer sur Heroku, comme la branche main ou master. Assurez-vous que tous les changements sont validés (commit) dans cette branche avant de la pousser (push).

Vérifiez votre branche actuelle avec :

git branch

L’astérisque indique la branche actuelle.

* main
  commander
  other-branches

Note

Si vous ne voyez aucune sortie et que vous venez d’exécuter git init. Vous devrez d’abord valider (commit) votre code, puis vous verrez la sortie de la commande git branch.

Si vous n’êtes pas actuellement sur la bonne branche, basculez-y en entrant (pour main) :

git checkout main

Valider les changements#

Si cette commande produit une sortie, alors vous avez des changements non validés (commit).

git status --porcelain

Validez-les (commit) avec la commande suivante

git add .
git commit -m "a description of the changes I made"

Connecter à Heroku#

Connectez votre application à heroku (remplacez par le nom de votre application).

$ heroku git:remote -a your-apps-name-here

Définir le buildpack#

Définissez le buildpack pour indiquer à heroku comment traiter vapor.

heroku buildpacks:set vapor/vapor

Fichier de version Swift#

Le buildpack que nous avons ajouté recherche un fichier .swift-version pour connaître la version de swift à utiliser. (Remplacez 5.8.1 par la version requise par votre projet.)

echo "5.8.1" > .swift-version

Ceci crée .swift-version avec 5.8.1 comme contenu.

Procfile#

Heroku utilise le Procfile pour savoir comment lancer votre application, dans notre cas il doit ressembler à ceci :

web: App serve --env production --hostname 0.0.0.0 --port $PORT

Nous pouvons le créer avec la commande de terminal suivante

echo "web: App serve --env production" \
  "--hostname 0.0.0.0 --port \$PORT" > Procfile

Valider les changements#

Nous venons d’ajouter ces fichiers, mais ils ne sont pas validés (commit). Si nous poussons (push), heroku ne les trouvera pas.

Validez-les (commit) avec la commande suivante.

git add .
git commit -m "adding heroku build files"

Déployer sur Heroku#

Vous êtes prêt à déployer, lancez ceci depuis le terminal. La construction peut prendre du temps, c’est normal.

git push heroku main

Monter en charge (Scale Up)#

Une fois la construction réussie, vous devez ajouter au moins un serveur. Les prix commencent à 5$/mois pour le plan Eco (voir pricing), assurez-vous d’avoir configuré un moyen de paiement sur Heroku. Ensuite, pour un seul worker web :

heroku ps:scale web=1

Déploiement continu#

Chaque fois que vous souhaitez mettre à jour, il suffit d’intégrer les derniers changements dans main et de les pousser (push) vers heroku, qui redéploiera automatiquement.

Postgres#

Ajouter une base de données PostgreSQL#

Rendez-vous sur votre application depuis dashboard.heroku.com et allez dans la section Add-ons.

Là, saisissez postgres et vous verrez une option pour Heroku Postgres. Sélectionnez-la.

Choisissez le plan Essential 0 à 5$/mois (voir pricing), et provisionnez. Heroku s’occupe du reste.

Une fois terminé, vous verrez la base de données apparaître sous l’onglet Resources.

Configurer la base de données#

Nous devons maintenant indiquer à notre application comment accéder à la base de données. Dans le répertoire de notre application, exécutons :

heroku config

Cela produira une sortie ressemblant à ceci

=== today-i-learned-vapor Config Vars
DATABASE_URL: postgres://cybntsgadydqzm:2d9dc7f6d964f4750da1518ad71hag2ba729cd4527d4a18c70e024b11cfa8f4b@ec2-54-221-192-231.compute-1.amazonaws.com:5432/dfr89mvoo550b4

DATABASE_URL représente ici notre base de données postgres. Ne codez JAMAIS en dur l’URL statique fournie ici, heroku la fera tourner (rotate) et cela cassera votre application. C’est aussi une mauvaise pratique. Lisez plutôt la variable d’environnement au moment de l’exécution.

L’addon Heroku Postgres exige que toutes les connexions soient chiffrées. Les certificats utilisés par les serveurs Postgres sont internes à Heroku, une connexion TLS non vérifiée doit donc être mise en place.

L’extrait suivant montre comment faire les deux :

if let databaseURL = Environment.get("DATABASE_URL") {
    var tlsConfig: TLSConfiguration = .makeClientConfiguration()
    tlsConfig.certificateVerification = .none
    let nioSSLContext = try NIOSSLContext(configuration: tlsConfig)

    var postgresConfig = try SQLPostgresConfiguration(url: databaseURL)
    postgresConfig.coreConfiguration.tls = .require(nioSSLContext)

    app.databases.use(.postgres(configuration: postgresConfig), as: .psql)
} else {
    // ...
}

N’oubliez pas de valider (commit) ces changements

git add .
git commit -m "configured heroku database"

Annuler les migrations de votre base de données#

Vous pouvez annuler des migrations ou exécuter d’autres commandes sur heroku avec la commande run.

Pour annuler les migrations de votre base de données :

heroku run App -- migrate --revert --all --yes --env production

Pour migrer :

heroku run App -- migrate --env production
Modifier cette page