在Magento 1中,我使用了一个部署工具,该工具提取了GIT存储库,运行了类似的命令modman deploy-all
,并确保该var
目录可写。对于.gitignore
我来说,我使用的这个效果很好。
但是Magento 2呢?
哪种gitignore效果最好,如何部署项目以及在部署前和部署后应运行什么命令。期待听到社区的一些见解。
问题将持续存在一段时间
在Magento 1中,我使用了一个部署工具,该工具提取了GIT存储库,运行了类似的命令modman deploy-all
,并确保该var
目录可写。对于.gitignore
我来说,我使用的这个效果很好。
但是Magento 2呢?
哪种gitignore效果最好,如何部署项目以及在部署前和部署后应运行什么命令。期待听到社区的一些见解。
问题将持续存在一段时间
Answers:
以下步骤描述了如何为自定义模块开发而非生产环境设置环境。
项目初始化
使用以下命令创建项目:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .
就拿这个的.gitignore并投入你的项目的根。几乎所有的核心文件/目录已添加到根.gitignore
,但最好是添加以下2以及/update
和/phpserver
(刚加入这2行的.gitignore)
app/code/VendorName/ModuleName
),现在您的git存储库中将只有自定义代码Magento安装
使用命令行安装Magento,例如:
${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 \
--admin-email=admin@example.com \
--admin-user=admin \
--admin-password=123123q \
--cleanup-database \
--use-rewrites=1
启用索引器cron作业,例如在Ubuntu上:
echo "* * * * * php ${project_root}/bin/magento cron:run &" | crontab -u www-data -
default
模式运行,所有丢失的内容将在首次请求时自动生成。因此,无需运行编译器或静态内容部署[可选]如果使用PHP Storm,请在其中运行以下命令以启用XSD支持:
bin/magento dev:urn-catalog:generate .idea/misc.xml
vendor
,其中包括magento2-base
,这只是新项目的框架。不确定为什么此步骤未配置为由作曲家自动完成,将尝试找出答案。关于.gitignore
从另一个仓库复制,已经在讨论如何消除/简化这一步骤。
magento2-base
不再需要复制到根目录(已验证),最近似乎已修复。从答案中删除了此步骤。
对于“初始化和安装”,请遵循Alex回答的大部分步骤,只有不同之处我建议:
Git配置
仅将以下文件存储在您的Git存储库中:
对于项目自定义代码,还请使用通过作曲家包括的单独模块。通过锁定作曲家比较容易,因为您可以锁定要部署的特定版本/发行版。这也迫使您对内部和外部模块使用相同的方法。
部署方式
在开发期间,您可以使用以下命令在您的环境(开发/测试)上更新模块:
composer update
这将使用该安装上安装的版本更新composer.lock文件。
在暂存/预生产/生产中,您可以使用以下命令创建/安装相同的设置:
git pull
composer install
这将安装与dev / test中使用的所有模块相同的模块,以确保发布到生产之前的测试使用与开发时所用的模块版本相同的模块版本进行。
安装后运行以下命令:
bin/magento setup:upgrade
bin/magento setup:di:compile (or setup:di:compile-multi-tenant)
bin/magento setup:static-content:deploy
这将更新数据库(架构和数据升级),生成DI配置并部署所有静态视图文件。
我们采用了不涉及单独的构建服务器/流程的不同方法,就好像在生产中一样进行本地开发
然后,我们提交生产所需的所有文件。然后,我们只需将变更集部署到服务器并运行upgrade命令。
获得适合于开发但也可以在生产模式下运行的版本是棘手的部分,虽然仍然不完美,但是现在我们有了一个可行的方法。
原因是我们希望对要生产的代码进行100%的控制。由于magento2会生成大量代码,因此我们必须在本地运行它才能理解所有影响并能够像在生产中一样进行调试。
我知道这不是很多人建议做的,但对我们来说效果最好。
前端设置步骤
为了使这些脚本起作用,请在env.php中将商店设置为生产模式,并在中设置主题dev/tools/grunt/configs/themes.js
。(以下步骤已放入Ansible剧本中)
var/cache
var/view_preprocessed
pub/static/*
(不要删除.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
后端/ di-setup步骤
var/cache
var/generation
var/composer_home
var/di
php bin/magento cache:flush
php bin/magento setup:di:compile
您也应该忽略这些文件
/app/etc/config.php
/app/etc/env.php
/.idea/workspace.xml // phpstorm