Com o Magento 1, usei uma ferramenta de implantação que extraía o repositório GIT, executava comandos como modman deploy-all
e assegurava que o var
diretório fosse gravável. Para o que .gitignore
eu usei este que funcionou muito bem.
Mas e o Magento 2 ?
Qual gitignore funciona melhor, como você implanta seu projeto e qual comando deve ser executado antes e depois da implantação. Ansioso para ouvir algumas idéias da comunidade.
A pergunta permanecerá aberta por algum tempo
Respostas:
As etapas abaixo descrevem como configurar o ambiente para desenvolvimento de módulo personalizado, não para produção.
Inicialização do projeto
Crie um projeto usando o seguinte comando:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
Pegue esse .gitignore e coloque na raiz do projeto. Quase todos os arquivos / diretórios principais já foram adicionados à raiz
.gitignore
, mas é melhor adicionar também os 2 a seguir/update
e/phpserver
(basta adicionar essas 2 linhas ao .gitignore)app/code/VendorName/ModuleName
), agora você terá apenas seu código personalizado em seu repositório gitInstalação Magento
Instale o Magento usando a linha de comando, por exemplo:
${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
Habilite o trabalho cron dos indexadores, por exemplo, no Ubuntu:
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default
modo e todo o conteúdo ausente será gerado automaticamente após a primeira solicitação. Portanto, não há necessidade de executar o compilador ou a implantação de conteúdo estático[opcional] Se estiver usando o PHP Storm, execute o seguinte comando para ativar o suporte ao XSD:
bin/magento dev:urn-catalog:generate .idea/misc.xml
fonte
vendor
, inclusive omagento2-base
que é apenas um esqueleto para um novo projeto. Não sabe por que essa etapa não está configurada para ser executada automaticamente pelo compositor, tentará descobrir. Em relação à.gitignore
cópia de outro repositório, já está sendo discutido como eliminar / simplificar esta etapa.magento2-base
para a raiz não é mais necessário (apenas verificado), parece ter sido corrigido recentemente. Removida esta etapa da resposta.Para Inicialização e Instalação, siga as etapas de Alex, sua resposta para a maioria das etapas, apenas as diferenças que eu recomendaria:
Configuração Git
Armazene apenas os seguintes arquivos no seu repositório Git:
Para o código personalizado do seu projeto, use também módulos separados que você inclui no compositor. O gerenciamento desse compositor é mais fácil, pois você pode bloquear uma versão / release específico que deseja implantar. Isso também força você a usar a mesma abordagem para módulos internos e externos.
Desdobramento, desenvolvimento
Durante o desenvolvimento, você atualiza os módulos em seu ambiente (dev / test) com o comando:
Isso atualizará o arquivo composer.lock com as versões instaladas nessa instalação.
Na preparação / pré-produção / produção, você pode criar / instalar a mesma configuração com o comando:
Isso instalará todos os mesmos módulos usados no dev / test para garantir que o teste antes da publicação na produção seja realizado com as mesmas versões de módulo com as quais é desenvolvido.
Após a instalação, execute os seguintes comandos:
Isso atualizará o banco de dados (atualização de esquema e dados), gerará a configuração de DI e implementará todos os arquivos de exibição estática.
fonte
No .gitignore, 2.2 a resposta oficial do Magento será "config.php entra no git, o env.php não".
Estamos analisando plugins de compositores, como o Mediawiki, para aproximar o desenvolvedor interno do desenvolvimento de extensões e dos sites dos clientes. Ainda explorando, ainda não final.
Eu gostei bastante de usar o tipo de repositório Composer "Path" com um caminho
../othergitrepo/app/code/*/*
para pegar módulos, mas ele usa links simbólicos que não funcionam tão bem com ambientes de desenvolvimento usando Unison ou similar.fonte
executamos uma abordagem diferente que não envolve um servidor / processo de compilação separados , desenvolvemos localmente como se estivéssemos em produção
em seguida, confirmamos todos os arquivos necessários para a produção . simplesmente implantamos os conjuntos de alterações no servidor e executamos o comando upgrade.
chegar a uma versão adequada para desenvolvimento, mas também executada no modo de produção, foi a parte mais complicada e ainda não é perfeita, mas agora temos uma receita que funciona.
o motivo é que queremos ter 100% de controle sobre o código que entra em produção. Como o magento2 gera uma tonelada de código, precisamos executá-lo localmente para poder entender todos os efeitos e poder depurar como se estivesse em produção.
Estou ciente de que isso não é o que muitas pessoas recomendam fazer, mas para nós funciona melhor.
etapas de configuração do frontend
Para que esses scripts funcionem, configure sua loja para o modo de produção em seu env.php e configure seu tema em
dev/tools/grunt/configs/themes.js
. (as etapas a seguir foram colocadas em um manual de instruções)var/cache
var/view_preprocessed
pub/static/*
(não exclua o .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
etapas de back-end / di-setup
var/cache
var/generation
var/composer_home
var/di
php bin/magento cache:flush
php bin/magento setup:di:compile
fonte
Você também deve ignorar esses arquivos
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm
fonte