當您手動安裝好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、配置環(huán)境
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的模板,或者開發(fā)新的模板文件。
//'localThemeDir' => '@appfront/theme/terry/theme01',
# 定義第三方模板路徑,用來重寫fecshop的模板,或者開發(fā)新的模板文件。
'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
,
如果您想使用后綴模式區(qū)分多語言,譬如添加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',
],
],
],
];
您可能會問,為什么要給圖片配置域名,圖片和網站使用一個域名不就可以嗎? 原因:瀏覽器加載頁面的時候,每一個域名加載的鏈接的并發(fā)個數是有限制的,把 圖片使用不同的域名,可以讓圖片獨立加載,加快頁面的加載。
8、配置是否強制復制assets到web目錄,如果是開發(fā)環(huán)境,按照下面進行配置(可選配置,可以先不管這個)。
@app/config/main.php
里面可以看到下面的配置
這個是yii2的知識范疇
'assetManager' => [
'forceCopy' => true,
],
如果是線上, 將forceCopy設置成false ['forceCopy' => false]
原因:本地開發(fā)經常修改css,因此,每次就需要yii的asset將css發(fā)布到web路徑下面(這里的發(fā)布,就是yii2在初始化的時候就會強制把需要的css復制到 web/assets路徑下面,譬如yii2封裝的bootstrap前端框架), 如果是線上環(huán)境,這樣非常耗費資源,因此,線上關閉即可,如果您發(fā)布了新的css文件, 那么您需要手動清空@app/web/assets下面的文件夾(如果線上訪問量不大,開啟也無所謂,呵呵。)。
9、導入數據庫表(migrate),在fecshop根目錄執(zhí)行下面的命令行
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即可
然后把該文件上傳到您的系統(tǒng)中,譬如,我放到了該路徑下:/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為數據庫.
執(zhí)行上面的命令,會把數據導入到mongodb的fecshop數據庫中。
9.3產品圖片
對于產品的示例數據 對應的圖片文件比較大,沒有放到版本庫里面,你可以到百度云盤下載appimage.zip
,下載地址為:https://pan.baidu.com/s/1kVwRD2Z
將appimage覆蓋到根目錄即可,覆蓋后,
設置一下文件可寫可讀:
chmod 777 -R appimage
如果發(fā)現產品圖片沒有出來,那么您需要清空 appimage/common/media/catalog/product/cache/*
下面所有文件和文件夾,
cd appimage/common/media/catalog/product/cache/
pwd
rm -rf ./*
上面使用了rm -rf命令,一定要謹慎,pwd看看是否進入了相關文件夾,看好文件路徑是否正確,在執(zhí)行刪除,以免造成刪除 了其他文件。
清空瀏覽器圖片緩存,重新刷新頁面即可。
9.4產品搜索
對于產品搜索,中文搜索需要安裝xunSearch,英文用的是mongodb 的 full text search, xunSearch安裝教程 ,安裝完成后,需要跑腳本同步到搜索工具中,命令行如下:
cd vendor/fancyecommerce/fecshop/shell/search
sh fullSearchSync.sh
10、開啟nginx mysql mongodb php,你就可以訪問本地配置的fecshop了。
11、后臺的賬戶密碼為: admin admin123(如果不對,就是123456)
12、如果是線上,需要開啟一些腳本。
詳細參看:Fecshop 腳本介紹
二:其他
1.開啟單文件配置(非必要)
fecshop的配置最終是由N個配置php文件合并而成,在每次初始化 前執(zhí)行,為了加速,可以先把配置文件合并成單文件,然后在加載 就會比較節(jié)省資源。
入口文件@app/web/index.php 代碼: $use_merge_config_file = false;
處設置。
fecshop 使用合并配置(config)數組進行加速,true 代表打開。
打開配置加速開關前,您需要執(zhí)行 http://www.domain.com/index-merge-config.php 進行生成單文件配置數組。
注意:打開后,當您修改了配置,都需要重新生成單文件配置數組,否則修改的配置不會生效,
建議:本地開發(fā)環(huán)境關閉,開發(fā)環(huán)境如果訪問量不大,關閉也行,如果訪問量大,建議打開
參考資料:yii2 配置加速 – N個配置文件生成一個配置文件
2.上線注意的問題
對于上線,您需要做一些線上的配置,這些可以參看上線前的配置
更多建議: