DSSHOP 部署

2022-03-29 16:27 更新

因?yàn)轫?xiàng)目涉及多個(gè)終端,推薦分四個(gè)子域名進(jìn)行部署:?api?(放置laravel項(xiàng)目)、?h5?(放置h5項(xiàng)目)、?admin?(放置后臺(tái)項(xiàng)目)、?www?(放置nuxt項(xiàng)目);當(dāng)然也可以全部部署在?www?下,但需要自行配置nginx

基于輕量應(yīng)用服務(wù)器Docker CE版

該安裝方式為已本地調(diào)試完成,需要搭建到服務(wù)器 該方法也適用于其它服務(wù)器搭建,需要自行安裝docker ce 購買服務(wù)器后,用xshell連接

單應(yīng)用部署

#安裝git
yum install -y git
# 查看git是否安裝成功 git --version
# 安裝docker-compose(請(qǐng)不要用docker compose2及以上版本)
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v
cd ../
# 創(chuàng)建應(yīng)用目錄
mkdir www
cd www
# 上傳本地dsshop項(xiàng)目下的api目錄(如果文件太大,不要把vendor上傳,然后上傳后再composer install),并解壓重命名為dsshop
cd dsshop/public
# 將后臺(tái)和h5打包好的文件分別放到api/public下的admin和h5目錄下
mkdir web
# 并將本地網(wǎng)站項(xiàng)目打包好的.nuxt nuxt.config.js package.json package-lock.json dsshop.config.js static node_modules(如果文件太大,可不上傳,在服務(wù)端npm i進(jìn)行安裝)上傳到web目錄下
# 安裝環(huán)境
# 回到dsshop根目錄下
docker-compose up -d
# 將數(shù)據(jù)庫上傳到服務(wù)器
# 資源遷移到服務(wù)器
docker-compose exec php bash
php artisan resource:migration http://dsshop.test
# 給storage777權(quán)限
chmod -R 777 storage/
# 訪問IP、IP/admin、IP/h5,如果都能正常訪問,API、后臺(tái)、H5就搭建完成了
# 開啟路由緩存
php artisan route:cache
# 清除緩存
#php artisan route:clear
# 開啟配置緩存
php artisan config:cache
# 消除緩存
php artisan config:clear
# 搭建網(wǎng)站
docker-compose exec web bash
npm start
# 復(fù)制對(duì)應(yīng)地址,如http://172.18.0.3:3005
# ctrl+c退出
# 打開./docker/nginx/conf.d/default.conf找到如下代碼,把地址換成自己的
location ~ ^/(api|storage|h5|admin|oauth) {
        try_files $uri $uri/ /index.php$is_args$args;
}
location / {
        proxy_redirect off;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_read_timeout          1m;
        proxy_connect_timeout       1m;
        proxy_pass                          http://172.18.0.3:3005;
}
# 退出容器
exit
# 重啟nginx容器
docker-compose restart nginx
# 訪問首頁,看是否能顯示網(wǎng)站信息,之后可以將web/static當(dāng)網(wǎng)站根目錄進(jìn)行操作即可
docker-compose exec web bash
#將pm2system.config.js的項(xiàng)目名改成對(duì)應(yīng)的項(xiàng)目名,#然后上傳到項(xiàng)目根目錄
pm2 start dsshop.config.js
# pm2 list // pm2列表
# 開機(jī)自動(dòng)啟動(dòng)
pm2 save
pm2 startup
# 開啟隊(duì)列和定時(shí)任務(wù)
# 修改/docker/supervisor/conf.d目錄下的dsshop-scheduler.conf.example(定時(shí)任務(wù))和dsshop-worker.conf.example(隊(duì)列)
# 一般不需要修改,直接將這兩個(gè)文件名的.example去除
# 進(jìn)入php容器
docker-compose exec php bash
# 更新supervisor
supervisorctl update
#查看所有進(jìn)程的狀態(tài)
supervisorctl status

多應(yīng)用部署

# 項(xiàng)目根據(jù)單應(yīng)用部署處理,在安裝docker-compose的時(shí)候按照多應(yīng)用部署處理即可
# 將項(xiàng)目根目錄下的dsdocker上傳到服務(wù)器根目錄下
cd dsdocker
docker-compose up -d
# 需要注意的是,多應(yīng)用部署后php和web容器對(duì)應(yīng)的是www根目錄,所以需要進(jìn)入到項(xiàng)目下再去執(zhí)行

RSET API部署(laravel)

php artisan storage:link
composer install
php artisan view:cache

配置

  • 以下配置不修改不引響正常使用,修改后可提高網(wǎng)站安全性

PROJECT_KEY #配置前端密鑰,可通過php artisan key:generate生成機(jī)制生成密鑰,也可以自定義
APP_KEY #重置APP_KEY密鑰

資源路徑遷移

  • 如果需要將本地的資源路徑一鍵替換成線上路徑的話,請(qǐng)執(zhí)行以下代碼

php artisan resource:migration
# 可自定義域名
php artisan resource:migration http://dsshop.text

隊(duì)列

  • 可不開啟,開啟需要修改代碼

# 終端運(yùn)行
php artisan queue:work
# 開啟郵件相關(guān)的隊(duì)列功能
## 郵件
### 普通郵件發(fā)送
Mail::to($request->email)->send(new VerificationCode($code));
### 支持隊(duì)列的郵件發(fā)送
Mail::to($request->email)->queue(new VerificationCode($code));
## 通知相關(guān)
### api\app\Notifications\InvoicePaid.php
### 把注釋掉的代碼恢復(fù),并屏蔽class InvoicePaid extends Notification

定時(shí)任務(wù)

  • 定時(shí)任務(wù)涉及l(fā)inux(這里拿寶塔為例)和laravel
  • 進(jìn)入寶塔-計(jì)劃任務(wù)-添加計(jì)劃任務(wù),按下圖配置

14

/www/server/php/72/bin/php /www/wwwroot/項(xiàng)目目錄/artisan schedule:run >> /dev/null 2>&1

  • 然后就不用去管了,以后有什么定時(shí)任務(wù),直接在 ?api/app/Console/Kernel.php?添加即可

使用supervisor進(jìn)程守護(hù)監(jiān)控

  • 使用supervisor進(jìn)程守護(hù)監(jiān)控來管理你的隊(duì)列和定時(shí)任務(wù)
  • 這里基于docker單應(yīng)用部署搭建的環(huán)境來講,默認(rèn)已經(jīng)安裝好和自啟動(dòng)了supervisor,其它環(huán)境請(qǐng)自行處理

# 修改/docker/supervisor/conf.d目錄下的dsshop-scheduler.conf.example(定時(shí)任務(wù))和dsshop-worker.conf.example(隊(duì)列)
# 一般不需要修改,直接將這兩個(gè)文件名的.example去除
# 進(jìn)入php容器
docker-compose exec php bash
# 更新supervisor
supervisorctl update
#查看所有進(jìn)程的狀態(tài)
supervisorctl status
#日志路徑:/var/log/supervisor/supervisord.log

后臺(tái)搭建

  • 進(jìn)入admin目錄,執(zhí)行以下代碼

# 打包正式環(huán)境
npm run build:prod

  • 如果需要打包到指定目錄下,如h5

# admin/config/index.js
assetsPublicPath: '/h5/',

  • 然后將打包好生成的文件上傳到服務(wù)器,也可以發(fā)給別人直接訪問(需要對(duì)方有本地環(huán)境,雙擊訪問index.html無效)

移動(dòng)端搭建

  • 移動(dòng)端采用uni-app,所以直接使用Huilder X軟件即可以完成打包工作

網(wǎng)頁端搭建

網(wǎng)頁端采用vue的nuxt框架開發(fā),部署參考以下步驟

  • 進(jìn)入web目錄

# 打包
yarn run build
#將.nuxt nuxt.config.js package.json package-lock.json上傳到服務(wù)器
#在服務(wù)器端項(xiàng)目根目錄安裝包
yarn install
# 測(cè)試是否能正常運(yùn)行,將記錄運(yùn)行后的IP地址
yarn start
#nginx反向代理
server
{
    listen 80;
    root /www/wwwroot/dsshop.test;
    location / {
            proxy_redirect off;
            proxy_set_header Host               $host;
            proxy_set_header X-Real-IP          $remote_addr;
            proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_read_timeout          1m;
            proxy_connect_timeout       1m;
            proxy_pass                          http://上一步的IP地址:3004;
    }
}
#通過域名如果能正常訪問到項(xiàng)目,即項(xiàng)目配置成功
#服務(wù)器安裝pm2
npm i pm2 -g
pm2 --version
#將pm2system.config.js的項(xiàng)目名改成對(duì)應(yīng)的項(xiàng)目名,#然后上傳到項(xiàng)目根目錄
pm2 start dsshopsystem.config.js
#查看pm2列表中是否有剛才的進(jìn)程
pm2 list
# 開機(jī)自動(dòng)啟動(dòng)
pm2 save
pm2 startup


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)