Con Magento 1 utilicé una herramienta de implementación que extrajo el repositorio GIT, ejecuté comandos como modman deploy-all
y me aseguré de que el var
directorio se pudiera escribir. Para el .gitignore
usé este que funcionó bastante bien.
¿Pero qué hay de Magento 2 ?
Qué gitignore funciona mejor, cómo implementa su proyecto y qué comando se debe ejecutar antes y después de la implementación. Esperamos escuchar algunas ideas de la comunidad.
La pregunta permanecerá abierta durante bastante tiempo.
Respuestas:
Los pasos a continuación describen cómo configurar el entorno para el desarrollo de módulos personalizados, no para la producción.
Inicializacion del proyecto
Cree un proyecto con el siguiente comando:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Tome este .gitignore y póngalo en la raíz de su proyecto. Casi todos los archivos / directorios principales ya están agregados a la raíz
.gitignore
, pero es mejor agregar también los siguientes 2/update
y/phpserver
(solo agregue estas 2 líneas a .gitignore)app/code/VendorName/ModuleName
), ahora solo tendrá su código personalizado en su repositorio gitInstalación de Magento
Instale Magento usando la línea de comando, por ejemplo:
${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
Habilitar indexadores cron trabajo, por ejemplo, en Ubuntu:
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default
modo y todo el contenido faltante se generará automáticamente a la primera solicitud. Por lo tanto, no es necesario ejecutar el compilador o la implementación de contenido estático[opcional] Si usa PHP Storm, ejecute el siguiente comando para habilitar la compatibilidad con XSD:
bin/magento dev:urn-catalog:generate .idea/misc.xml
fuente
vendor
, incluidomagento2-base
, que es solo un esqueleto para un nuevo proyecto. No estoy seguro de por qué este paso no está configurado para ser realizado automáticamente por el compositor, intentaremos averiguarlo. Con respecto a la.gitignore
copia de otro repositorio, ya se está discutiendo cómo eliminar / simplificar este paso.magento2-base
a la raíz ya no es necesaria (solo verificada), parece haberse solucionado recientemente. Se eliminó este paso de la respuesta.Para la inicialización e instalación, siga los pasos de Alex, su respuesta para la mayoría de los pasos, solo las diferencias que recomendaría:
Configuración de Git
Solo almacene los siguientes archivos en su repositorio de Git:
Para el código personalizado de su proyecto, también use módulos separados que incluya a través del compositor. Administrar este thru composer es más fácil, ya que puede bloquear una versión / lanzamiento específico que desea implementar. Esto también lo obliga a usar el mismo enfoque para los módulos internos y externos.
Despliegue
Durante el desarrollo, actualiza los módulos en su entorno (dev / test) con el comando:
Esto actualizará el archivo composer.lock con las versiones instaladas en esa instalación.
En la preparación / preproducción / producción puede crear / instalar la misma configuración con el comando:
Esto instalará todos los mismos módulos que se utilizan en dev / test para garantizar que las pruebas antes de publicar en producción se realicen con las mismas versiones de módulos con las que se desarrolla.
Después de la instalación para ejecutar los siguientes comandos:
Esto actualizará la base de datos (esquema y actualización de datos), generará la configuración DI e implementará todos los archivos de vista estática.
fuente
Re .gitignore, 2.2 en adelante, la respuesta oficial de Magento será "config.php entra en git, env.php no".
Estamos buscando complementos de compositores como Mediawiki para acercar el desarrollo interno al desarrollo de extensiones y sitios de clientes. Todavía explorando, aún no final.
Me gustó mucho usar el tipo de repositorio "Path" de Composer con una ruta
../othergitrepo/app/code/*/*
para recoger módulos, pero usa enlaces simbólicos que no funcionan tan bien con entornos de desarrollo que usan Unison o similar.fuente
ejecutamos un enfoque diferente que no involucra un proceso / servidor de compilación separado , lo desarrollamos localmente como si estuviera en producción
Luego confirmamos todos los archivos necesarios para la producción . entonces simplemente implementamos los conjuntos de cambios en el servidor y ejecutamos el comando de actualización.
llegar a una versión adecuada para el desarrollo pero que también se ejecuta en modo de producción fue la parte difícil y todavía no es perfecta, pero ahora tenemos una receta que funciona.
la razón es que queremos tener un control del 100% sobre qué código entra en producción. Como magento2 genera una tonelada de código, debemos ejecutarlo localmente para poder comprender todos los efectos y poder depurar como si estuviera en producción.
Soy consciente de que esto no es lo que muchas personas recomiendan hacer, pero para nosotros funciona mejor.
pasos de configuración de la interfaz
Para que estos scripts funcionen, configure su tienda en modo de producción en su env.php y configure su tema en
dev/tools/grunt/configs/themes.js
. (los siguientes pasos se pusieron en un libro de jugadas ansible)var/cache
var/view_preprocessed
pub/static/*
(no elimine el .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
pasos de backend / di-setup
var/cache
var/generation
var/composer_home
var/di
php bin/magento cache:flush
php bin/magento setup:di:compile
fuente
También debe ignorar estos archivos
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm
fuente