教你如何部署.md 5.3 KB

安装jdk

安装JDK,如果没有java-17-openjdk-devel就没有javac命令

yum  install  java-17-openjdk   java-17-openjdk-devel

编译打包项目

项目最终需要进行编译打包上传到服务器,生产环境上的配置与测试环境不同,需要独立配置一些东西,满足自己的需要

1. mall4j

  1. 修改yami-shop-admin\src\main\resources\application-prod.yml 更改为生产环境的数据库账号密码,端口号等

  2. 修改yami-shop-admin\src\main\resources\logback\logback-prod.xml 修改里面的PROJECT_PATH/opt/projects/yami-shops 改为自己生产环境的项目路径

  3. 修改yami-shop-api\src\main\resources\application-prod.yml 更改为生产环境的数据库账号密码,端口号等

  4. 修改yami-shop-api\src\main\resources\logback\logback-prod.xml 修改里面的PROJECT_PATH/opt/projects/yami-shops 改为自己生产环境的项目路径

以上 1、2 工程目录为 yami-shop-admin 而 3、4 工程目录为 yami-shop-api 请注意区分

  1. 修改完毕后打包,使用mvn clean package -DskipTests 命令进行打包,最终会生成很多的jar,我们需要其中两个。
  • 商城后台接口 yami-shop-admin\target\yami-shop-admin-0.0.1-SNAPSHOT.jar
  • 商城前端接口yami-shop-api\target\yami-shop-api-0.0.1-SNAPSHOT.jar
  1. 将两个jar上传到centos环境中

  2. 在生产环境中运行时候,需要使用-Dspring.profiles.active=prod ,在使用admin这个工程项目于生产环境的时候要添加定时任务的配置如-Dspring.profiles.active=prod,运行:

    nohup java -jar -Dspring.profiles.active=prod "${jarPath}/${jarName}" > "${jarPath}/log/${moduleName}-console.log" &
    
    nohup java -jar -Dspring.profiles.active=prod "${jarPath}/${jarName}" > "${jarPath}/log/${moduleName}-console.log" &
    
  • 替换${jarPath}jar 所在路径
  • 替换${jarName}jar 所在路径
  • 替换${moduleName}adminapi
  1. 查看控制台日志输出

    # 后台日志
    tail -f ${PROJECT_PATH}/log/admin.log
    # 前端接口日志
    tail -f ${PROJECT_PATH}/log/api.log
    
  • 替换${PROJECT_PATH}logback-prod.xml 里面修改的PROJECT_PATH 路径
  1. 使用nginx将请求指向特定的端口。

  2. 关于定时任务,请使用xxl-job,看XxlJobConfig的配置说明

2.vue

mall4v:v代表vue项目,是后台管理员界面使用的前端项目,因为前后端分离的

mall4uni:用户前端h5项目

mall4m:小程序项目

下面以mall4v为主进行讲解

1. 安装nodejs + 淘宝npm镜像

如果不了解怎么安装nodejs的,可以参考 菜鸟教程的nodejs相关

将npm的镜像源更改为淘宝的镜像源,回车(千万不要用cnpm,否则会出现不可预知的后果):

npm config set registry https://registry.npmmirror.com
2. 安装依赖启动项目

使用vscode打开vue项目,进入到该项目的根目录(根目录有package.json 的文件)

使用npm安装依赖(请记得配好淘宝的镜像源,除非你能确定你的网络能够畅快访问外网,另外千万不要用cnpm),使用命令行输入,回车:

npm i

如果用淘宝镜像装不上的话,报错信息含有“要安装python”的相关信息,就删掉node_modules 切换回原镜像试试

npm config set registry https://registry.npmjs.org/
3. 修改配置文件,连接后台

修改 .env.production 连接后台,

  • VUE_APP_BASE_APImall4v 这个项目连接的是admin.jar提供的接口

  • VUE_APP_RESOURCES_URL : 静态资源文件对应的url,比如七牛云之类的

    # just a flag
    ENV = 'production'
    
    // api接口请求地址
    VUE_APP_BASE_API = 'https://mini-admin.mall4j.com/apis'
    
    // 静态资源文件url
    VUE_APP_RESOURCES_URL = 'https://img.mall4j.com/'
    

如果你仔细查看我们默认的.env.production的设置的话,会看到我们的url后面加了/apis,实际上这是我们为了少创建几个子域名做的操作,如果你看到《nginx安装与跨域配置》 就能看出这里其实做了转发。

其实如果创建的子域名足够多,也就不需要nginx进行转发了,此时直接填域名即可,无需再加/apis 两个后缀了。

如下所示:

    location /apis {
		rewrite  ^/apis/(.*)$ /$1 break;
		proxy_pass   http://127.0.0.1:8111;
    }
打包,上传到服务器
  1. 使用 npm run build:prod 命令对项目进行打包
  2. 将步骤1中生成的dist 文件夹中的文件,压缩,上传到服务器nginx指定好的目录(/usr/share/nginx/admin ),解压

mall4j-admin.conf

server {
    listen       80;
	server_name  mall4j-admin.gz-yami.com;
    root         /usr/share/nginx/admin;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }
        
	# 跨域配置
	location /apis {
		rewrite  ^/apis/(.*)$ /$1 break;
		proxy_pass   http://127.0.0.1:8111;
    }
        
}

用户端api接口的nginx配置文件参考《nginx安装与跨域配置》这篇文章,修改的配置文件路径/mall4uni/utils/config.js,同样打包上传到服务器,配置nginx即可