使用Capistrano申博娱乐Magento 2

使用Capistrano申博娱乐Magento 2

2016年6月22日发布 in 发展历程
为什么选择Magento 2
为什么选择Magento 2?
2016年6月15日
IRCE回顾2016
2016年6月22日

该帖子最初发布于 大卫·阿尔格’s blog.

总览

本文将介绍如何使用 Capistrano-magento2 Capistrano宝石(由我们自己创建 大卫·阿尔格)将Magento 2申博娱乐到舞台和/或生产服务器。

Capistrano是一种用于在多个服务器上运行脚本的工具,通常用于将代码更改申博娱乐到这些服务器上。 Capistrano与单节点申博娱乐以及包括位于负载均衡器后面的单独的应用程序和数据库服务器的多节点申博娱乐都可以很好地配合使用。使用Capistrano时,您会获得很多功能“for free”而且您只需要实现脚本即可处理特定于应用程序的申博娱乐步骤。

Magento社区多年来一直在使用Capistrano来申博娱乐Magento 1。 Magento 1有几个Capistrano宝石(彼得·罗德斯(Peter Rhoades)的capistrano-magentoMagentify通过Alistair Stead)。但是,由于Magento 1的申博娱乐相当简单(与Magento 2相比),因此许多商家和代理商没有’不要使用Capistrano之类的申博娱乐工具。但是,Magento 2’的申博娱乐要求更高,并且需要某种脚本化的过程来申博娱乐Magento 2更新。与其从头开始构建自己的申博娱乐脚本,不如使用经过许多开发人员时间测试和使用的开源社区工具。

 

可以从装有Capistrano并已安装适当配置文件的任何计算机上启动Capistrano申博娱乐。 Capistrano申博娱乐更改后,它将通过SSH连接到已配置的服务器,并运行必要的命令以申博娱乐项目的新修订版。典型的工作流程是从本地开发计算机运行deploy命令。申博娱乐配置文件通常被提交到Magento存储库。这样,只要有适当的SSH访问权限,从事该项目的任何开发人员都可以将更改申博娱乐到配置的环境中。

准备您的Magento 2项目/仓库

本文假定以下内容:

  • 您’ve chosen 的 “Composer metapackage” method 安装Magento。
  • 您有一份Magento 2副本,’已在本地安装(或在未启用Capistrano的舞台服务器上安装),并且您’d想使用Capistrano将其申博娱乐到舞台和/或生产环境中。
  • 您 have a 吉特 回购 那 包含 作曲家.lock and 作曲家.json 档案 那 were created when you 安装ed Magento using 作曲家 create-project. 您r .gitignore should look 某事 像这样: 马真托2社区版/blob/master/.gitignore 请参阅的前几段 艾伦·肯特’s blog post 有关此项目设置方法的更多详细信息。
  • 您有一个Magento 2数据库转储,’能够导入到您所在的服务器上’重新申博娱乐使用Capistrano。 Capistrano-magento2不支持从卸载状态申博娱乐Magento 2应用程序,并假定目标数据库存在并且目标环境中存在app / 等等 / 环保.php和app / 等等 / 配置.php文件(稍后会详细介绍)。

安装

要安装Capistrano,请运行以下命令:

如果遇到问题,请参见此页面: http://capistranorb.com/documentation/getting-started/installation/

要安装capistrano-magento2,请运行以下命令:

在您的Magento 2项目中安装Capistrano

按照步骤1-3中 本节
Capistrano-magento2 readme. Once you follow 的se steps, 的 工具 目录 在 您的 Magento 2 project should look 像这样:

我建议将这些文件提交到您的Magento 2 吉特存储库。

准备您的应用程序服务器

申博娱乐之前,您需要准备舞台和/或生产环境。就本文而言,让’s假设您要将Magento 2申博娱乐到两个环境:

  • 万维网.example.com
  • 阶段.example.com

优雅的骆马uses Capistrano 至 申博娱乐 至 both 生产  舞台环境。虽然我们可以避免手动申博娱乐阶段(特别是如果阶段在开发人员模式下运行,我不愿意这样做)’推荐),在两个环境中使用相同的申博娱乐过程可确保您的舞台环境准确反映了生产。

对于本文的其余部分,我们’再谈谈申博娱乐到stage.example.com环境,但是步骤将与生产环境相同。这是准备stage.example.com环境所需运行的命令示例:

Capistrano-magento2 宝石使用用于连接到服务器的SSH用户的所有权来申博娱乐文件。为了避免权限问题,您应该确保PHP和Web服务器以该用户身份运行。虽然最好的做法是在单独的服务器上运行舞台和生产站点,但Capistrano不会’t care about 这个 can be easily 配置ured 至 申博娱乐 阶段/production 至 的 same server 通过 changing 的 配置 values 在 的 工具/cap/config/deploy/*.rb 档案.

Edit the 共享/app/etc/env.php file 和 add 的 necessary 组tings (DB credentials, 等等) 和 ensure a proper 应用程式/etc/config.php file 是 承诺ted 至 您的 资料库 (this file 是 created when bin/magento 建立:install 是 run). Now 进口 的 Magento 数据base 和 update 的 necessary values 在 的 core_config_data table 至 reflect 的 new URL.

Configure 您的 web server 至 use /var/www/html/current/pub as 的 document root. 如果你r web server 是 running Apache, make sure you have mod_realdoc 安装ed 和 配置ured 至 avoid 是sues 与 symlinked 申博娱乐ments 和 的 Zend Opcache. 如果你r web server 是 running Nginx, make sure 您的 FastCGI proxy 配置uration 是 using 的 $realpath_root 变种iable 在stead 的 $document_root 对于 both 脚本_FILENAME 和 文件_ROOT params sent 至 PHP-FPM.

首次申博娱乐到阶段

Now you can 申博娱乐 Capistrano 至 您的 server. On 您的 development 机, run 这个 command 在 的 工具/cap 目录:

当您运行该命令时,Capistrano将详细报告其进度。以下是Capistrano在此过程中的摘要:

  • Creates a new /var/www/html/releases/<TIMESTAMP> directory 对于 的 new 释放
  • Checks outs 的 最新 copy 的 develop branch (the :branch value specified 在 分期.rb)
  • Symlinks 的 :linked_files:linked_dirs 在to 的 new 释放 folder
  • Runs 作曲家 安装 在 的 释放 目录. This 将 download 和 安装 的 dozens 的 dependencies declared 在 作曲家.lock. Composer 快取s packages, so subsequent 申博娱乐ments should be faster than 您的 在itial 申博娱乐ment.
  • 将新发行文件夹中的目录/文件权限分别更改为770/660(可能会在capistrano-magento2 宝石的将来发行版中更新这些权限,默认情况下将进一步保护它们,并且还允许更大的可配置性)。
  • Runs bin/magento 建立:static-content:deploybin/magento 建立:di:compile-multi-tenant
  • 一旦所有这些命令运行,新的发行目录将几乎准备好切换到“current” 释放. However immediately before doing so, 的 当前 release (the “current” symlink) 将 be put 在to 保养 模式 using bin/magento 保养:enable. The reason 这个 是 done 是 because 的 bin/magento 建立:upgrade --keep-generated command 将 be run immediately after 的 site 是 put 在to 保养 模式. This 是 进口ant because any new or updated modules 将 have 的ir version numbers updated 在 的 建立_module table 和 if 的 current 释放 sees 那 its modules aren’•与该表同步时,将引发错误。
  • Capistrano 申博娱乐ments are atomic, so if any 的 commands up 至 这个 point failed, 的 申博娱乐ment 将 fail 和 的 /var/www/html/current symlink 将 continue 至 point 至 的 释放 目录 it was pointed 至 before you began 的 申博娱乐ment.
  • At 这个 point, 的 /var/www/html/current symlink 将 be switched 至 point 至 的 new 发布/XXXXXXXX 目录.
  • 通过刷新缓存 bin/magento 快取:flush

可以通过capistrano-magento2 Gem申博娱乐Magento 2的申博娱乐过程 LIB / Capistrano / 任务 / 申博娱乐.rake

如果你 completed all 的 previous steps properly, you should now be able 至 browse 至 http://stage.example.com 和 see 您的 newly 申博娱乐 Magento site. When you want 至 申博娱乐 future code changes 至 阶段, ensure 的 changes are 在 的 develop branch 和 run 的 帽 分期 申博娱乐 command again 至 申博娱乐 的 最新 changes 至 阶段.

Once you 申博娱乐 至 阶段, 的 /var/www/html 目录 上 您的 阶段 server should look 某事 像这样:

现在已经配置了阶段申博娱乐,请按照相同的步骤来设置生产申博娱乐。

Capistrano-magento2的其他功能

In addition 至 申博娱乐ing changes, 的 capistrano-magento2 Gem also supports a number 的 Magento 保养 commands. Run 帽 -T 在 的 工具/cap 目录 至 see a list 的 commands. Many 的 commands are simply aliases 对于 bin/magento commands. The benefit 的 running 的m from Capistrano 是 two-fold: 您 don’由于Capistrano会为您处理该命令,因此无需通过SSH进入您的舞台或生产服务器即可运行该命令。其次,如果您有多个应用程序服务器,则可以在所有应用程序服务器中同时运行一个命令。这些是capistrano-magento2 0.2.4版中可用的命令:

正在还原

Capistrano supports reverting 至 previous 发布 using 帽 申博娱乐:rollback. This can be useful if you mistakenly 申博娱乐 code 至 an 环保ironment 和 want 至 immediately revert it. However, if you want 至 use 这个 feature, 的re are some things you need 至 be aware 的:

  • 如果你r newest 释放 contained new extensions or newer versions 的 extensions, you’ll need 至 manually adjust 的 values 在 的 建立_module table or else you 将 get errors.
  • 如果申博娱乐失败或您取消申博娱乐,则发布/<TIMESTAMP> 目录 对于 那 failed 释放 将 still exist. 如果你 rollback, Capistrano 将 use 的 most recent 释放 目录, even if it was not a successful 申博娱乐.
  • 还原后,您’ll need 至 run 的 帽 magento:cache:flush command
  • I’我只使用过一次此命令,因此可能需要执行其他操作’m not listing here.

OS X通知

如果你’d要获取成功/失败申博娱乐的OS X通知,请遵循下面概述的步骤 “OS X上的终端通知程序” 在 的 README

马真托2-capistrano通知

申博娱乐前检查未决的更改

如果你 want 至 see what changes you’关于要申博娱乐到环境中,您可以添加 Capistrano待定 宝石 as a dependency. Add 这个 线 至 工具/cap/Capfile:

Now, 光盘工具/cap 和 run 的se commands 至 see 待定 承诺 messages 和 file changes (respectively):

冲洗清漆缓存

如果你’重新使用Varnish缓存您的静态资产,您’我们需要采取一些额外的步骤来使capistrano-magento2冲洗Varnish。一世’我不会在本文中介绍这些步骤,但是如果您’d想了解更多信息,请在下面发表评论。

概要

熟悉和设置自动申博娱乐系统可能需要一段时间,但是由于需要使用Magento 2将更改手动申博娱乐到舞台/生产环境所需的大量工作,因此值得进行投资。特别是因为使用Capistrano进行申博娱乐可确保在申博娱乐时将站点的停机时间降至最低。

如果你 have any questions or feedback, I’d喜欢在下面的评论部分中听到他们的声音。

2 评论s

  1. 菲尔 说:

    非常丰富。谢谢。

  2. 阿尔贝托 说:

    非常有用且清晰的文章….
    我想了解更多有关Varnish缓存刷新的信息。

    谢谢

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.

最近的帖子查看全部
2020年10月22日

Covid世界中的假日销售:应对挑战

毫无疑问,2020年是历史性的一年。火灾,全球大流行,暴动,老虎王等’只是冰山一角。如 […]
2020年8月7日

涡轮增压ZZPerformance的付费搜索

2020年7月30日

Intermix Beats M1 End 的 Life 与 优雅的骆马Accelerator