创建多网店多域名以及安装中文语言包

M2支持多网站(website)多网店(store)多视图(store view)。
关于这3者区别 请看官方介绍:
https://docs.magento.com/m2/ce/user_guide/stores/websites-stores-views.html

比如我有2个网店,中文站和英文站
2个网站的分类和产品基本一样,只是翻译不同。
如果只是翻译不同的话 可以用一个store+多store view

  1. 英文站(默认站) -> magento2demo.texiaoyao.cm
  2. 中文站 -> magento2demo-zh.texiaoyao.cn

注意:magento2demo-zh.texiaoyao.cn需要先域名解析

创建中文store view





好的,创建完成后,我们就去configuration页面设置域名

设置中文站


选择中文,点击确定

把国家设为中国,语言设为中文

保存,点击右上角的'Save Config'

设置域名



保存,点击右上角的'Save Config'

前台测试


可以看到 前台可以直接切换到中文站


见鬼了,发现打不开。

别慌,这是因为你没有在nginx里配置。

Nginx虚拟主机里增加域名

好吧。我们继续到服务器里配置nginx的虚拟主机。

这个稍微有点复杂,仔细看。

还记得之前我们是怎么配置的吗?
之前在 /etc/nginx/sites-enabled/magento2
我们继续编辑该文件

改成

upstream fastcgi_backend {
        server  unix:/run/php/php7.0-fpm.sock;
}
map $http_host $MAGE_RUN_CODE {
    magento2demo.texiaoyao.cn default;
    magento2demo-zh.texiaoyao.cn cn;
}
server {
        listen 80;
        server_name magento2demo.texiaoyao.cn;
        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE store;
        include /var/www/magento2/nginx.conf.sample;
        error_log /var/log/magento2/nginx/error.log;
}
server {
        listen 80;
        server_name magento2demo-zh.texiaoyao.cn;
        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE store;
        include /var/www/magento2/nginx.conf.sample;
        error_log /var/log/magento2/nginx/error.log;
}

保存。
这里东西有点多,我一个个解释:

  1. 分了2个server。因为同时加在一个server里会有bug,在访问http://magento2demo-zh.texiaoyao.cn的时候 会跳转到默认的http://magento2demo.texiaoyao.cn里去。
  2. 加了map $http_host $MAGE_RUN_CODE来给每个域名指定一个$MAGE_RUN_CODE,这个$MAGE_RUN_CODE就是m2后台创建store view的时候设置的Code标识符。通过这个Code标识符我们才能找到这个store view
  3. 加了set $MAGE_RUN_TYPE store,因为我们的域名是设置的store view,是属于store的,所以MAGE_RUN_TYPEstore。如果我们的域名是设置的storestore是属于website的,那么MAGE_RUN_TYPE就是website

还需要改下/var/www/magento2/nginx.conf.sample文件。

vim /var/www/magento2/nginx.conf.sample

location ~ (index|get|static|report|404|503|health_check)\.php$ {
    try_files $uri =404;
    fastcgi_pass   fastcgi_backend;
    fastcgi_buffers 1024 4k;

    fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
    fastcgi_param  PHP_VALUE "memory_limit=756M \n max_execution_time=18000";
    fastcgi_read_timeout 600s;
    fastcgi_connect_timeout 600s;

    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

改成

location ~ (index|get|static|report|404|503|health_check)\.php$ {
    try_files $uri =404;
    fastcgi_pass   fastcgi_backend;
    fastcgi_buffers 1024 4k;

    fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
    fastcgi_param  PHP_VALUE "memory_limit=756M \n max_execution_time=18000";
    fastcgi_read_timeout 600s;
    fastcgi_connect_timeout 600s;

    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    # START - Multisite customization
    fastcgi_param MAGE_RUN_TYPE $MAGE_RUN_TYPE;
    fastcgi_param MAGE_RUN_CODE $MAGE_RUN_CODE;
    fastcgi_param  MAGE_MODE $MAGE_MODE;
    # END - Multisite customization
    include        fastcgi_params;
}

主要加入了MAGE_RUN_TYPEMAGE_RUN_CODE变量。

保存。

最后重启nginx和php7.0-fpm

sudo systemctl restart nginx
sudo systemctl restart php7.0-fpm

再浏览器访问http://magento2demo-zh.texiaoyao.cn
发现ok了。

妈蛋,怎么不是中文的?这还是显示的英文啊。

嗯,是的,m2自身不带中文语言包,需要我们自己安装。

好吧,请继续。

安装中文语言包

ssh登入服务器。
参考
https://github.com/zouhongzhao/magento2_zh_hans_cn

composer require zouhongzhao/magento2_zh_hans_cn:dev-master

或者用老外做的中文包

composer require mageplaza/magento-2-chinese-language-pack:dev-master

如果很慢的话,可以执行下面的语句

wget https://github.com/zouhongzhao/magento2_zh_hans_cn/archive/master.zip
mkdir -p app/i18n/Zouhongzhao
mv master.zip app/i18n/Zouhongzhao/
cd app/i18n/Zouhongzhao/
unzip master.zip
rm master.zip -rf
mv magento2_zh_hans_cn-master zh_Hans_CN
cd ../../../
php bin/magento i18n:pack -m replace /var/www/magento2/app/i18n/Zouhongzhao/zh_Hans_CN/zh_Hans_CN.csv -d zh_Hans_CN

最后更新下系统

rm -rf var/di/* && rm -rf var/generation/* && rm -rf var/cache/* && rm -rf var/page_cache/* && rm -rf var/view_preprocessed/* && rm -rf pub/static/* && rm -rf generated/* && mkdir var/di
php bin/magento setup:upgrade && php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy en_US zh_Hans_CN -f
php bin/magento indexer:reindex
php bin/magento cache:clean
php bin/magento cache:flush

测试

浏览器刷新下,发现都变成中文了。

如何修改网店的根分类(Root Category)


//bbs.mallol.cn/?thread-170.htm

附录

1,Apache下的虚拟主机配置

sudo vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerName          magento2demo.texiaoyao.cn
    DocumentRoot        /var/www/magento2/pub/
    SetEnv MAGE_MODE "developer"
 </VirtualHost>

 <VirtualHost *:80>
    ServerName          magento2demo-zh.texiaoyao.cn
    DocumentRoot        /var/www/magento2/pub/
    SetEnv MAGE_MODE "developer"
    SetEnv MAGE_RUN_CODE "cn"
    SetEnv MAGE_RUN_TYPE "store"
 </VirtualHost>

保存后,重启apache

CentOS: service httpd restart
Ubuntu: service apache2 restart

2,website级别的多网店多域名怎么配置呢?

我们上面说的是store view级别的多网店多域名配置。
那么website级别的怎么配置呢?

只是操作要麻烦些。

  1. Create Website,设置code,比如我设置为b2c-cn
  2. Create Store,选择website,选择Root Category,设置code
  3. Create Store View,选择Store,设置code

然后在去后台Configuration配置页面,切换到对应的website,给website设置域名。

最后 在nginx里配置虚拟主机,有点不一样。
要把$MAGE_RUN_TYPE改成website
$MAGE_RUN_CODE要改成Create Website里设置的code.

map $http_host $MAGE_RUN_CODE {
    magento2demo.texiaoyao.cn base;
    magento2demo-zh.texiaoyao.cn b2c-cn;
}
server {
        listen 80;
        server_name magento2demo.texiaoyao.cn;
        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website;
        include /var/www/magento2/nginx.conf.sample;
        error_log /var/log/magento2/nginx/error.log;
}
server {
        listen 80;
        server_name magento2demo-zh.texiaoyao.cn;
        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        set $MAGE_RUN_TYPE website;
        include /var/www/magento2/nginx.conf.sample;
        error_log /var/log/magento2/nginx/error.log;
}

最后重启下nginx就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值