Intégration platform.sh

Cet article de la base de connaissances explique comment configurer et installer redirection.io sur les environnements d'hébergement platform.sh ou Symfony Cloud, afin de permettre à votre équipe SEO ou marketing de vérifier le trafic HTTP et de corriger les problèmes de SEO de manière simple et flexible.

Qu'est-ce que platform.sh ? Qu'est-ce que Symfony Cloud ?

platform.sh est un PaaS : il fournit un environnement d'hébergement entièrement géré, conçu pour faciliter la mise en place d'une plateforme d'hébergement évolutive et maintenue. L'objectif de ces fournisseurs d'hébergement est de fournir un moyen efficace de construire une plateforme Web riche en fonctionnalités, sans avoir besoin d'une conception d'infrastructure complexe ou d'opérations d'exploitation ou d'administration système répétitives.

En bref, Symfony Cloud est une offre commerciale adaptée au framework Symfony, et construite sur la plateforme technique de platform.sh.

Quelques considérations légales : bien que nous pensions que platform.sh et Symfony Cloud font un excellent travail, ce guide n'implique pas que nous approuvons ou conseillons leurs services. Ils possèdent leurs marques déposées, nous ne sommes pas affiliés, etc. etc.

Dans le reste de ce guide, nous fournirons principalement des instructions pour platform.sh. Si vous déployez votre projet sur Symfony Cloud, les principes sont les mêmes, seuls quelques termes changent :

  • le dossier .platform est nommé .symfony
  • le fichier .platform.app.yaml est nommé .symfony.cloud.yaml

Disposition de l'installation

platform.sh propose de nombreux services prêts à l'emploi (Elasticsearch, Memcached, Varnish, etc.) qui peuvent être activés dans un projet hébergé avec seulement quelques lignes de YAML. Malheureusement, platform.sh n'offre pas d'intégration native de redirection.io (ce qui serait utile, n'est-ce pas ?), mais il est possible de le faire fonctionner de manière performante avec peu de configuration.

Un schéma vaut mille mots, voici donc un schéma d'application platform.sh standard :

Un projet platform.sh simple exécutant une application Web

Et voici le schéma qui sera utilisé avec l'agent redirection.io installé :

Un projet platform.sh utilisant l'agent redirection.io

Dans cette configuration, les requêtes HTTP(s) entrantes sont routées vers l'agent redirection.io en mode proxy inverse, puis transmises au backend applicatif. Le proxy inverse HTTP(s) redirectionio-agent est très performant et n'a pas d'impact significatif ni perceptible sur les performances globales, ce qui en fait une solution idéale pour corriger les problèmes de SEO à la volée, en périphérie de votre infrastructure.

Si vous êtes pressé et souhaitez tester notre solution immédiatement, veuillez cliquer sur ce bouton pour utiliser un modèle de projet prédéfini :

Deploy redirection.io on Platform.sh

Cela créera un projet platform.sh de base avec redirection.io installé :

Un projet platform.sh basé sur le modèle redirection.io

Configurer votre application

Tout d'abord, configurez votre application avec platform.sh comme vous le feriez sans utiliser redirection.io. Ainsi, pour une application nommée app, voici l'architecture traditionnelle :

├─ .platform
   ├─ routes.yaml        # définit les routes du déploiement platform.sh
   └─ services.yaml      # définit les services requis par l'application
├─ app/                  # contient votre code d'application
   └─ index.html
└─ .platform.app.yaml    # la configuration de l'application platform.sh "app"

Le fichier .platform/routes.yaml définit comment router le trafic au sein de l'application platform.sh. Habituellement, vous voudrez envoyer tout le trafic à votre application :

"https://{all}/":
    type: upstream
    upstream: "example-app:http"

"https://www.{all}/":
    type: redirect
    to: "https://{all}/"

Le .platform/services.yaml peut être laissé vide, si votre application n'a pas de dépendance externe. Sinon, vous pouvez ajouter l'un des services pris en charge. Dans .platform.app.yaml, configurez l'application platform.sh (nom, taille du disque, type d'application, etc.). Par exemple :

# .platform.app.yaml
name: example-app
type: golang:1.15
build:
    flavor: none
disk: 128
web:
    locations:
        "/":
            root: "app"
            passthru: "/index.html"

Configurer l'agent redirection.io

Comme l'agent redirection.io est un simple binaire sans dépendance externe (aucune base de données, etc. n'est requise), il vous suffit d'installer le binaire de l'agent en tant qu'application platform.sh, comme expliqué dans le guide de documentation Applications multiples.

Tout d'abord, créez une deuxième application platform.sh :

└─ redirectionio
   ├─ .platform.app.yaml  # la configuration de l'application platform.sh "redirectionio"
   └─ agent.yaml          # la configuration de l'agent redirection.io

Dans redirectionio/agent.yaml, définissez les directives de configuration de l'agent redirection.io comme expliqué dans notre documentation :

# /redirectionio/agent.yaml
instance_name: "${PLATFORM_ENVIRONMENT}"

# Répertoire où les règles seront persistées
datadir: "${PLATFORM_APP_DIR}/rules"

logging: true

# Exécuter l'agent en tant que proxy inverse
proxies:
    -
       listen: "0.0.0.0:${PORT}" # Point d'écoute
       forward: "http://app.internal" # Point d'accès distant
       project_key: "${REDIRECTIONIO_KEY}" # Clé de projet à utiliser
       preserve_host: true # Préserver l'en-tête d'hôte, par défaut false
       request_body_size_limit: 20MiB # accepter les requêtes avec une taille de corps max. de 20MB

# Définit la configuration des journaux. Chaque section est facultative et indépendante l'une de l'autre.
# log:
#   file:
#       level: info
#       path: "${PLATFORM_APP_DIR}/log/agent.log"

Bien sûr, vous pouvez adapter l' instance_name (ici, il est généré à partir de la variable d'environnement PLATFORM_ENVIRONMENT.

Toutes les directives de configuration des proxys de l'agent peuvent être utilisées dans la section proxies:. En particulier, vous pouvez vouloir définir la directive request_body_size_limit afin de configurer la taille maximale de la requête.

Dans redirectionio/.platform.app.yaml, définissez la configuration de l'application platform.sh :

# /redirectionio/.platform.app.yaml
name: "redirectionio-agent"

type: golang:1.15

build:
    flavor: none

disk: 128

relationships:
    app: "example-app:http"

hooks:
    build: |
        set -ex
        curl -s -J -L "https://packages.redirection.io/dist/stable/2/any/redirectionio-agent-latest_any_amd64.tar.gz" | tar -C /app/ -xzpf -

web:
    upstream:
        socket_family: tcp
        protocol: http
    commands:
        start: |
            set -ex
            /app/redirection-agent/redirectionio-agent -config-file ./agent.yaml
    locations:
        /:
            allow: false
            passthru: true

mounts:
    # les règles seront sauvegardées localement dans ce dossier
    'rules':
        source: local
        source_path: rules
    # dossier de journaux redirection.io
    'log':
        source: local
        source_path: log

Il n'y a pas grand-chose à expliquer sur cette application :

  • la directive disk définit la taille du disque attaché. Selon la taille de votre ensemble de règles, et votre configuration de l'agent redirection.io concernant la persistance des données, vous pourriez vouloir augmenter cette valeur ;
  • le type de l'image utilisée est golang, mais vous pouvez utiliser n'importe quel type disponible. Il se trouve que l'image golang est la plus petite ;
  • le nœud hooks.build télécharge la dernière version de l'agent redirection.io au moment de la compilation ;
  • le nœud relationships.app permet de "lier" les deux applications platform.sh. Changer ce nom nécessite également de modifier le nœud proxies[0].forward dans le fichier agent.yaml ;
  • le nœud web.command.start définit comment démarrer le binaire redirectionio-agent avec la bonne configuration ;
  • la section mounts définit les chemins qui doivent être rendus inscriptibles pour l'agent redirection.io

Le hook ci-dessus télécharge et installe la dernière version disponible du logiciel de l'agent redirection.io. Si vous souhaitez exécuter une version fixe, vous pouvez bien sûr remplacer l'URL de téléchargement - utilisez simplement l'un des paquets disponibles dans notre dépôt.

Une fois que vous avez trouvé la clé de projet redirection.io (dans l'écran "instances" du manager, cliquez sur le bouton "Configuration sur votre infrastructure"), ajoutez cette clé comme variable de projet platform.sh, ce qui aidera à garder cette clé secrète (et partagée au sein de votre équipe) :

$ platform variable:create --name env:REDIRECTIONIO_KEY --sensitive true --value "set your key here"

Dernière étape, modifiez le fichier .platform/routes.yaml pour indiquer à platform.sh de router le trafic entrant vers la nouvelle application redirectionio-agent au lieu de l'application app :

# .platform/routes.yaml
"https://{all}/":
    type: upstream
    upstream: "redirectionio-agent:http"

"https://www.{all}/":
    type: redirect
    to: "https://{all}/"

Avantages

Une fois les modifications effectuées, commitez et poussez vers le remote platform. Cela déclenchera un nouveau déploiement de votre projet :

$ git commit -m "let's use redirection.io"
$ git push

(des choses se passent)

Activité en cours : John Doe a poussé vers Master
    1 nouveau commit trouvé

    Construction de l'application 'example-app' (type d'exécution : golang:1.15, arbre : e7f1eab)
      Génération de la configuration d'exécution.
      Exécution des vérifications préliminaires...
      Compression de l'application.
      Envoi du paquet vers sa destination finale.

    Construction de l'application 'redirectionio-agent' (type d'exécution : golang:1.15, arbre : 2fd5612)
      Génération de la configuration d'exécution.
      Exécution du hook de build...
        W: + curl -s -J -L https://packages.redirection.io/dist/stable/2/any/redirectionio-agent-latest_any_amd64.tar.gz
        W: + tar -C /app/ -xzpf -
      Exécution des vérifications préliminaires...
      Compression de l'application.
      Envoi du paquet vers sa destination finale.

    Redéploiement de l'environnement master
      Préparation du déploiement
      Fermeture des services example-app, router et redirectionio-agent
      Ouverture de l'application example-app et de ses relations
      Ouverture de l'environnement
      Configuration de l'environnement
        example-app (type: golang:1.15, size: S, disk: 128)
        redirectionio-agent (type: golang:1.15, size: S, disk: 128)

      Routes de l'environnement
        http://master-XXXXXXXXXX.platformsh.site/ redirige vers https://master-XXXXXXXXXX.platformsh.site/
        http://www.master-XXXXXXXXXX.platformsh.site/ redirige vers https://www.master-XXXXXXXXXX.platformsh.site/
        https://master-XXXXXXXXXX.platformsh.site/ est servi par l'application `redirectionio-agent`
        https://www.master-XXXXXXXXXX.platformsh.site/ redirige vers https://master-XXXXXXXXXX.platformsh.site/

Envoyez une requête HTTP(s) à l'URL de votre application, et vous devriez voir du trafic enregistré dans le manager redirection.io. Vous pouvez maintenant auditer votre trafic, créer des redirections et corriger les erreurs de SEO facilement !

Prochaine étape, apprenez à créer vos premières redirections !

Cette page a été mise à jour le 30 juin 2025
Vous ne trouvez pas votre réponse ?