Fecshop 初始配置

2018-05-24 14:11 更新

Fecshop 初始配置

当您手动安装好Linux 和FecShop的代码后,就可以进行配置了。

1、配置 fecshop app advanced

在common/config/main-local.php中配置mysql,mongodb,redis

<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=fecshop',  # Fecshop是mysql的数据库名字,您需要到mysql中建立一个数据库
            'username' => 'root',  # mysql的账户
            'password' => '123456', # mysql的密码
            'charset' => 'utf8',
        ],
        'mongodb' => [
            'class' => 'yii\mongodb\Connection',
            # 有账户的配置,username是用户名,password是密码,fecshop是数据库
            //'dsn' => 'mongodb://username:password@localhost:27017/fecshop',
            # 无账户的配置,fecshop是数据库
            'dsn' => 'mongodb://127.0.0.1:27017/fecshop',
            # 复制集 如果您的mongodb是复制集(大站),可以使用下面的复制集的配置方式。
            //'dsn' => 'mongodb://10.10.10.252:10001/fecshop,mongodb://10.10.10.252:10002/fecshop,mongodb://10.10.10.252:10004/fecshop?replicaSet=terry&readPreference=primaryPreferred',
        ],



mongodb默认是没有密码的,您可以将mongodb的端口在iptables添加信任和端口封闭即可 保证安全,当然,您也可以配置mongodb的用户名和密码。

4、配置环境

4.1 添加host(本地需要配置,如果是线上服务器就不需要了)

打开C:\Windows\System32\drivers\etc\hosts,添加如下代码(如果是其他IP,将 127.0.0.1 替换成其他IP即可。):

127.0.0.1       rock.fecshoptest.com
127.0.0.1       my.fecshoptest.com
127.0.0.1       appadmin.fecshoptest.com
127.0.0.1       appfront.fecshoptest.com
127.0.0.1       appfront.fecshoptest.es
127.0.0.1       apphtml5.fecshoptest.com
127.0.0.1       appapi.fecshoptest.com
127.0.0.1       appserver.fecshoptest.com
127.0.0.1       img.fecshoptest.com     #appimage/common
127.0.0.1       img2.fecshoptest.com    #appimage/appadmin
127.0.0.1       img3.fecshoptest.com    #appimage/appfront
127.0.0.1       img4.fecshoptest.com    #appimage/apphtml5
127.0.0.1       img5.fecshoptest.com    #appimage/appserver

4.2、配置nginx,注意下面的 **fecshop** 代表fecshop的相对根目录的文件路径, 请根据自己安装的文件路径填写。

appfront.fecshoptest.com appfront.fecshoptest.es 指向 **fecshop**/appfront/web 

 
appadmin.fecshoptest.com 指向 **fecshop**/appadmin/web


apphtml5.fecshoptest.com 指向 **fecshop**/apphtml5/web


appapi.fecshoptest.com   指向 **fecshop**/appapi/web


appserver.fecshoptest.com 指向 **fecshop**/appserver/web


img.fecshoptest.com     指向 **fecshop**/appimage/common


img2.fecshoptest.com    指向 **fecshop**/appimage/appadmin


img3.fecshoptest.com    指向 **fecshop**/appimage/appfront


img4.fecshoptest.com    指向 **fecshop**/appimage/apphtml5


img5.fecshoptest.com    指向 **fecshop**/appimage/appserver

5、配置语言(可以先使用默认):

在配置文件(:@common\config\fecshop_local_services\FecshopLang.php

6、配置货币(可以先使用默认):

在文件:@common\config\fecshop_local_services\Page.php

7、配置store的域名和图片的域名,您可以和我下面的示例代码一致,

store在配置文件:@app\config\fecshop_local_services\Store.php

譬如我的代码(您可以和我的保持一致,相应域名已经在上面添加host):

<?php
   return [
   'store' => [
        'class' => 'fecshop\services\Store',
        'stores' => [
            # 数据的key就是域名
            'appfront.fecshoptest.com' => [
                'language'      => 'en_US',   # 语言必须在上面第五步的fecshoplang中定义,否则将无法得到语言属性。
                'languageName'  => 'English', # 在添加store的时候,必须查看 添加的语言在 fecshoplang中是否定义。
                # 定义本地模板路径,用来重写fecshop的模板,或者开发新的模板文件。
                //'localThemeDir'   => '@appfront/theme/terry/theme01',
                # 定义第三方模板路径,用来重写fecshop的模板,或者开发新的模板文件。
                'thirdThemeDir' => [],
                # 当前语言的默认货币,货币必须在上面第六步的配置中存在
                'currency'      => 'USD',
                'mobile'        => [ # 当设备满足什么条件的时候,进行跳转。
                    'enable'        => true,
                    'condition'     => ['phone','tablet'], # phone 代表手机,tablet代表平板
                    'redirectUrl'   => 'apphtml5.fecshoptest.com',   # 如果是移动设备访问进行域名跳转
                ],
                # 第三方账号登录配置
                'thirdLogin' => [
                    'facebook' =>[                       #fb api配置 ,fb可以一个app设置pc和手机两个域名 
                        'facebook_app_id'     => '184963',
                        'facebook_app_secret' => '2e097dd7139',
                    ],
                    "google" => [                       #谷歌api visit https://code.google.com/apis/console to generate your google api
                        'CLIENT_ID'      => '38037grhccontent.com',
                        'CLIENT_SECRET'  => 'ei8RaoCHYm0rrwO',
                    ],
                ]


                //'image'   => [
                //  'domain' => 'img.appfront.fancyecommerce.com',
                //  'baseDir'=> '@appimage/appfront',
                //]
            ],
            'appfront.fecshoptest.com/fr' => [
                'language'      => 'fr_FR',
                'languageName'  => 'Fran?ais',
                'localThemeDir' => '@appfront/theme/terry/theme01',
                'thirdThemeDir' => [],
                'currency'      => 'RMB',
                'mobile'        => [
                    'enable'            => true,
                    'condition'         => ['phone'], # phone 代表手机,tablet代表平板。
                    'redirectDomain'    => 'apphtml5.fecshoptest.com/fr', # 跳转后的url。
                ],
            ],
            'appfront.fecshoptest.es' => [
                'language'      => 'es_ES',
                'languageName'  => 'Espa?ol',
                'localThemeDir' => '@appfront/theme/terry/theme01',
                'thirdThemeDir' => [],
                'currency'      => 'USD',
                'mobile'        => [
                    'enable'        => true,
                    'condition'     => ['tablet'],
                    'redirectDomain'    => 'fecshop.apphtml5.es.fancyecommerce.com', 
                ],
            ],
            'appfront.fecshoptest.com/cn' => [
                'language'      => 'zh_CN',
                'languageName'  => '中文',
                'localThemeDir' => '@appfront/theme/terry/theme01',
                'thirdThemeDir' => [],
                'currency'      => 'RMB',
                'mobile'        => [
                    'enable'        => false,
                    'condition'     => ['phone','tablet'],
                    'redirectDomain'    => 'fecshop.apphtml5.fancyecommerce.com/cn', 
                ],
            ],
        ],

        
    ],

            
];

各个代码的具体含义,在注释中已经说明,关于第三方facebook和google登录,如何获取 CLIENT_ID,CLIENT_SECRET可以参看我的博文: facebook login 申请 app_id 和 app_secret google login api 申请 CLIENT_SECRET 和 CLIENT_SECRET

如果您的各个语言使用了子域名(譬如cn.fecshop.com , fr.fecshop.com 等),由于子域名之间session默认是不能共享的,为了更好的共享session,让语言切换后, 购物车和登录信息存在,您需要在入口文件index.php里面设置session.cookie_domain ,大约在index.php第3行找到代码

#ini_set('session.cookie_domain', '.fancyecommerce.com'); //初始化域名,

将前面的注释去掉,将.fancyecommerce.com替换成您的域名, 如果您使用的是 www.fecshop.com/cn , www.fecshop.com/fr, 这种方式,则不需要设置 session.cookie_domain, 如果您想使用后缀模式区分多语言,譬如添加it语言,您需要到@app/web中添加一个文件夹it, 然后在文件夹里面新建@app/web/it/index.php文件,并新建文件夹@app/web/it/assets,并设置可写, 目前fecshop只添加了cn和fr两个例子,你可以参考这两个。

7、图片域名配置文件:@common\config\fecshop_local_services\Image.php ,譬如我的代码(您可以和我的保持一致,相应域名已经在上面添加host):

<?php
/**
 * FecShop file.
 * @link http://www.fecshop.com/
 * @copyright Copyright (c) 2016 FecShop Software LLC
 * @license http://www.fecshop.com/license/
 */
return [
    'image' => [
        'appbase'   => [
            'appfront' => [
                'basedir' => '@appimage/appfront',
                'basedomain' => 'http://img3.fecshoptest.com',
            ],
            'apphtml5' => [
                'basedir' => '@appimage/apphtml5',
                'basedomain' => 'http://img2.fecshoptest.com',
            ],
            'appadmin' => [
                'basedir' => '@appimage/appadmin',
                'basedomain' => 'http://img2.fecshoptest.com',
            ],
            'common' => [
                'basedir' => '@appimage/common',
                'basedomain' => 'http://img.fecshoptest.com',
            ],
        ],
    ],
];

您可能会问,为什么要给图片配置域名,图片和网站使用一个域名不就可以吗? 原因:浏览器加载页面的时候,每一个域名加载的链接的并发个数是有限制的,把 图片使用不同的域名,可以让图片独立加载,加快页面的加载。

8、配置是否强制复制assets到web目录,如果是开发环境,按照下面进行配置(可选配置,可以先不管这个)。

@app/config/main.php里面可以看到下面的配置

这个是yii2的知识范畴

'assetManager' => [
    'forceCopy' => true,
],

如果是线上, 将forceCopy设置成false ['forceCopy' => false]

原因:本地开发经常修改css,因此,每次就需要yii的asset将css发布到web路径下面(这里的发布,就是yii2在初始化的时候就会强制把需要的css复制到 web/assets路径下面,譬如yii2封装的bootstrap前端框架), 如果是线上环境,这样非常耗费资源,因此,线上关闭即可,如果您发布了新的css文件, 那么您需要手动清空@app/web/assets下面的文件夹(如果线上访问量不大,开启也无所谓,呵呵。)。

9、导入数据库表(migrate),在fecshop根目录执行下面的命令行

9.1、Yii2 migratge方式导入表。

mysql(导入mysql的表,数据,索引):

./yii migrate --interactive=0 --migrationPath=@fecshop/migrations/mysqldb

mongodb(导入mongodb的表,数据,索引):

./yii mongodb-migrate  --interactive=0 --migrationPath=@fecshop/migrations/mongodb

9.2、测试数据安装:

下载地址为:测试mongodb数据库js数据 , 进入后打开文件夹,下载 mongo-fecshop_test-20170419-065157.js即可

然后把该文件上传到您的系统中,譬如,我放到了该路径下:/www/restore/mongo-fecshop_test-20170419-065157.js

mongo 127.0.0.1:27017/fecshop --quiet /www/restore/mongo-fecshop_test-20170419-065157.js

127.0.0.1:27017/fecshop 27017为mongodb的默认端口,fecshop为数据库.

执行上面的命令,会把数据导入到mongodb的fecshop数据库中。

9.3产品图片

对于产品的示例数据 对应的图片文件比较大,没有放到版本库里面,你可以到百度云盘下载appimage.zip,下载地址为:https://pan.baidu.com/s/1kVwRD2Z 将appimage覆盖到根目录即可,覆盖后, 设置一下文件可写可读:

chmod 777 -R  appimage

如果发现产品图片没有出来,那么您需要清空 appimage/common/media/catalog/product/cache/*下面所有文件和文件夹,

cd appimage/common/media/catalog/product/cache/
pwd
rm -rf ./*

上面使用了rm -rf命令,一定要谨慎,pwd看看是否进入了相关文件夹,看好文件路径是否正确,在执行删除,以免造成删除 了其他文件。

清空浏览器图片缓存,重新刷新页面即可。

9.4产品搜索

对于产品搜索,中文搜索需要安装xunSearch,英文用的是mongodb 的 full text search, xunSearch安装教程 ,安装完成后,需要跑脚本同步到搜索工具中,命令行如下:

cd vendor/fancyecommerce/fecshop/shell/search
sh fullSearchSync.sh

Fecshop搜索详细文档

10、开启nginx mysql mongodb php,你就可以访问本地配置的fecshop了。

11、后台的账户密码为: admin admin123(如果不对,就是123456)

12、如果是线上,需要开启一些脚本。

详细参看:Fecshop 脚本介绍

二:其他

1.开启单文件配置(非必要)

fecshop的配置最终是由N个配置php文件合并而成,在每次初始化 前执行,为了加速,可以先把配置文件合并成单文件,然后在加载 就会比较节省资源。

入口文件@app/web/index.php 代码: $use_merge_config_file = false; 处设置。 fecshop 使用合并配置(config)数组进行加速,true 代表打开。 打开配置加速开关前,您需要执行 http://www.domain.com/index-merge-config.php 进行生成单文件配置数组。 注意:打开后,当您修改了配置,都需要重新生成单文件配置数组,否则修改的配置不会生效, 建议:本地开发环境关闭,开发环境如果访问量不大,关闭也行,如果访问量大,建议打开

参考资料:yii2 配置加速 – N个配置文件生成一个配置文件

2.上线注意的问题

对于上线,您需要做一些线上的配置,这些可以参看上线前的配置

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号