Avec Magento 1, j’utilisais un outil de déploiement qui intégrait le dépôt GIT, exécutait des commandes telles que modman deploy-all
et s’assurait que le var
répertoire était accessible en écriture. Pour le .gitignore
j'ai utilisé celui-ci qui a plutôt bien fonctionné.
Mais qu'en est-il de Magento 2 ?
Qu'est-ce qui fonctionne le mieux avec gitignore, comment déployez-vous votre projet et quelle commande doit-on exécuter avant et après le déploiement? Au plaisir d'entendre quelques idées de la communauté.
La question restera ouverte pendant un certain temps
Réponses:
Les étapes ci-dessous décrivent comment configurer l'environnement pour le développement de modules personnalisés et non pour la production.
Initialisation du projet
Créez un projet en utilisant la commande suivante:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Prenez ce .gitignore et mettez-le dans la racine de votre projet. Presque tous les fichiers / répertoires principaux sont déjà ajoutés à la racine
.gitignore
, mais il est préférable d’ajouter également les 2 suivants/update
et/phpserver
(ajoutez simplement ces 2 lignes à .gitignore)app/code/VendorName/ModuleName
), vous n'aurez plus que votre code personnalisé dans votre dépôt gitInstallation de Magento
Installez Magento en ligne de commande, par exemple:
${project_root}/bin/magento setup:install \ --db-host=localhost \ --db-name=magento \ --db-user=root \ --backend-frontname=admin \ --base-url=http://base.url.goes.here/ \ --language=en_US \ --timezone=America/Chicago \ --currency=USD \ --admin-lastname=Admin \ --admin-firstname=Admin \ [email protected] \ --admin-user=admin \ --admin-password=123123q \ --cleanup-database \ --use-rewrites=1
Activer le travail cron des indexeurs, par exemple sur Ubuntu:
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default
mode et tout le contenu manquant sera généré automatiquement à la première demande. Donc, pas besoin d'exécuter le compilateur ou le déploiement de contenu statique[facultatif] Si vous utilisez PHP Storm, exécutez la commande suivante pour activer le support XSD:
bin/magento dev:urn-catalog:generate .idea/misc.xml
la source
vendor
, y comprismagento2-base
, ce qui n'est qu'un squelette pour un nouveau projet. Vous ne savez pas pourquoi cette étape n'est pas configurée pour être effectuée automatiquement par le compositeur, tentera de le savoir. En ce qui concerne la.gitignore
copie à partir d'un autre référentiel, il est déjà question de la manière d'éliminer / simplifier cette étape.magento2-base
à la racine n'est plus nécessaire (juste vérifiée), semble avoir été corrigée récemment. Supprimé cette étape de la réponse.Pour l’initialisation et l’installation, suivez les étapes de la réponse d’Alex pour la plupart des étapes. Seules les différences que je recommanderais:
Configuration Git
Ne stockez que les fichiers suivants dans votre référentiel Git:
Pour le code personnalisé de votre projet, utilisez également des modules distincts que vous incluez dans composeur. La gestion de ce composeur est plus facile car vous pouvez verrouiller une version / version spécifique que vous souhaitez déployer. Cela vous oblige également à utiliser la même approche pour les modules internes et externes.
Déploiement
Pendant le développement, vous mettez à jour les modules de votre environnement (dev / test) avec la commande:
Cela mettra à jour le fichier composer.lock avec les versions installées sur cette installation.
Lors de la préparation, de la pré-production et de la production, vous pouvez créer / installer la même configuration à l’aide de la commande suivante:
Ceci installera tous les mêmes modules que ceux utilisés dans dev / test pour garantir que les tests avant la publication en production sont effectués avec les mêmes versions de module que celles avec lesquelles il a été développé.
Après l'installation, exécutez les commandes suivantes:
Cela mettra à jour la base de données (mise à niveau du schéma et des données), générera la configuration DI et déploiera tous les fichiers de vue statique.
la source
Encore une fois, la réponse officielle de Magento 2.2 sera "config.php va dans git, env.php ne le fait pas".
Nous examinons des plugins de composition tels que Mediawiki pour rapprocher les développeurs internes du développement d’extensions et des sites clients. Encore à explorer, pas encore définitif.
J'aimais bien utiliser le type de référentiel Composer "Path" avec un chemin
../othergitrepo/app/code/*/*
permettant de récupérer les modules, mais il utilise des liens symboliques qui ne fonctionnent pas très bien avec les environnements de développement utilisant Unison ou similaire.la source
nous utilisons une approche différente qui ne nécessite pas un processus / serveur de construction séparé , nous développons localement comme si nous étions en production
nous validons ensuite tous les fichiers nécessaires à la production . nous déployons ensuite simplement les changesets sur le serveur et exécutons la commande upgrade.
arriver à une version qui convient au développement mais qui fonctionne aussi en mode de production était la partie la plus délicate et n’était toujours pas parfaite, mais nous avons maintenant une recette qui fonctionne.
La raison en est que nous voulons avoir un contrôle à 100% sur le code utilisé pour la production. Puisque magento2 génère une tonne de code, nous devons l'exécuter localement pour pouvoir comprendre tous les effets et pouvoir déboguer comme si c'était en production.
Je suis conscient que ce n'est pas ce que beaucoup de gens recommandent de faire, mais pour nous, cela fonctionne mieux.
étapes d'installation frontale
Pour que ces scripts fonctionnent, réglez votre boutique en mode de production dans votre env.php et configurez votre thème dans
dev/tools/grunt/configs/themes.js
. (les étapes suivantes ont été placées dans un livre de jeu ansible)var/cache
var/view_preprocessed
pub/static/*
(ne pas supprimer le .htaccess)var/composer_home
php bin/magento cache:flush
php bin/magento setup:static-content:deploy %your_languages%
pub/static/frontend
php bin/magento dev:source-theme:deploy --locale="%your_language%" --theme="%your_theme%" css/styles-m css/styles-l css/email css/email-inline
grunt less:your_theme
étapes de backend / di-setup
var/cache
var/generation
var/composer_home
var/di
php bin/magento cache:flush
php bin/magento setup:di:compile
la source
Vous devez également ignorer ces fichiers
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm
la source