文章目錄
- 前言
- 一、部署流程
- 1、數據庫搬遷
- 2、寶塔創建網站,配置php
- 3、修改nginx配置
- 4、在public目錄設置軟連接
- 5、修改env配置、刷新緩存
- 二、其他問題
- 1.后臺登陸失敗問題
- 2.完美解決接口跨域問題
- 總結
前言
laravel新手記錄
差不多一個月,總算用laravel把商城小程序開發好了【這個后面可以直接把代碼分享出來】
一直在本地開發,現在需要部署到服務器上面和前端聯調了
記錄一下部署流程和遇到的問題
主要工具:
liunx服務器,已經安裝寶塔或者lnmp環境
navicat(用于數據庫遷移通過備份還原)
一、部署流程
1、數據庫搬遷
把本地數據復制到服務器上面
方法很多,可以導出成sql在執行,我之前用的的中簡單粗暴的方式,就是偶爾報錯吧,并且執行時間很長,數據庫很大還可能失敗
最近發現navicat是可以備份一個數據庫,然后在另一個數據庫里面還原,前提是兩個數據庫名一樣
【只有navicat學習交流版可以備份還原,navicat免費版不行】
具體操作:
先把本地數據庫備份
順便說下mysql5.7如何開啟root賬號遠程登陸
找到mysql.user表,把root前面的host值,從localhost改成:%
這樣表示允許所有ip訪問了
改完后執行【FLUSH PRIVILEGES;】刷新權限
然后鏈接服務器數據庫,新建一個一模一樣的數據庫,也備份一下
最后把本地備份的這個備份文件拷貝到服務器備份文件路徑里面,選擇這個本地備份,還原備份即可,這種方式需要本地和遠程mysql版本一致
2、寶塔創建網站,配置php
由于我用的框架dcat-admin是比較新的代碼【相對現在好像很老了】,需要安裝php8.2
安裝好了之后安裝fileinfo擴展,好像裝上就自己開啟了
寶塔新建網站,選擇php8.2創建,運行目錄設置到public,或者網站目錄直接設置到public,我感覺應該差不多吧?
這個防跨站攻擊感覺可以關了,后面可能會報錯,因為我們需要訪問public目錄之外的文件
3、修改nginx配置
可以設置偽靜態,也可以直接在網站的nginx配置文件這里加上這一行
location / {try_files $uri $uri/ /index.php?$query_string;}
如果沒有這個,訪問網站就會返回404
4、在public目錄設置軟連接
默認后臺上傳圖片是存儲在這個目錄的
/www/wwwroot/你的網站.cn/storage/app/public
但是我們網站運行目錄是public目錄,也就是和storage同級,可以創建一個軟連接解決
有3種方式,前兩種可能報錯或者失敗,第3種包成功
1、在網站根目錄執行:php artisan storage:link
然后我報錯了,說我php沒有安裝PHP的symlink模塊,懶得裝了,看第二種
2、使用命令:ln -s storage/app/public public/storage
沒報錯,但是路徑不對,最好用完整路徑,我當時沒注意
3、直接去寶塔后臺手動創建:
這個本質就是第二種,不過變成圖形化操作了。
成功后會有這個特殊文件夾出現,這時直接訪問/storage就是訪問storage/app/public
解決很多圖片路徑問題導致404的情況
5、修改env配置、刷新緩存
這個時候打開你的env配置,把mysql鏈接密碼改好、域名配好。
在網站根目錄下執行這些,刷新所有緩存
php artisan config:clear
php artisan cache:clear
php artisan view:clear
php artisan route:clear//重啟消息隊列,如果更新了模型,消息隊列使用了模型,就需要重啟這個,重啟nginx都沒用
php artisan queue:restart
二、其他問題
1.后臺登陸失敗問題
env配置不開啟https,網站通過https訪問,但是請求登陸接口會使用http,這時候會出現跨域問題。
如果網站已經申請了https證書,就把配置文件也開啟https,就可以了
如果你的dcat-admin版本也是:“dcat/laravel-admin”: “2.*”,
config文件夾里面文件都是默認值
可以參考這個env配置:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=false
ADMIN_HTTPS=falseAPP_URL=http://xinhu.com
IMAGE_URL='http://xinhu.com/storage'#后臺路由域名
ADMIN_ROUTE_DOMAIN=""#后臺路由前綴-加前綴后需要執行命令清除路由緩存
ADMIN_ROUTE_PREFIX=""#后臺域名
ADMIN_DOMAIN=""
不要小瞧ADMIN_ROUTE_PREFIX=“”,之前沒注釋,我隨手就填了我的域名,就沒管了,干其他的去了,然后就出bug,菜單欄不見了,折磨了我1天時間,最后重新拉代碼部署才好,然后一個一個排查才發現是這個配置項搞得鬼……
2.完美解決接口跨域問題
總結
話說現在在學dcat-admin算不算49年入國軍,作者都跑路了,看官網都噶啦,文檔、社區帖子也都是3年前的了。
本來用的thinkphp的,然后一個月前去官網想看個文檔,才發現,現在看個文檔都收費,新版的8收費就算了,甚至之前免費開源的3、5、6文檔都收費,太離譜了就換laravel框架了。
剛剛去看,現在又可以免費看文檔了,甚至thinkphp8都可以免費看了,不過感覺他們收費免費太隨意了,喜歡瞎搞,先用著dcat-admin吧
好在還是留下了很多好用的插件,整個項目也很完善了,用起來還是嘎嘎不錯的
下次分享一些好用的擴展和安裝修改,比如日志查擴展引用cdn老是失效搞得訪問界面錯位
dcat-admin官方文檔:https://learnku.com/docs/dcat-admin/2.x/use-of-fields/8107#162e7c
dcat-admin擴展集合:https://learnku.com/articles/70305