# 环境部署

# 准备工作

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.5.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 10

# 运行系统

前往Gitee下载页面https://gitee.com/anji-plus/appsp/java (opens new window)下载解压到工作目录

# 后端运行

  1. 通过Idea或Eclipse导入加载aj-appsp/java Maven依赖包
  2. 创建数据库app_sp_service_platform并导入数据脚本app_sp.sql
  3. 修改spring.datasource.druid.xx数据库连接
  4. 修改spring.redis.xxredis连接
  5. 修改file.apk.url apk 下载路径前缀
  6. 修改upload.filename文件上传路径
  7. 打开运行 sp-app moudle下的com.anji.sp.SpAppApplication

# 前端运行

# 进入项目目录
cd aj-appsp/web

# 安装依赖
npm install

# 加载依赖项
npm install

# 本地开发 启动项目
npm run dev

打开浏览器,输入:http://localhost:80 (默认账户 admin/ajplus

若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功

提示 因为本项目是前后端分离的,所以需要前后端都启动好,才能进行访问

# 必要配置

  1. 修改数据库链接
    sp-app moudle 编辑resources目录下的application-xx.yml
    spring.datasource.druid.url: 服务器地址
    spring.datasource.druid.username: 账号
    spring.datasource.druid.password: 密码
  2. 修改redis sp-app moudle 编辑resources目录下的application-xx.yml
    spring.redis redis账号及地址
    如果要配置多节点模式请自行修改RedissonConfig配置
  3. apk文件上传及下载
    修改file.apk.url apk 下载路径前缀
    修改upload.filename文件上传路径

# 部署系统

提示:
因为本项目是前后端分离的,所以需要前后端都部署好,才能进行访问

# 后端部署

cd ./sp-app
mvn clean install -DskipTests
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
使用命令行执行:
java -jar target/sp-1.0.0.jar --spring.profiles.active=open

# 注意

上传文件的目录需要独自配置
例如:目录文件 properties中upload.filename配置/app/file-sp
服务器将创建文件目录/app/file-sp/apk 供方apk使用
file.apk.url为下载地址Nginx配置虚拟下载地址

# Nginx配置

server {
    listen       80;
    server_name  open-appsp.anji-plus.com;

# 前端Html目录
    location / {
        root   /app/portal-appsp;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html 404;
    }
# 接口地址统一加sp前缀
    location /sp {
        proxy_pass http://10.108.0.1:8081;
    }
# 文件下载地址
    location /download {
        alias /app/file-sp/apk/;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

# 前端部署

当项目开发完毕,只需要运行一行命令就可以打包你的应用
cd /aj-appsp/web

# 打包正式环境
npm run build:prod

# 打包预发布环境
npm run build:uat

构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.css、index.html 等静态文件。 通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。

注意:
config/xxx.env.js是对应环境的接口地址,如果要添加或替换xxx.env.js,需要修改webpack.prod.conf.js的及package.json的scripts

如下:

// webpack.prod.conf.js
//如果要修改xxx.env.js中的NODE_ENV和webpack.prod.conf.js是一一对应的
var env = require('../config/dev.env')
if (process.env.NODE_ENV === 'testing') {
  env = require('../config/test.env')
}
if (process.env.NODE_ENV === 'production') {
env = require('../config/prod.env')
}
if (process.env.NODE_ENV === 'uat') {
env = require('../config/uat.env')
}

//package.json
//如果要修改xxx.env.js中的NODE_ENV也需要变动package.json的scripts
"scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "dev:test": "NODE_ENV=testing npm run dev",
    "dev:uat": "NODE_ENV=uat npm run dev",
    "dev:prod": "NODE_ENV=production npm run dev",
    "start": "npm run dev",
    "build": "cross-env NODE_ENV=production node build/build.js",
    "build:dev": "cross-env NODE_ENV=development node build/build.js",
    "build:test": "cross-env NODE_ENV=testing node build/build.js",
    "build:uat": "cross-env NODE_ENV=uat node build/build.js",
    "build:prod": "cross-env NODE_ENV=production node build/build.js"
  }

# 常见问题

  1. 后端服务部署 ip2region.db 需要放到Nginx上 然后将 sp-auth 模块下IPUntils.java 中 getCityInfo的dbPath替换成Nginx中ip2region.db的目录
  2. 目录文件 .propertiesupload.filename配置/app/file-sp
    服务器将创建文件目录/app/file-sp/apk 用来放apk使用
    file.apk.url为下载地址Nginx配置虚拟下载地址
  3. 行为验证码右下角logo乱码
    请参考:AJ-Captcha Wiki (opens new window) Wiki