pc商城
项目介绍
目录结构
复制LaiKeJaveMall
├── common 
│  ├── footer.html  #脚部
│  ├── head.html #头部
│  ├── md5.js 
│  ├── navRight.html #右侧导航
│  ├── zh_CN.js #中文简体
│  ├── zh_EN.js #英文
│  ├── zh_TN.js #繁体
├── css # 样式
│  ├── commom 
│  │  ├── animate.min.css #公共样式
│  │  └── reset.css
│  ├── common.css #公共样式
│  ├── pages #页面样式
│  └── reset.css 
├── index.html 
├── js
│  ├── config.js #接口配置
│  └── vue.js 
├── package-lock.json
├── pages #商城页面
│  ├── address #地址管理
│  │  └── myaddress.html
│  ├── afterSale #售后
│  │  └── management.html
│  ├── assets  #个人资产
│  ├── collection #收藏
│  │  ├── mycollection.html
│  │  └── similar.html
│  ├── coupon   #优惠券
│  ├── home #主页
│  │  └── index.html
│  ├── homeList #商品列表
│  │  ├── homeList.html
│  │  └── homeLoad.html
│  ├── homedetail #商品详情
│  │  └── homedetail.html
│  ├── login #登录
│  │  ├── forgetPassword.html
│  │  ├── login.html
│  │  ├── register.html
│  │  └── setPassword.html
│  ├── mch #店铺申请和主页
│  │  ├── applyShop.html
│  │  └── mch.html
│  ├── message #站内消息
│  │  ├── message.html
│  │  └── messageDetail.html
│  ├── my #个人中心页面
│  │  ├── aboutUs.html
│  │  ├── my.html
│  │  ├── myLoad.html
│  │  └── myinfor.html
│  ├── order #订单相关页面
│  │  ├── afterDetails.html #售后详情
│  │  ├── afterSale.html #售后列表
│  │  ├── evaluationing.html #评价
│  │  ├── myOrder.html #我的订单
│  │  ├── orderDetails.html #订单详情
│  │  └── payment.html #待付款支付
│  ├── pay
│  │  ├── payDetails.html #订单确认
│  │  ├── payResult.html #支付结果
│  │  └── scanCode.html #扫码
│  ├── plug 
│  ├── security  
│  ├── shoppingCart #购物车
├── plugins
│  └── others
│    ├── element-ui
│    ├── jquery.min.js
│    ├── qrcode.min.js
│    └── swiper.animate1.0.3.min.js
└── static #静态资源
  ├── home-img 
  └── images
项目工具
| 项 | 版本 | 说明 | 
|---|---|---|
| nodejs | 14.20.0 | 下载安装 | 
| vscode | 最新 | 开发编辑器 | 
| pm2 | 默认 | 守护进程 | 
项目部署
后端服务
laike-gateway
laike-admin-store
laike-store-pc
配置修改
1、修改 .env.js,Javaprod环境部分即可
//商城ID
const STORE_ID = 1;
//来源
const STORE_TYPE = 6;
//java环境端口
const JAVA_PORT = 8081
//php环境端口
const PHP_PORT = 8089
//公共部分uri地址
const COMMON_URI = "?store_id=" + STORE_ID + "&store_type=" + STORE_TYPE
module.exports = { 
    ////////////////////////////////////////////// 
    //JAVA 开发环境        需修改部分
    //////////////////////////////////////////////
    java_dev_production: {
      NODE_ENV: 'java_dev_production',
      VUE_APP_LKT_STORE_ID:STORE_ID,
      VUE_APP_STORE_TYPE:STORE_TYPE,
      PUBLIC_PATH:'',//配置router 
      VUE_APP_LKT_MCH_DEFURL:'https://store.think.laiketui.net/#/login',//来客电商PC商城跳转路径PC店铺,填pc店铺后台地址
      VUE_APP_LKT_H5_DEFURL:'https://h5.think.laiketui.net/#/',//来客电商H5默认路径
      VUE_APP_LKT_ROOT_IMG_URL:'https://think.laiketui.net/', //图片资源路径,填网关地址
      VUE_APP_LKT_KEFU_URL:'wss://think.laiketui.net/wss/message/onlineMessage/', //客服 websocket地址
      VUE_APP_BASE_API: 'https://think.laiketui.net/gw', //填网关地址
      PROT:JAVA_PORT,
      LKT_ROOT_URL:"https://think.laiketui.net/gw" + COMMON_URI //填网关地址
    },
    //需修改部分结束
    // JAVA 演示环境
    java_prod_production: {
      NODE_ENV: 'java_prod_production',
      VUE_APP_LKT_STORE_ID:STORE_ID,//商城ID
      VUE_APP_STORE_TYPE:STORE_TYPE,//来源
      PUBLIC_PATH:'',//配置router
      VUE_APP_LKT_MCH_DEFURL:'https://store.think.laiketui.net/#/login',//来客电商PC商城跳转路径PC店铺
      VUE_APP_LKT_H5_DEFURL:'https://h5.think.laiketui.net/#/',//来客电商H5默认路径
      VUE_APP_LKT_ROOT_IMG_URL:'https://think.laiketui.net/', //图片资源路径
      VUE_APP_LKT_KEFU_URL:'wss://think.laiketui.net/wss/message/onlineMessage/', //客服 websocket地址
      VUE_APP_BASE_API: 'https://think.laiketui.net/gw',
      PROT:JAVA_PORT,
      LKT_ROOT_URL:"https://think.laiketui.net/gw"+COMMON_URI
    },
    // JAVA 测试环境
    'java_test_production':{
      NODE_ENV: 'java_test_production',
      VUE_APP_LKT_STORE_ID:STORE_ID,//商城ID
      VUE_APP_STORE_TYPE:STORE_TYPE,//来源
      PUBLIC_PATH:'',//配置router
      VUE_APP_LKT_MCH_DEFURL:'https://java.dev.laiketui.net/mch/login',//来客电商PC商城跳转路径PC店铺
      VUE_APP_LKT_H5_DEFURL:'https://java.dev.laiketui.net/H5',//来客电商H5默认路径
      VUE_APP_LKT_ROOT_IMG_URL:'https://java.dev.laiketui.net/', //图片资源路径
      VUE_APP_LKT_KEFU_URL:'wss://java.dev.laiketui.net/wss/message/onlineMessage/', //客服 websocket地址
      VUE_APP_BASE_API:'https://java.dev.laiketui.net/gw',
      PROT:JAVA_PORT,
      LKT_ROOT_URL:"https://java.dev.laiketui.net/gw"+COMMON_URI
    },
    ////////////////////////////////////////////// 
    //PHP 环境
    //////////////////////////////////////////////
    //本地
    php_dev_production: {
      NODE_ENV: 'php_dev_production',
      VUE_APP_LKT_STORE_ID:STORE_ID,//商城ID
      VUE_APP_STORE_TYPE:STORE_TYPE,//来源
      PUBLIC_PATH:'/mall',//配置router
      VUE_APP_LKT_MCH_DEFURL:'https://tp.dev.laiketui.net/mch/#/login',//来客电商PC商城跳转路径PC店铺
      VUE_APP_LKT_H5_DEFURL:'https://tp.dev.laiketui.net/H5/#/',//来客电商H5默认路径
      VUE_APP_LKT_ROOT_IMG_URL:'https://tp.dev.laiketui.net/', //图 片资源路径
      VUE_APP_LKT_KEFU_URL:'wss://tp.dev.laiketui.net/wss/', //客服 websocket地址
      VUE_APP_BASE_API:'https://tp.dev.laiketui.net',
      PROT:PHP_PORT,
      LKT_ROOT_URL: "/api"+COMMON_URI
    },
    //PHP 生产环境
    php_prod_production: {
      NODE_ENV: 'php_prod_production',
      VUE_APP_LKT_STORE_ID:STORE_ID,//商城ID
      VUE_APP_STORE_TYPE:STORE_TYPE,//来源
      PUBLIC_PATH:'/mall',//配置router
      VUE_APP_LKT_MCH_DEFURL:'https://tp.dev.laiketui.net/mch/#/login',//来客电商PC商城跳转路径PC店铺
      VUE_APP_LKT_H5_DEFURL:'https://tp.dev.laiketui.net/H5/#/',//来客电商H5默认路径
      VUE_APP_LKT_ROOT_IMG_URL:'https://tp.dev.laiketui.net/', //图 片资源路径
      VUE_APP_LKT_KEFU_URL:'wss://tp.dev.laiketui.net/wss/', //客服 websocket地址
      VUE_APP_BASE_API:'https://tp.dev.laiketui.net',
      PROT:PHP_PORT,
      LKT_ROOT_URL:"https://tp.dev.laiketui.net"+COMMON_URI
    },
    //PHP 测试环境
    php_test_production: {
      NODE_ENV: 'php_test_production',
      VUE_APP_LKT_STORE_ID:STORE_ID,//商城ID
      VUE_APP_STORE_TYPE:STORE_TYPE,//来源
      PUBLIC_PATH:'/mall',//配置router
      VUE_APP_LKT_MCH_DEFURL:'https://tp.dev.laiketui.net/mch/#/login',//来客电商PC商城跳转路径PC店铺
      VUE_APP_LKT_H5_DEFURL:'https://tp.dev.laiketui.net/H5/#/',//来客电商H5默认路径
      VUE_APP_LKT_ROOT_IMG_URL:'https://tp.dev.laiketui.net/', //图 片资源路径
      VUE_APP_LKT_KEFU_URL:'wss://tp.dev.laiketui.net/wss/', //客服 websocket地址
      VUE_APP_BASE_API:'https://tp.dev.laiketui.net',
      PROT:PHP_PORT,
      LKT_ROOT_URL: "https://tp.dev.laiketui.net"+COMMON_URI
    }
   }
打包部署
执行npm run build打包命令后会生成一个.nuxt的文件夹,首次部署需要在宝塔上传入如下几个文件,并且打开终端下载依赖。之后部署正常情况没有修改assets、plugins、static、nuxt.config.js、package-lock.json、package.json里面的内容,每次打包只需要上传.nuxt文件上去即可(部署完需要重启pm2进程)
# 拉依赖
npm i
# Java打包
# Java生产环境
# npm run java:prod
# Java测试环境
# npm run java:test
# PHP打包
# PHP生产环境
 npm run php:prod
 # PHP测试环境
 #npm run php:test
打包之后,将1-9打包上传到服务器指定文件夹
. 
├── 1、.nuxt 
├── README.md
├── api
├── app
├── 2、assets//若有修改的情况每次打包后需要上传到服务器;没有修改的情况只需要第一次上传到服务器
├── babel.config.js
├── components
├── ecosystem.config.js
├── 9、env.js
├── jsconfig.json
├── layouts
├── 6、node_modules //如果不想在服务器下载则这个包也可以一起打包上传到服务器【如果服务器下载则非必须】
├── 3、nuxt.config.js//若有修改的情况每次打包后需要上传到服务器;没有修改的情况只需要第一次上传到服务器
├── 7、package-lock.json //若有修改的情况每次打包后需要上传到服务器;没有修改的情况只需要第一次上传到服务器
├── 8、 package.json //若有修改的情况每次打包后需要上传到服务器;没有修改的情况只需要第一次上传到服务器
├── pages
├── 4、plugins//若有修改的情况每次打包后需要上传到服务器;没有修改的情况只需要第一次上传到服务器
├── 5、static//若有修改的情况每次打包后需要上传到服务器;没有修改的情况只需要第一次上传到服务器
├── store
├── utils
└── yarn.lock
第一次部署服务器端启动:
# 请在文件上传路径执行以下命令!也就是与.nuxt同级的目录!
# 服务器安装 pm2
npm install pm2 -g 
# JAVA  刚刚启动的进程,服务启动成功后有个地址,需要在域名下做代理,即可完成部署
# pm2 delete java-mall
# pm2 start npm --name "java-mall" -- run java:ps
# PHP  刚刚启动的进程,服务启动成功后有个地址,需要在域名下做代理,即可完成部署
pm2 delete laike-mall
pm2 start npm --name "laike-mall" -- run php:ps
pm2 save
非第一次部署:
更改了其中内容后都需要重启pm2服务,命令 pm2 restart 0 (0是需要重启的序号)
#### 查看服务列表
[root@java java.web.houjiemeishi.com]# pm2 list
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ mall               │ fork     │ 84   │ online    │ 0%       │ 55.9mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
[PM2][WARN] Current process list is not synchronized with saved list. App nuxt-pcsc differs. Type 'pm2 save' to synchronize.
 # 重启指定服务编号
[root@java java.web.houjiemeishi.com]# pm2 restart 0
Use --update-env to update environment variables
[PM2] Applying action restartProcessId on app [0](ids: [ '0' ])
[PM2] [mall](0) ✓
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ mall               │ fork     │ 85   │ online    │ 0%       │ 19.8mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
[PM2][WARN] Current process list is not synchronized with saved list. App nuxt-pcsc differs. Type 'pm2 save' to synchronize.
启动之后可以直接暴漏端口用ip:port访问 ; 或者通过nginx 配置代理 ip:port 来访问。
 location /pc {
      proxy_pass http://npm start启动时候控制台出来的ip:端口; //例如:proxy_pass http://172.21.125.47:8081; 
 }
PM2 是一个进程管理工具,它可以帮助我们管理 Node.js 进程。PM2 可以监控应用程序并自动重启它们,也可以在集群模式下负载均衡进程。除此之外,PM2 还提供了很多有用的功能,比如日志管理、进程监控、应用程序部署等。
pm2基本用法:
1启动应用程序
使用 PM2 启动应用程序非常简单,只需要在命令行中执行以下命令即可:
pm2 start
其中,app.js 是我们要启动的应用程序的入口文件。执行该命令后,PM2 会启动该应用程序,并在后台运行。
查看应用程序列表
使用 PM2 启动的应用程序可以通过以下命令查看:
pm2 list
该命令会列出所有使用 PM2 启动的应用程序。
停止应用程序
如果我们需要停止某个应用程序,可以使用以下命令:
pm2 stop app
其中,app 是要停止的应用程序的名称或 ID。如果我们想要停止所有使用 PM2 启动的应用程序,可以使用以下命令:
pm2 stop all
重启应用程序
如果我们需要重启某个应用程序,可以使用以下命令:
pm2 restart app
其中,app 是要重启的应用程序的名称或 ID。如果我们想要重启所有使用 PM2 启动的应用程序,可以使用以下命令:
pm2 restart all
删除应用程序
如果我们需要删除某个应用程序,可以使用以下命令:
pm2 delete app
其中,app 是要删除的应用程序的名称或 ID。如果我们想要删除所有使用 PM2 启动的应用程序,可以使用以下命令:
pm2 delete all
查看应用程序日志
使用 PM2 启动的应用程序会自动记录日志,我们可以使用以下命令查看应用程序的日志:
pm2 logs app
其中,app 是要查看日志的应用程序的名称或 ID。该命令会输出应用程序的日志,可以通过 Ctrl+C 停止查看。
访问
