该帖子最初发布于 大卫·阿尔格’s blog.
本文将介绍如何使用 Capistrano-magento2 Capistrano宝石(由我们自己创建 大卫·阿尔格)将Magento 2申博娱乐到舞台和/或生产服务器。
Capistrano是一种用于在多个服务器上运行脚本的工具,通常用于将代码更改申博娱乐到这些服务器上。 Capistrano与单节点申博娱乐以及包括位于负载均衡器后面的单独的应用程序和数据库服务器的多节点申博娱乐都可以很好地配合使用。使用Capistrano时,您会获得很多功能“for free”而且您只需要实现脚本即可处理特定于应用程序的申博娱乐步骤。
Magento社区多年来一直在使用Capistrano来申博娱乐Magento 1。 Magento 1有几个Capistrano宝石(彼得·罗德斯(Peter Rhoades)的capistrano-magento 和 Magentify通过Alistair Stead)。但是,由于Magento 1的申博娱乐相当简单(与Magento 2相比),因此许多商家和代理商没有’不要使用Capistrano之类的申博娱乐工具。但是,Magento 2’的申博娱乐要求更高,并且需要某种脚本化的过程来申博娱乐Magento 2更新。与其从头开始构建自己的申博娱乐脚本,不如使用经过许多开发人员时间测试和使用的开源社区工具。
可以从装有Capistrano并已安装适当配置文件的任何计算机上启动Capistrano申博娱乐。 Capistrano申博娱乐更改后,它将通过SSH连接到已配置的服务器,并运行必要的命令以申博娱乐项目的新修订版。典型的工作流程是从本地开发计算机运行deploy命令。申博娱乐配置文件通常被提交到Magento存储库。这样,只要有适当的SSH访问权限,从事该项目的任何开发人员都可以将更改申博娱乐到配置的环境中。
本文假定以下内容:
作曲家.lock
and 作曲家.json
档案 那 were created when you 安装ed Magento using 作曲家 create-project
. 您r .gitignore
should look 某事 像这样: 马真托2社区版/blob/master/.gitignore 请参阅的前几段 艾伦·肯特’s blog post 有关此项目设置方法的更多详细信息。要安装Capistrano,请运行以下命令:
1 |
$ 宝石 安装 Capistrano |
如果遇到问题,请参见此页面: http://capistranorb.com/documentation/getting-started/installation/
要安装capistrano-magento2,请运行以下命令:
1 |
$ 宝石 安装 Capistrano-马真托2 |
按照步骤1-3中 本节 的
Capistrano-magento2 readme. Once you follow 的se steps, 的 工具
目录 在 您的 Magento 2 project should look 像这样:
1 2 3 4 5 6 7 8 9 10 11 12 |
. └── 工具 └── 帽 ├── Capfile ├── 配置 │ ├── 申博娱乐 │ │ ├── 生产.rb │ │ └── 分期.rb │ └── 申博娱乐.rb └── LIB └── Capistrano └── 任务 |
我建议将这些文件提交到您的Magento 2 吉特存储库。
申博娱乐之前,您需要准备舞台和/或生产环境。就本文而言,让’s假设您要将Magento 2申博娱乐到两个环境:
优雅的骆马uses Capistrano 至 申博娱乐 至 both 生产 和 舞台环境。虽然我们可以避免手动申博娱乐阶段(特别是如果阶段在开发人员模式下运行,我不愿意这样做)’推荐),在两个环境中使用相同的申博娱乐过程可确保您的舞台环境准确反映了生产。
对于本文的其余部分,我们’再谈谈申博娱乐到stage.example.com环境,但是步骤将与生产环境相同。这是准备stage.example.com环境所需运行的命令示例:
1 2 3 4 |
$ ssh 万维网-数据@阶段.例.com $ 光盘 /变种/万维网/html $ 麦克迪尔 -p 共享/应用程式/等等 $ 触摸 共享/应用程式/等等/环保.的PHP |
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.
1 2 |
fastcgi_param 脚本_文件名 $realpath_root$fastcgi_script_name; fastcgi_param 文件_根 $realpath_root; |
Now you can 申博娱乐 Capistrano 至 您的 server. On 您的 development 机, run 这个 command 在 的 工具/cap
目录:
1 |
$ 帽 分期 申博娱乐 |
当您运行该命令时,Capistrano将详细报告其进度。以下是Capistrano在此过程中的摘要:
/var/www/html/releases/<TIMESTAMP>
directory 对于 的 new 释放:branch
value specified 在 分期.rb
):linked_files
和 :linked_dirs
在to 的 new 释放 folder作曲家 安装
在 的 释放 目录. This 将 download 和 安装 的 dozens 的 dependencies declared 在 作曲家.lock
. Composer 快取s packages, so subsequent 申博娱乐ments should be faster than 您的 在itial 申博娱乐ment.bin/magento 建立:static-content:deploy
和 bin/magento 建立:di:compile-multi-tenant
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’•与该表同步时,将引发错误。/var/www/html/current
symlink 将 continue 至 point 至 的 释放 目录 it was pointed 至 before you began 的 申博娱乐ment./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 某事 像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
. ├── 当前 -> /变种/万维网/html/发布/20160526030129 ├── 发布 - 这个 目录 将 包含 的 最新 X 发布. X 是 定义的 通过 :keep_releases 哪一个 默认值 至 5 │ └── 20160526030129 ├── 回购 - 这个 是 a 裸 克隆 的 您的 吉特 资料库 ├── 修订版 .日志 - a 线 对于 每 释放 与 的 承诺 杂凑, 释放 日期, 和 用户名 的 的 机 那 申博娱乐 └── 共享 - 这个 是 a 常驻 目录 那 包含 的 档案/目录 被引用 通过 :链接文件 和 :已连结_rs ├── 应用程式 │ └── 等等 │ └── 环保.的PHP ├── 酒馆 │ ├── 媒体 │ └── 网站地图.XML文件 └── 变种 ├── 备份 ├── 作曲家_首页 ├── 进出口 ├── 进口_历史 ├── 日志 ├── 会议 └── tmp |
现在已经配置了阶段申博娱乐,请按照相同的步骤来设置生产申博娱乐。
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版中可用的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
帽 马真托:快取:清洁 #按类型清理Magento缓存 帽 马真托:快取:禁用 #禁用Magento缓存 帽 马真托:快取:使能 #启用Magento缓存 帽 马真托:快取:齐平 #刷新Magento缓存存储 帽 马真托:快取:状态 #检查Magento缓存启用状态 帽 马真托:快取:漆:禁止 #为网址添加禁令 帽 马真托:作曲家:安装 #运行composer 安装 帽 马真托:索引器:信息 #显示允许的索引器 帽 马真托:索引器:重新索引 #所有索引器重新索引数据 帽 马真托:索引器:组-模式[模式,指数] #设置所有索引器的模式 帽 马真托:索引器:节目-模式[指数] #显示所有索引器的模式 帽 马真托:索引器:状态 #显示所有索引器的状态 帽 马真托:保养:允许-ip s[ip ] #设置免维护IP 帽 马真托:保养:禁用 #禁用维护模式 帽 马真托:保养:使能 #启用维护模式 帽 马真托:保养:状态 #显示维护模式状态 帽 马真托:建立:迪:编译 #运行依赖注入编译例程 帽 马真托:建立:权限 #设置对应用程序的适当权限 帽 马真托:建立:静态的-内容:申博娱乐 #申博娱乐静态视图文件 帽 马真托:建立:升级 #运行Magento升级过程 |
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 的:
建立_module
table or else you 将 get errors.帽 magento:cache:flush
command如果你’d要获取成功/失败申博娱乐的OS X通知,请遵循下面概述的步骤 “OS X上的终端通知程序” 在 的 README
如果你 want 至 see what changes you’关于要申博娱乐到环境中,您可以添加 Capistrano待定 宝石 as a dependency. Add 这个 线 至 工具/cap/Capfile
:
1 |
要求 'Capistrano待定' |
Now, 光盘
至 工具/cap
和 run 的se commands 至 see 待定 承诺 messages 和 file changes (respectively):
1 2 |
$ 帽 阶段 申博娱乐:待定 $ 帽 阶段 申博娱乐:待定:差异 |
如果你’重新使用Varnish缓存您的静态资产,您’我们需要采取一些额外的步骤来使capistrano-magento2冲洗Varnish。一世’我不会在本文中介绍这些步骤,但是如果您’d想了解更多信息,请在下面发表评论。
熟悉和设置自动申博娱乐系统可能需要一段时间,但是由于需要使用Magento 2将更改手动申博娱乐到舞台/生产环境所需的大量工作,因此值得进行投资。特别是因为使用Capistrano进行申博娱乐可确保在申博娱乐时将站点的停机时间降至最低。
如果你 have any questions or feedback, I’d喜欢在下面的评论部分中听到他们的声音。
2 评论s
非常丰富。谢谢。
非常有用且清晰的文章….
我想了解更多有关Varnish缓存刷新的信息。
谢谢