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 :
Et voici le schéma qui sera utilisé avec l'agent redirection.io installé :
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 :
Cela créera un projet platform.sh de base avec redirection.io installé :
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 estgolang
, 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œudproxies[0].forward
dans le fichieragent.yaml
; - le nœud
web.command.start
définit comment démarrer le binaireredirectionio-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 !