请选择 进入手机版 | 继续访问电脑版

AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
 谷歌+必应一级代理商开户 
招募合伙人: 精通原生广告BINOM TRACKER 60% OFF!4000万非常干净 <住宅代理IP>
VMLogin防关联多登+AMZ测评FB养号ADPLEXITY + ADVERTCNPropellerAds - 你的流量来源7200W全球动态不重复住宅IP代理
东南亚COD专线物流 签收返款AMZ测评/FB养号多登首选AdsPowerGG/Bing特约供应商直供开户比Adplexity还好用的Spy工具
收FB不限额账号联系QQ:668554回馈论坛特赠送500个耐用号实力:收一切印度地区数据Facebook黒五广告投放系统
FB 交流群 623607收一切越南流量,多种方式合作!供应BM250/BM50(新技术)大牛都在用的虚拟卡渠道-专供FB
FB欧美企业认证BM预定中(10个量/天)出售FB等各类社交媒体账号Facebook双重验证号+BM连接FB精准引流获客, 低价格、高质量
大量fb账号出售,各种类型都有新老BM号+SPY/adp团购提供Taboola/Reddit/Twitter账户《Affiliate Marketing完全指南》订购
大量收FB广告号原创Cloak 技术指导不满意退全额广告位出租 
查看: 472|回复: 8

[其他] Magento2.4实战百万商品之一:安装篇

[复制链接]

2

主题

4

广告币

10

积分

新手上路

Rank: 1

积分
10
发表于 2020-8-27 23:17:12 | 显示全部楼层 |阅读模式
本帖最后由 suwubee 于 2020-8-27 23:24 编辑

  • 前言:Magento2.4.0已经发布,为了重新认识这个越来越复杂的系统,决定从安装开始,边摸索边进行。


  • 硬件: 母鸡为Windows的R5-3600,64G, 512*2 NVME,通过hyper-v虚拟出3台内网互通的虚拟机,且全新安装Centos7.8.2003 Minimal


  • 架构: 1台机器配置Web、Mysql、Redis,作为主服务器),第2台机器配置ElasticSearch,第3台机器配置Varnish

            这三台机器的配置、内网IP和hostname分别为
            6核/16G,192.168.1.1,server1
            1核/4G,192.168.1.2,server2
            1核/4G,192.168.1.3,server3

  • 首先安装2号机器的ElasticSearch:

升级系统,安装Java
  1. yum -y updateyum -y install java-1.8.0-openjdk  java-1.8.0-openjdk-devel
复制代码

配置Java
  1. cat <<EOF | sudo tee /etc/profile.d/java8.sh
  2. export JAVA_HOME=/usr/lib/jvm/jre-openjdk
  3. export PATH=\$PATH:\$JAVA_HOME/bin
  4. export CLASSPATH=.:\$JAVA_HOME/jre/lib:\$JAVA_HOME/lib:\$JAVA_HOME/lib/tools.jar
  5. EOF
  6. source /etc/profile.d/java8.sh
复制代码

配置elasticsearch安装源
  1. cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
  2. [elasticsearch-7.x]
  3. name=Elasticsearch repository for 7.x packages
  4. baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
  5. gpgcheck=1
  6. gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
  7. enabled=1
  8. autorefresh=1
  9. type=rpm-md
  10. EOF
复制代码

安装elasticsearch
    1. yum -y install elasticsearch-oss
    复制代码

修改配置允许远程访问
  1. /etc/elasticsearch/elasticsearch.yml
  2. 修改为如下
  3. network.host: 0.0.0.0
  4. cluster.initial_master_nodes: ["node-1"]
复制代码

启动elasticsearch并开机自启动
  1. systemctl enable --now elasticsearch
复制代码

查看是否正常启动
  1. systemctl status elasticsearch
复制代码

如果看到Active: active (running) 则是正常启动了。
此外需要开放防火墙的9200端口。由于我这边是内网,所以直接把firewalld关闭,禁用自启动了。
  1. systemctl disable --now firewalld
复制代码

再次测试是否运行,也可以在server1和server3上测试是否允许外部访问
  1. [[email protected] network-scripts]# curl http://127.0.0.1:9200
  2. {
  3.   "name" : "server2",
  4.   "cluster_name" : "elasticsearch",
  5.   "cluster_uuid" : "G2Jh9gIeSfK8D_D8hEYfOg",
  6.   "version" : {
  7.     "number" : "7.9.0",
  8.     "build_flavor" : "oss",
  9.     "build_type" : "rpm",
  10.     "build_hash" : "a479a2a7fce0389512d6a9361301708b92dff667",
  11.     "build_date" : "2020-08-11T21:36:48.204330Z",
  12.     "build_snapshot" : false,
  13.     "lucene_version" : "8.6.0",
  14.     "minimum_wire_compatibility_version" : "6.8.0",
  15.     "minimum_index_compatibility_version" : "6.0.0-beta1"
  16.   },
  17.   "tagline" : "You Know, for Search"
  18. }
复制代码

  • 安装3号机器varnish6.4.0:

一开始在jemalloc上折腾了很久,后来发现直接用epel源就顺利解决了
  1. yum install -y autoconf epel-release pygpgme yum-utils
复制代码

配置安装源
  1. cat <<EOF | sudo tee /etc/yum.repos.d/varnishcache_varnish64.repo
  2. [varnishcache_varnish64]
  3. name=varnishcache_varnish64
  4. baseurl=https://packagecloud.io/varnishcache/varnish64/el/7/$basearch
  5. repo_gpgcheck=1
  6. gpgcheck=0
  7. enabled=1
  8. gpgkey=https://packagecloud.io/varnishcache/varnish64/gpgkey
  9. sslverify=1
  10. sslcacert=/etc/pki/tls/certs/ca-bundle.crt
  11. metadata_expire=300

  12. [varnishcache_varnish64-source]
  13. name=varnishcache_varnish64-source
  14. baseurl=https://packagecloud.io/varnishcache/varnish64/el/7/SRPMS
  15. repo_gpgcheck=1
  16. gpgcheck=0
  17. enabled=1
  18. gpgkey=https://packagecloud.io/varnishcache/varnish64/gpgkey
  19. sslverify=1
  20. sslcacert=/etc/pki/tls/certs/ca-bundle.crt
  21. metadata_expire=300
  22. EOF
复制代码

清除缓存,安装Varnish6.4.0
  1. sudo yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish64'
  2. yum -y install varnish
复制代码


启动并开启自启动
  1. systemctl enable --now varnish
复制代码

检查varnish状态
  1. systemctl status varnish
复制代码

看到Active: active (running)则说明启动成功
同样的由于内网,3号机器也关闭了防火墙
  1. systemctl disable --now firewalld<div align="left"></div>
复制代码

后续在Magento2.4安装好之后,后台Store - Configuration - System - Full Page Cache配置Varnish参数,下载vcl配置文件。然后替换/etc/varnish/default.vcl,并重启即可。
varnish可以通过命令varnishstat来查看运行状态

  • 安装1号机器Magento2.4:

为了这篇文章写得方便,这里使用目前比较流行的宝塔面板,如果是我自己使用的话,首选cPanel+Cloudlinux,其次用Vestacp。
安装宝塔
  1. yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
复制代码

安装后选择安装软件、
  1. Apache 2.4.46
  2. MySQL 8.0.20
  3. PHP 7.4.9
  4. Redis 6.0.6
复制代码

重要】安装完成后安装PHP扩展,ionCube、fileinfo、opcache、redis、intl、xsl,并且修改PHP的memory_limit为1536M,另外务必别忘了解除禁用函数putenv,proc_open,openlog,syslog,pcntl_signal。

然后进入宝塔面板,创建网站和数据库,并删除网站目录下的所有文件,避免安装时候文件重复无法覆盖。
提前在https://marketplace.magento.com/customer/accessKeys/创建一个应用,获取Public Key和Private Key,使用composer安装,当然也可以登录这个页面下载源码https://magento.com/tech-resources/download

在composer的时候需要使用到unzip,因此预先安装好,并且通过ssh进入到网站主目录
  1. yum install -y unzipcd /www/wwwroot/demo.com
复制代码

这里有三个办法安装Magento2.4主程序
【推荐】方法一:单文件安装

在主目录生成composer.json文件
  1. cat <<EOF | sudo tee /www/wwwroot/demo.com/composer.json
  2. {
  3.     "name": "magento/project-community-edition",
  4.     "description": "eCommerce Platform for Growth (Community Edition)",
  5.     "type": "project",
  6.     "license": [
  7.         "OSL-3.0",
  8.         "AFL-3.0"
  9.     ],
  10.     "config": {
  11.         "preferred-install": "dist",
  12.         "sort-packages": true
  13.     },
  14.     "require": {
  15.         "magento/product-community-edition": "2.4.0",
  16.         "magento/composer-root-update-plugin": "~1.0"
  17.     },
  18.     "require-dev": {
  19.         "allure-framework/allure-phpunit": "~1.2.0",
  20.         "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
  21.         "friendsofphp/php-cs-fixer": "~2.16.0",
  22.         "lusitanian/oauth": "~0.8.10",
  23.         "magento/magento-coding-standard": "*",
  24.         "magento/magento2-functional-testing-framework": "^3.0",
  25.         "pdepend/pdepend": "~2.7.1",
  26.         "phpcompatibility/php-compatibility": "^9.3",
  27.         "phpmd/phpmd": "^2.8.0",
  28.         "phpstan/phpstan": ">=0.12.3 <=0.12.23",
  29.         "phpunit/phpunit": "^9",
  30.         "sebastian/phpcpd": "~5.0.0",
  31.         "squizlabs/php_codesniffer": "~3.5.4"
  32.     },
  33.     "conflict": {
  34.         "gene/bluefoot": "*"
  35.     },
  36.     "autoload": {
  37.         "psr-4": {
  38.             "Magento\\\\Framework\\\": "lib/internal/Magento/Framework/",
  39.             "Magento\\\\Setup\\\": "setup/src/Magento/Setup/",
  40.             "Magento\\\": "app/code/Magento/",
  41.             "Zend\\\\Mvc\\\\Controller\\\": "setup/src/Zend/Mvc/Controller/"
  42.         },
  43.         "psr-0": {
  44.             "": [
  45.                 "app/code/",
  46.                 "generated/code/"
  47.             ]
  48.         },
  49.         "files": [
  50.             "app/etc/NonComposerComponentRegistration.php"
  51.         ],
  52.         "exclude-from-classmap": [
  53.             "**/dev/**",
  54.             "**/update/**",
  55.             "**/Test/**"
  56.         ]
  57.     },
  58.     "autoload-dev": {
  59.         "psr-4": {
  60.             "Magento\\\\Sniffs\\\": "dev/tests/static/framework/Magento/Sniffs/",
  61.             "Magento\\\\Tools\\\": "dev/tools/Magento/Tools/",
  62.             "Magento\\\\Tools\\\\Sanity\\\": "dev/build/publication/sanity/Magento/Tools/Sanity/",
  63.             "Magento\\\\TestFramework\\\\Inspection\\\": "dev/tests/static/framework/Magento/TestFramework/Inspection/",
  64.             "Magento\\\\TestFramework\\\\Utility\\\": "dev/tests/static/framework/Magento/TestFramework/Utility/",
  65.             "Magento\\\\PhpStan\\\": "dev/tests/static/framework/Magento/PhpStan/"
  66.         }
  67.     },
  68.     "version": "2.4.0",
  69.     "minimum-stability": "stable",
  70.     "repositories": [
  71.         {
  72.             "type": "composer",
  73.             "url": "https://repo.magento.com/"
  74.         }
  75.     ],
  76.     "extra": {
  77.         "magento-force": "override"
  78.     }
  79. }
  80. EOF
复制代码

方法二:composer获取源码
  1. composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.0
复制代码

#提示username输入Public Key,password输入Private Key,是否创建auth.json,输入Y回车。
这个时候安装的数据都在/www/wwwroot/demo.com/project-community-edition目录下,我们需要转移文件到网站根目录,用命令行迁移容易丢失.htaccess等文件,建议用文件管理器迁移。

【推荐】方法三:上传源码
在官网https://magento.com/tech-resources/download下载源码,并且解压到主目录。

上述三种办法任选其一,随后在主目录执行
  1. composer install
复制代码

composer安装完成后执行magento安装,Magento2.4.0已取消网页安装,将下列命令行关于数据库信息和域名信息修改后填入,请注意ElasticSearch服务器是必需的
  1. bin/magento setup:install --base-url=http://www.demo.com/ \
  2. --db-host=localhost --db-name=demo_com --db-user=demo_com --db-password=MmZ8asfdjk \
  3. --admin-firstname=Magento --admin-lastname=User [email protected] \
  4. --admin-user=admin --admin-password=demoadmin88 --language=en_US \
  5. --currency=USD --timezone=America/Chicago --use-rewrites=1 \
  6. --search-engine=elasticsearch7 --elasticsearch-host=server2 \
  7. --elasticsearch-port=9200
复制代码

执行完成后显示对应目录为/admin_31b6ig
  1. [SUCCESS]: Magento installation complete.
  2. [SUCCESS]: Magento Admin URI: /admin_31b6ig
  3. Nothing to import.
复制代码

因为我们一直都是root用户执行命令,因此需要最后重置一下文件权限,此外Magento2.4.0强制开启了二次验证,我们这里关掉,随后刷新静态资源、索引和缓存
  1. chown -R www:www /www/wwwroot/demo.com
  2. bin/magento module:disable Magento_TwoFactorAuth
  3. bin/magento setup:upgrade
  4. bin/magento setup:di:compile
  5. bin/magento setup:static-content:deploy -f
  6. bin/magento indexer:reindex
  7. bin/magento cache:flush
复制代码

如果遇到文件读写权限的问题,再执行一遍权限
  1. chown -R www:www /www/wwwroot/demo.com
复制代码

安装完成后给Magento跑个分,不知道啥时候出的这个功能,需要注意这里要给mysql的root权限,或者直接改app/etc/env.php中的数据库用户为root,跑分文件位于setup/performance-toolkit/profiles/ce/目录下,我们选择一个中等配置进行测试,下面可以看到这个配置中测试生成了24000个简单产品,50000个订单。
  1. [[email protected] demo.com]# bin/magento setup:performance:generate-fixtures /www/wwwroot/demo.com/setup/performance-toolkit/profiles/ce/medium.xml
  2. Generating profile with following params:
  3. |- Admin Users: 50
  4. |- Websites: 3
  5. |- Store Groups Count: 3
  6. |- Store Views Count: 3
  7. |- Categories: 300
  8. |- Attribute Sets (Default): 3
  9. |- Attribute Sets (Extra): 30
  10. |- Simple products: 24000
  11. |- Configurable products: 640
  12. |- Product images: 1000, 3 per product
  13. |- Customers: 2000
  14. |- Cart Price Rules: 20
  15. |- Catalog Price Rules: 20
  16. |- Coupon Codes: 20
  17. |- Orders: 50000
  18. Config Changes...  done in 00:00:00
  19. Generating admin users...  done in 00:00:02
  20. Generating websites, stores and store views...  done in 00:00:02
  21. Generating categories...  done in 00:00:11
  22. Generating attribute sets...  done in 00:00:10
  23. Generating simple products...  done in 00:01:55
  24. Generating configurable EAV variations...  done in 00:00:00
  25. Generating bundle products...  done in 00:00:00
  26. Generating configurable products...  done in 00:00:51
  27. Generating images...  done in 00:00:44
  28. Generating customer groups...  done in 00:00:00
  29. Generating customers...  done in 00:00:11
  30. Generating cart price rules...  done in 00:00:03
  31. Generating catalog price rules...  done in 00:00:03
  32. Generating tax rates...  done in 00:04:05
  33. Generating tax rules...  done in 00:00:00
  34. Generating coupon codes...  done in 00:00:00
  35. Generating orders...  done in 00:03:36
  36. Indexers Mode Changes...  done in 00:00:03
  37. Design Config Grid index has been rebuilt successfully in 00:00:00
  38. Customer Grid index has been rebuilt successfully in 00:00:01
  39. Category Products index has been rebuilt successfully in 00:00:15
  40. Product Categories index has been rebuilt successfully in 00:00:00
  41. Catalog Rule Product index has been rebuilt successfully in 00:00:19
  42. Product EAV index has been rebuilt successfully in 00:00:20
  43. Stock index has been rebuilt successfully in 00:00:16
  44. Inventory index has been rebuilt successfully in 00:00:00
  45. Catalog Product Rule index has been rebuilt successfully in 00:00:00
  46. Product Price index has been rebuilt successfully in 00:00:28
  47. Catalog Search index has been rebuilt successfully in 00:03:55
  48. Total execution time: 00:17:53
复制代码

整体数据比较满意,毕竟4万产品和5万订单在这么短的时间内生成处理就已经相当不错了,而且这个服务器还只是入门性能。
跑完分后访问前后台还是有报错,没办法,再来执行一遍
  1. bin/magento setup:upgrade
  2. bin/magento setup:di:compile
  3. bin/magento setup:static-content:deploy -f
  4. bin/magento indexer:reindex
  5. bin/magento cache:flush
复制代码

最后配置varnish,在后台依次进入
Store - Configuration - System - Full Page Cache
设置Backend host源IP,注意:我们这里是将Varnish分离出去了,因为实际情况中鉴于各种BUG以及对SSL兼容性的问题,最终我们将不使用varnish,本文仅作安装配置说明,后面在关于性能优化方面会具体为什么不用varnish以及varnish的替代方案。
另外设置varnish为缓存后会存在前台导航菜单丢失的情况,最简单的办法是修改
/vendor/magento/module-theme/view/frontend/layout/default.xml中66行,将ttl="3600"删除即可。
配置Varnish后前台丢导航

到这里,整个环境安装完成。
Magento2.4.0首次登录后台显示
后台40000产品,非常流畅。

得益于ElasticSearch7.6,前台搜索也非常棒!

后续计划
第二篇将通过一系列工具演练产品的采集和上传,
第三篇会通过一些插件进而完善电商的各个运营环节,
第四篇会注重优化前台页面的速度性能,
后续待定...
【我是原作者,转发公众号至广告中国,请勿转载。】

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
相关帖子
回复

使用道具 举报

1

主题

60

广告币

133

积分

初级会员

Rank: 2

积分
133

社区QQ达人

发表于 2020-8-28 08:42:32 | 显示全部楼层
4W  SKU还是SPU,这么多产品上新索引大概多久啊,就怕后期慢

点评

跑分那一段都有时间,4w目前我刷新大概1-2分钟吧。后期会实战100w以上的数据。  详情 回复 发表于 2020-8-28 14:33
硬件到位就好,出了名的吃硬件  详情 回复 发表于 2020-8-28 11:28
回复 支持 反对

使用道具 举报

47

主题

588

广告币

847

积分

中级会员

Rank: 3Rank: 3

积分
847

社区QQ达人

发表于 2020-8-28 11:28:47 | 显示全部楼层
user 发表于 2020-8-28 08:42
4W  SKU还是SPU,这么多产品上新索引大概多久啊,就怕后期慢

硬件到位就好,出了名的吃硬件

点评

看架构吧,小型的不合适,大的产品多的也只能用跟这个了。这个母鸡我才300多一个月。  详情 回复 发表于 2020-8-28 14:58
回复 支持 反对

使用道具 举报

2

主题

4

广告币

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2020-8-28 14:33:17 | 显示全部楼层
user 发表于 2020-8-28 08:42
4W  SKU还是SPU,这么多产品上新索引大概多久啊,就怕后期慢

跑分那一段都有时间,4w目前我刷新大概1-2分钟吧。后期会实战100w以上的数据。
Design Config Grid index has been rebuilt successfully in 00:00:00
Customer Grid index has been rebuilt successfully in 00:00:01
Category Products index has been rebuilt successfully in 00:00:15
Product Categories index has been rebuilt successfully in 00:00:00
Catalog Rule Product index has been rebuilt successfully in 00:00:19
Product EAV index has been rebuilt successfully in 00:00:20
Stock index has been rebuilt successfully in 00:00:16
Inventory index has been rebuilt successfully in 00:00:00
Catalog Product Rule index has been rebuilt successfully in 00:00:00
Product Price index has been rebuilt successfully in 00:00:28
Catalog Search index has been rebuilt successfully in 00:03:55

点评

谢谢反馈,我也上2.4版本试试  详情 回复 发表于 2020-8-28 21:53
回复 支持 反对

使用道具 举报

2

主题

4

广告币

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2020-8-28 14:58:18 | 显示全部楼层
sead 发表于 2020-8-28 11:28
硬件到位就好,出了名的吃硬件

看架构吧,小型的不合适,大的产品多的也只能用跟这个了。这个母鸡我才300多一个月。
回复 支持 反对

使用道具 举报

1

主题

60

广告币

133

积分

初级会员

Rank: 2

积分
133

社区QQ达人

发表于 2020-8-28 21:53:14 | 显示全部楼层
suwubee 发表于 2020-8-28 14:33
跑分那一段都有时间,4w目前我刷新大概1-2分钟吧。后期会实战100w以上的数据。
...

谢谢反馈,我也上2.4版本试试
回复 支持 反对

使用道具 举报

37

主题

1353

广告币

1637

积分

高级会员

Rank: 4

积分
1637

社区QQ达人

发表于 2020-8-31 11:01:04 | 显示全部楼层
期待后续佳作,这篇不错
回复 支持 反对

使用道具 举报

1

主题

0

广告币

3

积分

新手上路

Rank: 1

积分
3
发表于 2021-1-13 17:54:30 | 显示全部楼层
学习路过
回复 支持 反对

使用道具 举报

30

主题

244

广告币

748

积分

中级会员

Rank: 3Rank: 3

积分
748

社区QQ达人

发表于 2021-1-16 18:08:21 | 显示全部楼层
技术大牛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Adplexity

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|AdvertCN |网站地图

GMT+8, 2021-1-27 06:03 , Processed in 0.059290 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表