Magento 2 Deployer Plus 项目教程
1. 项目的目录结构及介绍
Magento 2 Deployer Plus 项目的目录结构如下:
magento2-deployer-plus/
├── config/
│ └── recipe/
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── LICENSE.txt
├── README.md
├── autoload.php
├── composer.json
├── deploy.php
├── deploy.php.sample_2_1
├── deploy.php.sample_2_2
├── deploy.php.sample_2_2_5
├── grumphp.yml
├── phpcs.xml
├── phpmd.xml
目录结构介绍
config/recipe/
: 包含用于部署的配置文件。.gitignore
: Git 忽略文件列表。.travis.yml
: Travis CI 配置文件。CHANGELOG.md
: 项目更新日志。LICENSE.txt
: 项目许可证。README.md
: 项目说明文档。autoload.php
: 自动加载配置文件。composer.json
: Composer 依赖管理文件。deploy.php
: 主部署配置文件。deploy.php.sample_2_1
: Magento 2.1 版本的部署示例文件。deploy.php.sample_2_2
: Magento 2.2 版本的部署示例文件。deploy.php.sample_2_2_5
: Magento 2.2.5 版本的部署示例文件。grumphp.yml
: GrumPHP 配置文件。phpcs.xml
: PHP CodeSniffer 配置文件。phpmd.xml
: PHP Mess Detector 配置文件。
2. 项目的启动文件介绍
项目的启动文件是 deploy.php
,它包含了部署的主要配置和逻辑。以下是 deploy.php
文件的基本结构和功能介绍:
<?php
namespace Deployer;
require 'recipe/magento2.php';
// 配置项
set('repository', 'git@github.com:user/repo.git');
set('shared_files', [...]);
set('shared_dirs', [...]);
set('writable_dirs', [...]);
// 任务定义
task('deploy', [
'deploy:prepare',
'deploy:release',
'deploy:update_code',
'deploy:shared',
'deploy:writable',
'deploy:symlink',
'cleanup',
])->desc('部署任务');
// 服务器配置
host('example.com')
->set('deploy_path', '/var/www/example.com');
// 启动部署
after('deploy:failed', 'deploy:unlock');
启动文件介绍
require 'recipe/magento2.php';
: 引入 Magento 2 的部署脚本。set('repository', '...');
: 设置 Git 仓库地址。set('shared_files', [...]);
: 设置共享文件列表。set('shared_dirs', [...]);
: 设置共享目录列表。set('writable_dirs', [...]);
: 设置可写目录列表。task('deploy', [...]);
: 定义部署任务流程。host('example.com');
: 配置目标服务器。after('deploy:failed', 'deploy:unlock');
: 部署失败后的处理。
3. 项目的配置文件介绍
项目的配置文件主要位于 config/recipe/
目录下,以下是一些关键配置文件的介绍:
config/recipe/magento2.php
这个文件包含了 Magento 2 部署的具体配置,如数据库配置、静态内容部署等。
<?php
namespace Deployer;
// Magento 2 配置
set('magento_dir', '{{release_path}}');
set('shared_files', [
'app/etc/env.php',
'var/.maintenance.ip',
]);
set('shared_dirs', [
'var/log',
'var/report',
'var/export',
'var/import',
'var/import_history',
'var/session',
'var/tmp',
'pub/media