staempfli/magento2-deployment-tool

此软件包已被废弃且不再维护。未建议替代软件包。

Staempfli AG Magento2 部署工具

2.1 2018-02-09 14:33 UTC

This package is auto-updated.

Last update: 2020-09-16 12:24:45 UTC


README

Project Status: Abandoned – Initial development has started, but there has not yet been a stable, usable release; the project has been abandoned and the author(s) do not intend on continuing development.

此工具已被弃用,改为使用magento2-deployer-plus。尽管此存储库将保留且工具可支持到 Magento 2.2.3,但我们将不再添加更新。进一步的开发将在新的工具magento2-deployer-plus上进行。

如果您曾使用此工具,我们鼓励您迁移到新工具。新工具是此工具的改进版本,使用 deployer。新工具支持 Magento 版本 <= 2.1

您可以在其存储库中找到有关新工具的所有信息

Magento 2 部署工具

使用 PHing 创建的用于 Magento 2 的部署工具。此工具将新项目版本构建到单独的目录中,并在最后切换到实时版本。

使用 Magento >= 2.2 功能的零停机时间部署

工作流程

1. Get new Project version (i.e git clone, curl, ...)
2. Build Project (i.e composer install, untar, ...)
3. Symlinks to shared content in server
4. Generate Magento files and permissions (Skipped if `build.project.type=artifact`)
6. Set Maintenance (if needed)
7. Database backup (if needed)
8. Magento setup:upgrade (if needed)
9. Replace live version with new one
10. Unset maintenance
11. Clean up old releases and backups

演示

  • 部署 git 仓库

Magento2 deploy from git

  • 部署 .tar 归档

Magento2 deploy from tar

安装

需要使用 composer 进行全局安装。

  1. Composer require

    composer global require "staempfli/magento2-deployment-tool":"~2.0"
    
  2. 检查您全局 composer 的 bin-dir 配置

    composer global config -l | grep "bin-dir"
    
  3. 将上一步骤中的路径添加到您的 $PATH 配置中

  4. 在新控制台标签页中打开并检查是否找到了 mg2-deployer 工具

    which mg2-deployer
    

设置

  1. 需要项目克隆中的 config.php 文件。

  2. 创建数据库

     CREATE DATABASE <database_name>;
     CREATE USER `<database_user>`@`<database_host>` IDENTIFIED BY "<user_password>";
     GRANT ALL ON <database_name>.* TO `<database_user>`@`<database_host>`;
    
  3. 运行设置:(这可能会因为 Magento 编译而需要几分钟时间)

    mg2-deployer setup
    
  4. 在流程结束时,您应该得到一个类似于以下的文件夹结构

  | - backups
  | - deployment-settings
  | - public_html (Symlink)
  | - releases
  | - tmp-downloads
  | - shared
    | - magento
    	| - app (etc/env.php)
    	| - pub
    		| - media
    	| - var
    		| - log

使用方法

工具必须在部署项目的路径下执行。

  • 部署新版本

     mg2-deployer release [-Drelease.version=<version_number>]
    
  • 其他可用命令

     mg2-deployer -list
    
     Main targets:
     ------------
     release               Options -> [skipCronInstall|skipDatabaseBackup|finishWithMaintenance]
     maintenance:set       Set maintenance window
     maintenance:unset     Replace maintenance window with a specific released version
     release:live:replace  Set a specific release as live version
     cache:clean:all       Clear all caches (Magento, OPcache, Varnish)
    

自定义配置

属性

您可以根据需要自定义属性

在服务器上

  • deployment-settings/project.properties
  • 该文件中添加的属性将覆盖默认属性

在项目中

  • {{PROJECT_ROOT}}/config/project.properties
  • 如果您想在项目中共享属性,可以将它们添加到该文件中。
  • 此处添加的属性具有最高优先级,并将覆盖 deployment-settings/project.properties 和默认属性。

您可以在

维护窗口

您可以使用自己的设计编辑维护文件

vim deployment-settings/templates/maintenance/${magento.dir}/pub/index.php

共享内容 & 符号链接

  • 仅在服务器上相关的静态内容将保存在 shared 文件夹中。

  • 在每次部署过程中,发布项目中会自动创建符号链接。

  • 您可以通过编辑文件 deployment-settings/shared.symlinks 来添加您自定义的符号链接

     shared/magento/app/etc/env.php=>{{MAGENTO_DIR}}/app/etc/env.php
     shared/magento/pub/media=>{{MAGENTO_DIR}}/pub/media
     shared/magento/var/log=>{{MAGENTO_DIR}}/var/log
    
    • 注意:您必须将 {{MAGENTO_DIR}} 替换为您的 magento 目录或如果与根项目相同,则替换为 .

脚本

您可以在以下文件中设置在发布过程结束时运行的定制脚本

cp deployment-settings/scripts/release-after.sh.dist deployment-settings/scripts/release-after.sh
vim deployment-settings/scripts/release-after.sh

从工件构建项目

如果您选择 build.project.type=artifact,以下为获取和构建项目文件的默认属性

command.get.project.artifact=
command.build.project.artifact=mkdir -p ${release.target} && tar -xzf ${downloads.target}.tar.gz -C ${release.target}

此配置期望 artifact.tar.gz 扩展名在 tmp-downloads 中可用。

如果您需要从不同的服务器获取 artifact,您可以修改属性如下

command.get.project.version=scp <user>@<server_domain>:<path>${release.version}.tar.gz ${downloads.target}.tar.gz

注意 ${} 变量在部署期间会自动替换。

技巧

加速开发服务器上的部署过程

  • 发布 develop 分支的最新版本 -Drelease.version=develop

  • 跳过数据库备份步骤 -DskipDatabaseBackup

  • 您甚至可以在 deployment-settings/project.properties 中将这些选项设置为默认选项

    vim deployment-settings/project.properties
    release.version=develop
    skipDatabaseBackup=1
    

故障排除

JavaScript 翻译缺失(magento 版本 >=2.1.3 <2.2.1)

  • 问题:在执行 setup:static-content:deploy 时,已知的 Magento 问题会影响多个语言。

  • GitHub 问题:

  • 解决方案:在 2.2.1 中得到修复之前,唯一的解决方案是针对每种语言单独执行 setup:static-content:deploy。要使用 mg2-deployer release 自动运行,您需要编辑以下内容

    1. vim deployment-settings/project.properties

    2. static-content.languages 上设置仅 1 种语言

      • static-content.languages=en_US
    3. command.static-content.deploy.options 上添加您剩余的语言,为每种语言使用以下命令

      • && ${bin.n98-magerun2} --root-dir=${release.target}/${magento.dir} setup:static-content:deploy de_CH
    4. 结果将类似于以下示例

      static-content.languages=en_US
      command.static-content.deploy.options=--exclude-theme Magento/luma --exclude-theme Magento/blank && ${bin.n98-magerun2} --root-dir=${release.target}/${magento.dir} setup:static-content:deploy de_CH --exclude-theme Magento/luma --exclude-theme Magento/blank && ${bin.n98-magerun2} --root-dir=${release.target}/${magento.dir} setup:static-content:deploy fr_FR --exclude-theme Magento/luma --exclude-theme Magento/blank
      

编译错误

  • 解决方案:将 php 的 memory_limit 配置增加到 728M 或 1024M

设置新模板时的静态部署错误(如果没有使用配置传播)

  • 问题:

    • [LogicException] 无法通过指定键 'Template' 加载主题
    • @variable 在文件中未定义
  • 原因:如果设置了新模板,在执行 setup:static-content:deploy 之前需要先运行 setup:upgrade

  • 解决方案:在首次部署新模板时跳过 setup:static-content:deploy。按照以下步骤进行发布

    1. mg2-deployer release -DfinishWithMaintenance -DskipStaticContentDeploy
    2. <latest_release>/<magento_bin> setup:static-content:deploy <language1> <language2> ...
    3. mg2-deployer maintenance:unset

    之后,未来的部署将不会出现任何问题

先决条件

  • PHP >= 7.0.8
  • MAGENTO >= 2.2.1(对于旧版本的 MAGENTO,请使用 staempfli/magento2-deployment-tool:^1.2

变更日志

CHANGELOG.md

开发者

许可

GNU通用公共许可证,版本3(GPLv3)

版权

(c) 2016 Staempfli AG