從空 Ubuntu 系統(tǒng)到跑起來 Shopro 開源商城

說明:
請使用 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

走起

image.png

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

image.png

安裝程序運行環(huán)境

需要安裝的軟件列表如下 【請選擇極速安裝,你懂的】

nginx 1.18
mysql 5.7
php 7.2
redis 5.0
supervisor 1.3

nginx redis supervisor 版本可以有小的浮動

過程漫長(大約持續(xù)了 1 個小時,小憩一會......)

開始部署站點

創(chuàng)建站點

image.png

將站點默認的幾個文件除了 .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é)果如下:

image.png

修改站點運行目錄為 public

image.png

開始安裝 fastadmin

訪問

http://域名/install.php
設(shè)置好數(shù)據(jù)庫賬號密碼, 管理員賬號

訪問報錯:


image.png

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

這是后端的


image.png

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

image.png

重啟 nginx!??!
重啟 nginx?。?!
重啟 nginx!?。?/strong>

安裝 shopro 插件

準備

請打開調(diào)試模式,隨時定位問題【部署完成上線,請關(guān)閉調(diào)試模式】

image.png

插件管理安裝 shopro

image.png
插件文檔走一波
// 移除舊版
composer remove overtrue/wechat
.
// 安裝新版
composer require "overtrue/wechat:^4.2" -vvv
.
// 更新擴展包
composer update
商城配置走一波【請認真填寫配置項,每一項都很重要】

看這里 shopro 商城配置

貌似一切都進行的那么順利

開始部署前端

安裝 HbuilderX

去這里安裝 HbuilderX,請下載 App 開發(fā)版

將前端代碼包下載到本地,解壓

image.png

HbuilderX 打開

image.png

點擊頂部菜單運行 -》 運行到瀏覽器 -》 chrome 【H5 運行為例】

真不巧,報錯了,內(nèi)容如下:

image.png

此問題是未安裝前端依賴包

使用 HbuilderX 終端(或者任意熟悉的終端,需要進入前端代碼目錄), 執(zhí)行 npm install

image.png

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

image.png

再次運行到瀏覽器

又報錯了:


image.png

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

image.png

再次運行:

image.png

完美,搓手~~
使用測試賬號:13888888888 密碼:123456

慢著,別高興得太早,接口請求全是官方的演示站

修改根目錄 env.js 文件,將域名替換為 shopro.test (換為你的域名)

image.png

至此,如果上面偽靜態(tài),跨域,SSL 配置沒有問題,就能看到正常的商城頁面了

分享海報配置【H5】

生成海報前,請先把 后臺 -》 商城配置 -》商城信息-》分享設(shè)置,配置正確

image.png
image.png

相當?shù)慕z滑


image.png

分享海報配置【小程序】

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

image.png

請在這里下載小程序開發(fā)工具

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

image.png

準備運行小程序


image.png

注意勾選運行時是否壓縮代碼,否則可能無法正常預覽小程序

走起... 【如果 商城配置 -》平臺配置-》小程序配置 正確,這里的微信授權(quán)就是 ok 的哦】

生成海報依然如此絲滑

image.png

到這里還沒有完,當使用手機預覽的時候發(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 緩存

下單試試


image.png

此報錯為未安裝 隊列插件,隊列 和 redis 配置文檔已經(jīng)很詳細了,請移步按照文檔進行配置,點這里

配好隊列,加上余額,使用余額付款,一切正常的話,就能看到訂單支付成功啦!??!

發(fā)布到正式

前提已經(jīng)走過上面開發(fā)過程,env appid 等已經(jīng)正常設(shè)置

H5 端

前端請單獨部署,不要和后端接口使用一個站點,看這里

寶塔創(chuàng)建 H5 前端站點
image.png

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

image.png

SSL,請參考上面后端的進行設(shè)置 請務必配置

重啟 Nginx?。?!

開始打包前端
image.png

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

image.png

打包成功


image.png

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


image.png

訪問前端網(wǎng)址,至此 H5 前端部署完成

發(fā)布小程序端

注意不要運行模式下的代碼提交小程序?qū)徍?br> 點擊 發(fā)行-》小程序-微信

image.png

填寫小程序名稱,和正式的appid


image.png

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


image.png

最后在微信小程序后臺 將剛才上傳的版本提交微信審核

至此前端發(fā)布流程完成


常見問題

部分用戶接口出現(xiàn) EventDispatcher not found

EventDispatcher not found

這是 phpovertrue/wechat 某個版本才會出現(xiàn)的問題,導致 symfony/event-dispatcher 擴展包被移除

解決辦法:

手動安裝

composer require symfony/event-dispatcher:^4.3 -vvv

新添加訂單,支付頁提示訂單不存在

請檢查隊列配置文件 application/extra/queue.phpconnector 配置是否是 redis【推薦】 或者 database,如果不是(Sync),請移步這里

拼團開團支付成功,跳轉(zhuǎn)我的拼團不顯示

因為支付成功之后采用異步隊列進行執(zhí)行,可能會存在短暫延遲

*、首先稍微等待一下,60秒之內(nèi),刷新我的拼團頁面,看是否能顯示出來
*、如果長時間還是未出來,確定隊列監(jiān)聽是否正常,配置在這里

微信公眾號登錄提示 redirect_uri 域名與后臺配置不一致

image.png

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

權(quán)限不足 Permission denied

Permission denied

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

image.png

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

image.png

短信驗證碼無法發(fā)送

*、請安裝阿里云短信插件
*、在阿里云申請短信模板
*、在現(xiàn)有默認模板基礎(chǔ)再增加 mobilelogin 的短信模板

配置示例:


image.png

個人中心等級圖標不顯示

image.png

請參考這里

部分接口請求報錯

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ù)更新中

...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容