說(shuō)明:
請(qǐng)使用 linux领跛!
本文檔在 Ubuntu20.04 系統(tǒng)上進(jìn)行部署 【請(qǐng)使用云服務(wù)器】放祟;
人生苦短,請(qǐng)用寶塔
前言
本文羅列了安裝部署過(guò)程中可能會(huì)遇到的問(wèn)題选酗,如果文章中有造成卡頓的地方,歡迎留言岳枷,我會(huì)第一時(shí)間進(jìn)行修改補(bǔ)充
準(zhǔn)備工作星掰,
更換鏡像源【如果不是國(guó)內(nèi)云服務(wù)器,請(qǐng)更換鏡像源】
源地址
https://developer.aliyun.com/mirror/ubuntu
替換方式
備份老的源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
編輯源文件嫩舟,在阿里云找到對(duì)應(yīng)的版本將內(nèi)容覆蓋進(jìn)去氢烘,我的為 20.04
sudo vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
安裝必要的軟件
*、本地環(huán)境(因?yàn)榍岸舜虬诒镜兀┌惭b npm
去 這里
開(kāi)始第一步 安裝寶塔環(huán)境
安裝寶塔
打開(kāi)寶塔
官方網(wǎng)站家厌,選擇安裝 linux
版網(wǎng)址播玖,因?yàn)橄到y(tǒng)是 ubuntu
所以使用下面方式
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
走起
等待中...... (大約持續(xù) 5 分鐘,起身扭扭老腰~~)
顯示如下即為安裝成功啦饭于!
安裝程序運(yùn)行環(huán)境
需要安裝的軟件列表如下 【請(qǐng)選擇極速安裝蜀踏,你懂的】
nginx 1.18
mysql 5.7
php 7.2
redis 5.0
supervisor 1.3
nginx redis supervisor 版本可以有小的浮動(dòng)
過(guò)程漫長(zhǎng)(大約持續(xù)了 1 個(gè)小時(shí),小憩一會(huì)......)
開(kāi)始部署站點(diǎn)
創(chuàng)建站點(diǎn)
將站點(diǎn)默認(rèn)的幾個(gè)文件除了 .user.ini
全部刪除(.user.ini
文件本身也刪不掉)
注意:
*掰吕、如果數(shù)據(jù)庫(kù)沒(méi)有創(chuàng)建成功果覆,請(qǐng)?jiān)跀?shù)據(jù)庫(kù)菜單手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù),注意字符編碼選擇 utf8mb4
設(shè)置站點(diǎn)
*殖熟、解析域名局待,并指向服務(wù)器 ip
*、設(shè)置 ssl 證書(shū) 請(qǐng)務(wù)必配置
*菱属、添加偽靜態(tài)&跨域钳榨,看這里
下載最新的 fastadmin
完整包,并上傳到寶塔站點(diǎn)目錄纽门,步驟如下
*薛耻、直接將 zip
上傳到 站點(diǎn)目錄
*、解壓
*赏陵、刪除 zip
包
結(jié)果如下:
修改站點(diǎn)運(yùn)行目錄為 public
開(kāi)始安裝 fastadmin
訪問(wèn)
http://域名/install.php
設(shè)置好數(shù)據(jù)庫(kù)賬號(hào)密碼饼齿, 管理員賬號(hào)
訪問(wèn)報(bào)錯(cuò):
說(shuō)明沒(méi)有設(shè)置偽靜態(tài)和跨域饲漾,請(qǐng)?jiān)O(shè)置站點(diǎn)偽靜態(tài)并增加跨域代碼,看這里
這是后端的
設(shè)置站點(diǎn)為 https
增加 SSL
證書(shū)
重啟 nginx
B聘取?即!
重啟 nginx
5挂!败玉!
重啟 nginx
5型痢!运翼!
安裝 shopro 插件
準(zhǔn)備
請(qǐng)打開(kāi)調(diào)試模式返干,隨時(shí)定位問(wèn)題【部署完成上線,請(qǐng)關(guān)閉調(diào)試模式】
插件管理安裝 shopro
插件文檔走一波
// 移除舊版
composer remove overtrue/wechat
.
// 安裝新版
composer require "overtrue/wechat:^4.2" -vvv
.
// 更新擴(kuò)展包
composer update
商城配置走一波【請(qǐng)認(rèn)真填寫(xiě)配置項(xiàng)血淌,每一項(xiàng)都很重要】
看這里 shopro
商城配置
貌似一切都進(jìn)行的那么順利
開(kāi)始部署前端
安裝 HbuilderX
去這里安裝 HbuilderX
矩欠,請(qǐng)下載 App 開(kāi)發(fā)版
將前端代碼包下載到本地,解壓
在 HbuilderX
打開(kāi)
點(diǎn)擊頂部菜單運(yùn)行 -》 運(yùn)行到瀏覽器 -》 chrome 【H5
運(yùn)行為例】
真不巧悠夯,報(bào)錯(cuò)了癌淮,內(nèi)容如下:
此問(wèn)題是未安裝前端依賴包
使用 HbuilderX
終端(或者任意熟悉的終端,需要進(jìn)入前端代碼目錄)沦补, 執(zhí)行 npm install
執(zhí)行 npm install
,結(jié)果如下即為成功:
再次運(yùn)行到瀏覽器
又報(bào)錯(cuò)了:
根據(jù)提示找到對(duì)應(yīng)的插件乳蓄,進(jìn)行安裝 工具 -》插件安裝
再次運(yùn)行:
完美,搓手~~
使用測(cè)試賬號(hào):13888888888
密碼:123456
慢著夕膀,別高興得太早虚倒,接口請(qǐng)求全是官方的演示站
修改根目錄 env.js
文件,將域名替換為 shopro.test
(換為你的域名)
至此产舞,如果上面偽靜態(tài)
魂奥,跨域
,SSL
配置沒(méi)有問(wèn)題易猫,就能看到正常的商城頁(yè)面了
分享海報(bào)配置【H5】
生成海報(bào)前耻煤,請(qǐng)先把 后臺(tái) -》 商城配置 -》商城信息-》分享設(shè)置,配置正確
相當(dāng)?shù)慕z滑
分享海報(bào)配置【小程序】
生成海報(bào)請(qǐng)先確保小程序發(fā)布過(guò)至少一版准颓,否則服務(wù)端會(huì)報(bào) /pages/index/index
頁(yè)面路徑無(wú)效 41030invalid page hint: [zEDCRb0gE-Nr333a]
請(qǐng)配置小程序 appid
违霞,如下:
請(qǐng)?jiān)谶@里下載小程序開(kāi)發(fā)工具
請(qǐng)先在小程序開(kāi)發(fā)工具 -》設(shè)置-》安全設(shè)置 -》安全 -》 服務(wù)端口-》開(kāi)啟
準(zhǔn)備運(yùn)行小程序
注意勾選運(yùn)行時(shí)是否壓縮代碼,否則可能無(wú)法正常預(yù)覽小程序
走起... 【如果 商城配置 -》平臺(tái)配置-》小程序配置
正確瞬场,這里的微信授權(quán)就是 ok 的哦】
生成海報(bào)依然如此絲滑
到這里還沒(méi)有完买鸽,當(dāng)使用手機(jī)預(yù)覽的時(shí)候發(fā)現(xiàn)海報(bào)無(wú)法生成,甚至連首頁(yè)也出不來(lái)(開(kāi)發(fā)工具能出來(lái)是因?yàn)殚_(kāi)發(fā)工具有個(gè)選項(xiàng) 不校驗(yàn)域名合法性 )贯被,這是因?yàn)檠畚澹蠖说挠蛎秃?bào)圖片地址都需要添加到小程序允許的服務(wù)器域名中妆艘,具體位置 小程序后臺(tái) -》 開(kāi)發(fā) -》 開(kāi)發(fā)設(shè)置 -》 服務(wù)器域名
具體要添加的域名包括
api 域名 // 后端 api 接口域名,請(qǐng)部署 `https`
api.7wpp.com // 后臺(tái)默認(rèn)的海報(bào)背景的域名
wx.qlogo.cn // 微信授權(quán)登錄的頭像地址
shopro-1253949872.image.myqcloud.com // 商城演示商品圖片地址
至此海報(bào)生成大難題解決
隊(duì)列 & redis
為了提高系統(tǒng)性能看幼,活動(dòng)可靠性批旺,系統(tǒng)引入了 隊(duì)列 和 redis 緩存
下單試試
此報(bào)錯(cuò)為未安裝 隊(duì)列插件,隊(duì)列 和 redis
配置文檔已經(jīng)很詳細(xì)了诵姜,請(qǐng)移步按照文檔進(jìn)行配置汽煮,點(diǎn)這里
配好隊(duì)列,加上余額棚唆,使用余額付款暇赤,一切正常的話,就能看到訂單支付成功啦O琛P摇!
發(fā)布到正式
前提已經(jīng)走過(guò)上面開(kāi)發(fā)過(guò)程瞎惫,env appid 等已經(jīng)正常設(shè)置
H5 端
前端請(qǐng)單獨(dú)部署溜腐,不要和后端接口使用一個(gè)站點(diǎn),看這里
寶塔創(chuàng)建 H5 前端站點(diǎn)
前端的偽靜態(tài)&跨域
SSL瓜喇,請(qǐng)參考上面后端的進(jìn)行設(shè)置 請(qǐng)務(wù)必配置
重啟 NginxMσ妗!乘寒!
開(kāi)始打包前端
填寫(xiě) 網(wǎng)站名稱標(biāo)題
打包成功
將兩個(gè)文件上傳到寶塔前端站點(diǎn)根目錄矩肩,如圖所示:
訪問(wèn)前端網(wǎng)址,至此 H5 前端部署完成
發(fā)布小程序端
注意不要運(yùn)行模式下的代碼提交小程序?qū)徍?br> 點(diǎn)擊
發(fā)行-》小程序-微信
image.png
填寫(xiě)小程序名稱肃续,和正式的appid
然后在微信小程序開(kāi)發(fā)工具點(diǎn)擊上傳
最后在微信小程序后臺(tái) 將剛才上傳的版本提交微信審核
至此前端發(fā)布流程完成
常見(jiàn)問(wèn)題
部分用戶接口出現(xiàn) EventDispatcher not found
這是 php
和 overtrue/wechat
某個(gè)版本才會(huì)出現(xiàn)的問(wèn)題黍檩,導(dǎo)致 symfony/event-dispatcher
擴(kuò)展包被移除
解決辦法:
手動(dòng)安裝
composer require symfony/event-dispatcher:^4.3 -vvv
新添加訂單,支付頁(yè)提示訂單不存在
請(qǐng)檢查隊(duì)列配置文件 application/extra/queue.php
的 connector
配置是否是 redis【推薦】
或者 database
始锚,如果不是(Sync
)刽酱,請(qǐng)移步這里
拼團(tuán)開(kāi)團(tuán)支付成功,跳轉(zhuǎn)我的拼團(tuán)不顯示
因?yàn)橹Ц冻晒χ蟛捎卯惒疥?duì)列進(jìn)行執(zhí)行瞧捌,可能會(huì)存在短暫延遲
*棵里、首先稍微等待一下,60秒之內(nèi)姐呐,刷新我的拼團(tuán)頁(yè)面殿怜,看是否能顯示出來(lái)
*、如果長(zhǎng)時(shí)間還是未出來(lái)曙砂,確定隊(duì)列監(jiān)聽(tīng)是否正常头谜,配置在這里
微信公眾號(hào)登錄提示 redirect_uri 域名與后臺(tái)配置不一致
請(qǐng)?jiān)谖⑿殴娞?hào)后臺(tái) 開(kāi)發(fā)-》接口權(quán)限-》網(wǎng)頁(yè)服務(wù)-》網(wǎng)頁(yè)授權(quán)
設(shè)置網(wǎng)頁(yè)授權(quán)回調(diào)域名為后臺(tái) api
的域名,別忘了配置 ip 白名單
權(quán)限不足 Permission denied
*鸠澈、首先檢查 supervisor
守護(hù)進(jìn)程執(zhí)行用戶是否是和 php-fpm
執(zhí)行用戶一直柱告,寶塔是 www
截驮,如果不一致請(qǐng)修改為 www
*、修改整個(gè)后端目錄所屬用戶為 www
短信驗(yàn)證碼無(wú)法發(fā)送
*际度、請(qǐng)安裝阿里云短信插件
*葵袭、在阿里云申請(qǐng)短信模板
*、在現(xiàn)有默認(rèn)模板基礎(chǔ)再增加 mobilelogin
的短信模板
配置示例:
個(gè)人中心等級(jí)圖標(biāo)不顯示
請(qǐng)參考這里
部分接口請(qǐng)求報(bào)錯(cuò)
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
說(shuō)明:該錯(cuò)誤出現(xiàn)原因大致有兩種:第一在本地部署的測(cè)試環(huán)境乖菱;第二未配置域名SSL 證書(shū)
解決:
請(qǐng)?jiān)诰€上部署環(huán)境坡锡, 并且配置好證書(shū)即可
如果能折騰,并且一定要在本地部署開(kāi)發(fā)環(huán)境窒所,解決辦法如下
下載 cacert.pem 證書(shū)
https://curl.haxx.se/ca/cacert.pem
編輯當(dāng)前系統(tǒng)php 配置文件 php.ini
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = 剛才下載的 cacert 的放置的絕對(duì)地址/cacert.pem
重啟 php-fpm鹉勒,重啟 nginx
常見(jiàn)問(wèn)題持續(xù)更新中
...