說明:
請使用 linux!
本文檔在 Ubuntu20.04 系統(tǒng)上進行部署 【請使用云服務器】;
人生苦短,請用寶塔
前言
本文羅列了安裝部署過程中可能會遇到的問題,如果文章中有造成卡頓的地方,歡迎留言,我會第一時間進行修改補充
準備工作,
更換鏡像源【如果不是國內(nèi)云服務器,請更換鏡像源】
源地址
https://developer.aliyun.com/mirror/ubuntu
替換方式
備份老的源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
編輯源文件,在阿里云找到對應的版本將內(nèi)容覆蓋進去,我的為 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)境(因為前端打包要在本地)安裝 npm 去 這里
開始第一步 安裝寶塔環(huán)境
安裝寶塔
打開寶塔官方網(wǎng)站,選擇安裝 linux 版網(wǎng)址,因為系統(tǒng)是 ubuntu 所以使用下面方式
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
走起

等待中...... (大約持續(xù) 5 分鐘,起身扭扭老腰~~)
顯示如下即為安裝成功啦!

安裝程序運行環(huán)境
需要安裝的軟件列表如下 【請選擇極速安裝,你懂的】
nginx 1.18
mysql 5.7
php 7.2
redis 5.0
supervisor 1.3
nginx redis supervisor 版本可以有小的浮動
過程漫長(大約持續(xù)了 1 個小時,小憩一會......)
開始部署站點
創(chuàng)建站點

將站點默認的幾個文件除了 .user.ini 全部刪除(.user.ini 文件本身也刪不掉)
注意:
*、如果數(shù)據(jù)庫沒有創(chuàng)建成功,請在數(shù)據(jù)庫菜單手動創(chuàng)建數(shù)據(jù)庫,注意字符編碼選擇 utf8mb4
設(shè)置站點
*、解析域名,并指向服務器 ip
*、設(shè)置 ssl 證書 請務必配置
*、添加偽靜態(tài)&跨域,看這里
下載最新的 fastadmin 完整包,并上傳到寶塔站點目錄,步驟如下
*、直接將 zip 上傳到 站點目錄
*、解壓
*、刪除 zip 包
結(jié)果如下:

修改站點運行目錄為 public

開始安裝 fastadmin
訪問
http://域名/install.php
設(shè)置好數(shù)據(jù)庫賬號密碼, 管理員賬號
訪問報錯:

說明沒有設(shè)置偽靜態(tài)和跨域,請設(shè)置站點偽靜態(tài)并增加跨域代碼,看這里
這是后端的

設(shè)置站點為 https 增加 SSL 證書

重啟 nginx!??!
重啟 nginx?。?!
重啟 nginx!?。?/strong>
安裝 shopro 插件
準備
請打開調(diào)試模式,隨時定位問題【部署完成上線,請關(guān)閉調(diào)試模式】

插件管理安裝 shopro

插件文檔走一波
// 移除舊版
composer remove overtrue/wechat
.
// 安裝新版
composer require "overtrue/wechat:^4.2" -vvv
.
// 更新擴展包
composer update
商城配置走一波【請認真填寫配置項,每一項都很重要】
看這里 shopro 商城配置
貌似一切都進行的那么順利
開始部署前端
安裝 HbuilderX
去這里安裝 HbuilderX,請下載 App 開發(fā)版
將前端代碼包下載到本地,解壓

在 HbuilderX 打開

點擊頂部菜單運行 -》 運行到瀏覽器 -》 chrome 【H5 運行為例】
真不巧,報錯了,內(nèi)容如下:

此問題是未安裝前端依賴包
使用 HbuilderX 終端(或者任意熟悉的終端,需要進入前端代碼目錄), 執(zhí)行 npm install

執(zhí)行 npm install ,結(jié)果如下即為成功:

再次運行到瀏覽器
又報錯了:

根據(jù)提示找到對應的插件,進行安裝 工具 -》插件安裝

再次運行:

完美,搓手~~
使用測試賬號:13888888888 密碼:123456
慢著,別高興得太早,接口請求全是官方的演示站
修改根目錄 env.js 文件,將域名替換為 shopro.test (換為你的域名)

至此,如果上面偽靜態(tài),跨域,SSL 配置沒有問題,就能看到正常的商城頁面了
分享海報配置【H5】
生成海報前,請先把 后臺 -》 商城配置 -》商城信息-》分享設(shè)置,配置正確


相當?shù)慕z滑

分享海報配置【小程序】
生成海報請先確保小程序發(fā)布過至少一版,否則服務端會報 /pages/index/index 頁面路徑無效 41030invalid page hint: [zEDCRb0gE-Nr333a]
請配置小程序 appid,如下:

請先在小程序開發(fā)工具 -》設(shè)置-》安全設(shè)置 -》安全 -》 服務端口-》開啟

準備運行小程序

注意勾選運行時是否壓縮代碼,否則可能無法正常預覽小程序
走起... 【如果 商城配置 -》平臺配置-》小程序配置 正確,這里的微信授權(quán)就是 ok 的哦】
生成海報依然如此絲滑

到這里還沒有完,當使用手機預覽的時候發(fā)現(xiàn)海報無法生成,甚至連首頁也出不來(開發(fā)工具能出來是因為開發(fā)工具有個選項 不校驗域名合法性 ),這是因為,后端的域名和海報圖片地址都需要添加到小程序允許的服務器域名中,具體位置 小程序后臺 -》 開發(fā) -》 開發(fā)設(shè)置 -》 服務器域名
具體要添加的域名包括
api 域名 // 后端 api 接口域名,請部署 `https`
api.7wpp.com // 后臺默認的海報背景的域名
wx.qlogo.cn // 微信授權(quán)登錄的頭像地址
shopro-1253949872.image.myqcloud.com // 商城演示商品圖片地址
至此海報生成大難題解決
隊列 & redis
為了提高系統(tǒng)性能,活動可靠性,系統(tǒng)引入了 隊列 和 redis 緩存
下單試試

此報錯為未安裝 隊列插件,隊列 和 redis 配置文檔已經(jīng)很詳細了,請移步按照文檔進行配置,點這里
配好隊列,加上余額,使用余額付款,一切正常的話,就能看到訂單支付成功啦!??!
發(fā)布到正式
前提已經(jīng)走過上面開發(fā)過程,env appid 等已經(jīng)正常設(shè)置
H5 端
前端請單獨部署,不要和后端接口使用一個站點,看這里
寶塔創(chuàng)建 H5 前端站點

前端的偽靜態(tài)&跨域

SSL,請參考上面后端的進行設(shè)置 請務必配置
重啟 Nginx?。?!
開始打包前端

填寫 網(wǎng)站名稱標題

打包成功

將兩個文件上傳到寶塔前端站點根目錄,如圖所示:

訪問前端網(wǎng)址,至此 H5 前端部署完成
發(fā)布小程序端
注意不要運行模式下的代碼提交小程序?qū)徍?br> 點擊
發(fā)行-》小程序-微信
image.png
填寫小程序名稱,和正式的appid

然后在微信小程序開發(fā)工具點擊上傳

最后在微信小程序后臺 將剛才上傳的版本提交微信審核
至此前端發(fā)布流程完成
常見問題
部分用戶接口出現(xiàn) EventDispatcher not found

這是 php 和 overtrue/wechat 某個版本才會出現(xiàn)的問題,導致 symfony/event-dispatcher 擴展包被移除
解決辦法:
手動安裝
composer require symfony/event-dispatcher:^4.3 -vvv
新添加訂單,支付頁提示訂單不存在
請檢查隊列配置文件 application/extra/queue.php 的 connector 配置是否是 redis【推薦】 或者 database,如果不是(Sync),請移步這里
拼團開團支付成功,跳轉(zhuǎn)我的拼團不顯示
因為支付成功之后采用異步隊列進行執(zhí)行,可能會存在短暫延遲
*、首先稍微等待一下,60秒之內(nèi),刷新我的拼團頁面,看是否能顯示出來
*、如果長時間還是未出來,確定隊列監(jiān)聽是否正常,配置在這里
微信公眾號登錄提示 redirect_uri 域名與后臺配置不一致

請在微信公眾號后臺 開發(fā)-》接口權(quán)限-》網(wǎng)頁服務-》網(wǎng)頁授權(quán) 設(shè)置網(wǎng)頁授權(quán)回調(diào)域名為后臺 api 的域名,別忘了配置 ip 白名單
權(quán)限不足 Permission denied

*、首先檢查 supervisor 守護進程執(zhí)行用戶是否是和 php-fpm 執(zhí)行用戶一直,寶塔是 www,如果不一致請修改為 www

*、修改整個后端目錄所屬用戶為 www

短信驗證碼無法發(fā)送
*、請安裝阿里云短信插件
*、在阿里云申請短信模板
*、在現(xiàn)有默認模板基礎(chǔ)再增加 mobilelogin 的短信模板
配置示例:

個人中心等級圖標不顯示

請參考這里
部分接口請求報錯
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
說明:該錯誤出現(xiàn)原因大致有兩種:第一在本地部署的測試環(huán)境;第二未配置域名SSL 證書
解決:
請在線上部署環(huán)境, 并且配置好證書即可
如果能折騰,并且一定要在本地部署開發(fā)環(huán)境,解決辦法如下
下載 cacert.pem 證書
https://curl.haxx.se/ca/cacert.pem
編輯當前系統(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 的放置的絕對地址/cacert.pem
重啟 php-fpm,重啟 nginx
常見問題持續(xù)更新中
...
