Magento2开发教程NO5-配置指南汇总-缓存-安全设置-命令行配置等(下篇)

作者:admi... 点击数: 0 收藏到会员中心
最后编辑时间: 2020-02-23 18:52

七 配置和使用Varnish
Varnish 解决方案概述
Varnish 缓存是一个开放源代码的Web应用程序加速器.
Magento 2 支持Varnish 3.0.5以上的版本.
magento 2 强烈建议使用Varnish 代替默认的. full-page 缓存,因为他比默认的缓存快很多。

Varnish 解析图

varnish_basic

过程概述
本主题讨论如何使用 少的参数和测试来安装Varnish。然后你可以从Magento 2后台导出一个Varnish配置。
这个过程可以概括如下:
通过访问任何magento页面如果你得到HTTP响应头表明Varnish工作测试成功
安装magento 2 登录后台创建一个Varnish 配置文件.
覆盖原先的Varnish配置文件.
再次测试一切。
如过 <Magento 2 安装目录>/var/page_cache 目录下面什么都没有,表示Varnish 配置成功!


@安装Varnish
有关安装Varnish的更多信息,请网上搜索教程。
确认你的Varnish版本
输入下面的命令:
varnishd -V
示例:
varnishd (varnish-4.0.3 revision b8c4a34)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2014 Varnish Software AS

@配置Varnish 和 web服务器



配置您的web服务器

配置Web服务器监听默认端口80以外的端口,因为Varnish直接响应传入的HTTP请求,而不是web服务器。
在后面的章节中,我们使用端口8080作为一个例子.
改变Apache 2.2监听端口:

  1. 打开 /etc/httpd/conf/httpd.conf 在文本编辑器中.

  2. 查找Listen 指令.

  3. 将端口的值更改为 8080.

  4. 保存更改 httpd.conf .

修改Varnish系统配置
  1. 打开 /etc/sysconfig/varnish (或 /etc/default/varnish 在 Debian 和 Ubuntu) 在文本编辑器中.

  2. 设置Varnish 端口为 80:

    VARNISH_LISTEN_PORT=80


  3. ## Alternative 1, Minimal configuration, no VCL #DAEMON_OPTS="-a :6081 \ #             -T localhost:6082 \ #             -b localhost:8080 \ #             -u varnish -g varnish \ #             -s file,/var/lib/varnish/varnish_storage.bin,1G" ## Alternative 2, Configuration with VCL #DAEMON_OPTS="-a :6081 \ #             -T localhost:6082 \ #             -f /etc/varnish/default.vcl \ #             -u varnish -g varnish \ #             -S /etc/varnish/secret \ #             -s file,/var/lib/varnish/varnish_storage.bin,1G"


  4. 保存更改 /etc/sysconfig/varnish .

@配置Magento 2使用Varnish



配置Magento使用Varnish :

  1. 用管理员身份登录magento 2.

  2. 点击 STORES > Configuration > ADVANCED > System > Full Page Cache

  3. 从缓存应用列表中点击Varnish 缓存

  4. 点击 保存配置.

  5. 单击一个导出按钮以创建 default.vcl 你可以使用 Varnish.
    如果使用Varnish 4, 点击 Export VCL for Varnish 4
    如下图:

    config_varnish_admin


  6. 代替之前的 default.vcl

@ 后的验证



验证HTTP响应头

当你访问magento页面时使用curl或其他工具查看HTTP响应头

确保你使用的magento 2 开发者模式; 否则,你将无法看到。

例如,

curl -I -v --location-trusted 'http://192.0.2.55/magento2'


X-Magento-Cache-Control: max-age=86400, public, s-maxage=86400 Age: 0 X-Magento-Cache-Debug: MISS


@503(Backend Fetch Failed后端获取失败)



如果Magento2缓存标签使用长度超过8192个字符,你可以看到HTTP 503(后台读取失败)在浏览器中的错误。这些错误可能显示如下:

Error 503 Backend fetch failed Backend fetch failed


为了解决这个问题,修改varnish配置文件如下:

  1. root 用户打开:

    • CentOS 6: /etc/sysconfig/varnish

    • CentOS 7: /etc/varnish/varnish.params

    • Ubuntu: /etc/default/varnish

  2. 搜索 http_resp_hdr_len 参数.

  3. 如果参数不存在增加 thread_pool_max.

  4. 设置 http_resp_hdr_len

    示例:

    -p http_resp_hdr_len=64000 \


    代码片段:

    # DAEMON_OPTS is used by the init script. DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \      -f ${VARNISH_VCL_CONF} \      -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \      -p thread_pool_min=${VARNISH_MIN_THREADS} \      -p thread_pool_max=${VARNISH_MAX_THREADS} \      -p http_resp_hdr_len=64000 \      -S ${VARNISH_SECRET_FILE} \      -s ${VARNISH_STORAGE}"


八 Magento 2多个网站或商店
Magento 2多个网站或商店介绍
Magento 2安装一套程序可以让你启动多个网站或商店,使用不同的视图:
不同的语言
不同的域名
不同的产品分类
这种灵活的解决方案使一套Magento后台程序管理和显示不同的商店.

@后台设置多个网站,商店和商店视图

1: 创建产品根目录
  1. 登录到Magento 2后台.

  2. 点击 Products > Categories.

  3. 点击 Add Root Category.

  4. Category Name 输入分类名称.

  5. 确保 Enable Category 设置 Yes.

    如下图:


     

  6. 点击 Save.

2: 创建 websites(网站)
  1. 点击 Stores > 设置 > All Stores.

  2. 在商店页面, 点击 Create Website.

    如下图:


     

    • Name 字段: 输入网站名称.

    • Code 字段: 输入唯一标识

    • Sort Order 字段: 设置一个数字网站排序.

  3. 点击 Save Web Site.

3: 创建商店
  1. 点击 Stores > 设置 > All Stores.

  2. 在商店页面, 点击 Create Store.

    如下图:


     

  3. 点击 Save Store.

4: 创建商店视图
  1. 点击 Stores > 设置 > All Stores.

  2. 在商店页面, 点击 Create Store.

    如下图:


     

  3. 点击 Save Store View.

5: 更改网站的基础网址
  1. 在管理页面, 点击 Stores > 设置 > Configuration > General > Web.




  1.  

  2. 点击 Save Config.

6: 添加商店code



  • 点击 Save Config.

九 设置自定义定时任务(cron)和计划组(cron group)


@配置自定义定时任务(cron )和计划组(cron group)教程

本教程教你一步一步的创建一个自定义的cron job(定时任务),任选一个cron group。

1: 获取示例模块
  1. 登录到magento服务器,切换到 Magento 2文件系统所有者.

  2. 克隆 magento2 样本库.

    示例

    cd ~ git clone git@github.com:magento/magento2-samples.git


  3. 创建一个目录来拷贝示例代码:

    mkdir -p /var/www/html/magento2/app/code/Magento/SampleMinimal


  4. 复制示例模块代码:

    cp -r ~/magento2-samples/sample-module-minimal/* /var/www/html/magento2/app/code/Magento/SampleMinimal


  5. 验证文件是否正确复制:

    ls -al /var/www/html/magento2/app/code/Magento/SampleMinimal


    You should see the following result:

    drwxrwsr-x.   4 magento_user apache  4096 Oct 30 13:19 . drwxrwsr-x. 121 magento_user apache  4096 Oct 30 13:19 .. -rw-rw-r--.   1 magento_user apache   372 Oct 30 13:19 composer.json drwxrwsr-x.   2 magento_user apache  4096 Oct 30 13:19 etc -rw-rw-r--.   1 magento_user apache 10376 Oct 30 13:19 LICENSE_AFL.txt -rw-rw-r--.   1 magento_user apache 10364 Oct 30 13:19 LICENSE.txt -rw-rw-r--.   1 magento_user apache  1157 Oct 30 13:19 README.md -rw-rw-r--.   1 magento_user apache   270 Oct 30 13:19 registration.php drwxrwsr-x.   3 magento_user apache  4096 Oct 30 13:19 Test


  6. 更新Magento 2 数据库和schema:

    php /var/www/html/magento2/bin/magento setup:upgrade


2: 验证样本模块
  1. 用管理员身份登录magento 2后台

  2. 点击 Stores > Configuration > ADVANCED > Advanced.

  3. 如下图:


    Verify your sample module


3: 创建一个类来运行cron
  1. 为类创建目录并更改目录:

    mkdir /var/www/html/magento2/app/code/Magento/SampleMinimal/Cron && cd /var/www/html/magento2/app/code/Magento/SampleMinimal/Cron


  2. 在目录中创建了一个名为Test.php的文件:

<?php namespace Magento\SampleMinimal\Cron; use \Psr\Log\LoggerInterface; class Test {     protected $logger;     public function __construct(LoggerInterface $logger) {         $this->logger = $logger;     } /**    * Write to system.log    *    * @return void    */     public function execute() {         $this->logger->info('Cron Works');     } }
4: 创建 crontab.xml

/var/www/html/magento2/app/code/Magento/SampleMinimal/etc 目录创建 crontab.xml :

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">     <group id="default">         <job name="custom_cronjob" instance="Magento\SampleMinimal\Cron\Test" method="execute">             <schedule>* * * * *</schedule>         </job>     </group> </config>
5: 验证cron job
  1. 运行 Magento cron jobs:

    php /var/www/html/magento2/bin/magento cron:run


  2. 输入 magento cron:run 命令

  3. 运行查询sql SELECT * from cron_schedule WHERE job_code like '%custom%' 如下:

    查询结果:

    +-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+ | schedule_id | job_code       | status  | messages | created_at          | scheduled_at        | executed_at         | finished_at         | +-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+ |        3670 | custom_cronjob | success | NULL     | 2016-11-02 09:38:03 | 2016-11-02 09:38:00 | 2016-11-02 09:39:03 | 2016-11-02 09:39:03 | |        3715 | custom_cronjob | success | NULL     | 2016-11-02 09:53:03 | 2016-11-02 09:53:00 | 2016-11-02 09:54:04 | 2016-11-02 09:54:04 | |        3758 | custom_cronjob | success | NULL     | 2016-11-02 10:09:03 | 2016-11-02 10:09:00 | 2016-11-02 10:10:03 | 2016-11-02 10:10:03 | |        3797 | custom_cronjob | success | NULL     | 2016-11-02 10:24:03 | 2016-11-02 10:24:00 | 2016-11-02 10:25:03 | 2016-11-02 10:25:03 | +-------------+----------------+---------+----------+---------------------+---------------------+---------------------+---------------------+


    1. 输入 mysql -u magento -p

    2. 输入 use magento;

    3. 输入 SELECT * from cron_schedule WHERE job_code like '%custom%';

6: 设置自定义 cron group
  1. 打开 crontab.xml 在文本编辑器.

  2. 更改 <group id="default"><group id="custom_crongroup">

  3. 保存.

  4. 创建 /var/www/html/magento2/app/code/Magento/SampleMinimal/etc/cron_groups.xml 具有以下内容:

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/cron_groups.xsd">     <group id="custom_crongroup">         <schedule_generate_every>1</schedule_generate_every>         <schedule_ahead_for>4</schedule_ahead_for>         <schedule_lifetime>2</schedule_lifetime>         <history_cleanup_every>10</history_cleanup_every>         <history_success_lifetime>60</history_success_lifetime>         <history_failure_lifetime>600</history_failure_lifetime>     </group> </config>
7: 验证 cron group
  1. 运行cron job 在Magento自定义组:

    php /var/www/html/magento2/bin/magento cron:run --group="custom_crongroup"


    至少运行两次命令。

  2. 清除magento 2缓存:

    php /var/www/html/magento2/bin/magento cache:clean


  3. 用管理员身份登录到后台.

  4. 点击 Stores > Configuration > Advanced > System.

  5. 在右窗格中展开 Cron.

    如下图:


    Your custom cron group


    十 配置数据库分析器(profiler)

    关于数据库分析器(profiler)

    Magento数据库分析器显示页面上执行的所有查询,包括每个查询的时间和什么样的参数被执行。

    1: 修改部署配置

    修改<Magento 2 安装目录>/app/etc/env.php 将下列代码添加到 magento2/blob/2.0/lib/internal/Magento/Framework/DB/Profiler.php:

            'profiler' => [             'class' => '\Magento\Framework\DB\Profiler',             'enabled' => true,         ],

    示例如下:

     'db' =>   array (     'table_prefix' => '',     'connection' =>     array (       'default' =>       array (         'host' => 'localhost',         'dbname' => 'magento',         'username' => 'magento',         'password' => 'magento',         'model' => 'mysql4',         'engine' => 'innodb',         'initStatements' => 'SET NAMES utf8;',         'active' => '1',         'profiler' => [             'class' => '\Magento\Framework\DB\Profiler',             'enabled' => true,         ],       ),     ),   ),
    2: 配置输出
    /** @var \Magento\Framework\App\ResourceConnection $res */ $res = \Magento\Framework\AppObjectManager::getInstance()->get('Magento\Framework\App\ResourceConnection'); /** @var Magento\Framework\DB\Profiler $profiler */ $profiler = $res->getConnection('read')->getProfiler(); echo "<table cellpadding='0' cellspacing='0' border='1'>"; echo "<tr>"; echo "<th>Time <br/>[Total Time: ".$profiler->getTotalElapsedSecs()." secs]</th>"; echo "<th>SQL [Total: ".$profiler->getTotalNumQueries()." queries]</th>"; echo "<th>Query Params</th>"; echo "</tr>"; foreach ($profiler->getQueryProfiles() as $query) {     /** @var Zend_Db_Profiler_Query $query*/     echo '<tr>';     echo '<td>', number_format(1000 * $query->getElapsedSecs(), 2), 'ms', '</td>';     echo '<td>', $query->getQuery(), '</td>';     echo '<td>', json_encode($query->getQueryParams()), '</td>';     echo '</tr>'; } echo "</table>";
    3: 查看输出结果

    访问magento 2 的任何页面,示例结果如下图:


    Sample database profiler results



十一 自定义日志
日志概述
日志提供可见性Magento系统过程;例如,调试信息,帮助您了解当发生错误或什么导致的误差。
本课题重点研究基于文件的记录,虽然Magento提供了灵活性,存储在数据库。

@Magento2日志的更多细节
Monolog
Magento 2 使用 PSR-3 标准. By default默认情况下, Magento 2 使用 Monolog. Monolog 实现 Psr\Log\LoggerInterface接口,在di.xml配置文件中.
开始使用日志

要开始使用日志,您必须得到 \Psr\Logger\LoggerInterface

示例 – 数据库日志活动

记录数据库日志,使用Magento\Framework\DB\LoggerInterface, 其中有两种实现方案:

Logs nothing (默认): Magento\Framework\DB\Logger\Quiet
日志保存在 var/log 目录: Magento\Framework\DB\Logger\File

添加下面的块以配置基于文件的日志:

<type name=”Magento\Framework\DB\Logger\File”>
<arguments>
<argument name=”logAllQueries” xsi:type=”boolean”>true</argument>
<argument name=”debugFile” xsi:type=”string”>log/db.log</argument>
</arguments>
</type>

另一种方式如下:
class SomeModel
{
private $logger;

public function __construct(\Psr\Logger\LoggerInterface $logger)
{
$this->logger = $logger;
}

public function doSomething()
{
try {
//do something
} catch (\Exception $e) {
$this->logger->critical(‘Error message’, [‘exception’ => $e]);
}
}
}

十二 如何定位session文件
定位你的Session 存储
本主题讨论如何定位会话文件的存储位置。Magento的应用程序使用以下逻辑存储会话文件:
如果你配置redis,会话存储在redis服务器;有关更多信息,参见 使用 Redis 在页面缓存或Session 存储.
如果使用的是默认的 file-based Session 存储,session文件存储如下:
目录定义在 env.php
目录定义在 php.ini
<Magento 2 安装目录>/var/session 目录

env.php 示例
<Magento 2 安装目录>/app/etc/env.php 示例代码片段:
‘session’ =>
array (
‘save’ => ‘files’,
‘save_path’ => ‘/var/www/session’,
),

前面的示例存储会话文件在 /var/www/session
php.ini 示例
打开php.ini 文件,查找 session.save_path.

十三 Magento 2的生产(上线)部署
本主题提供了在生产服务器上使用命令行部署更新Magento 2。
推荐使用系统升级在Magento 2系统管理中.
你安装Magento使用 Composer 或 compressed archive.

@部署步骤

  1. 登录到magento 2服务器,切换到Magento 2文件系统所有者.

  2. 改变目录到Magento安装目录:

     cd <Magento安装目录>


  3. 使用命令启用维护(maintenance)模式:

     php bin/magento maintenance:enable


  4. 更新magento 2:

     composer require <package> <version> --no-update


    示例:

    • magento/product-community-edition

    • magento/product-enterprise-edition

  5. 更新magento2 组件:

     composer update


  6. 更新数据库结构和数据:

     php bin/magento setup:upgrade


  7. 编译代码:

     php bin/magento setup:di:compile


  8. 部署静态内容 :

     php bin/magento setup:static-content:deploy


  9. 退出:

     php bin/magento maintenance:disable



请登录已经激活账号继续浏此文章所有内容!
会员中心

已经有帐号啦 !赶紧同小伙伴们愉快地玩耍吧

立即登录

还没有账号? 马上注册一个新帐户

注册账号
内容说明:
如您需要转载本文请保留以下信息是对作者发文的支持与尊重:

Magento2开发教程NO5-配置指南汇总-缓存-安全设置-命令行配置等(下篇) 来源于 https://www.magentola.com/news-read-47-2.html
上一篇:Magento2开发教程NO5-配置指南汇总-缓存-安全设置-命令行配置等(上篇)
下一篇:Magento2开发教程NO6-Magento2开发编码规范
相关内容
产品推荐