环境的搭建
- Node.js 8.9.4+
- Mysql 5.7+
- Redis 4.0+ (最好别设置密码)
后端 rap2-delos 的部署
1.获取源代码
git clone https://github.com/thx/rap2-delos.git
2.创建数据库
- Mac or Linux
mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci';
- Windows 环境 (进入mysql命令后执行)
CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
3.配置文件
目录:rap2-delos/src/config
文件:config.dev.ts;其中dev,表示开发环境,其他同理
修改:config.dev.ts文件中db对象中username,password参数与本地或者开发环境的数据库信息匹配
4.启动项目
npm install
5.初始化数据库
npm run create-db
6.编译启动项目 执行mocha测试用例和js代码规范检查
npm run check
7.运行项目
- 开发模式
启动开发模式的服务器 监视并在发生代码变更时自动重启
npm run dev
- 生产模式
启动生产模式服务器
npm start
看到浏览器中如下提示,表示服务端delos已经部署成功
RAP2后端服务已启动,请从前端服务(rap2-dolores)访问。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores).
前端 rap2-dodores 的部署
# 拉取代码
git clone https://github.com/thx/rap2-dolores.git
# 切换目录
cd rap2-dolores
# 初始化
npm install
下面这步可以不做,直接配置正式。
# 开发模式配置**(开发配置可以不做)
配置文件路径:/src/config/config.dev.js
module.exports = {
serve: 'http://127.0.0.1:8080',
keys: ['some secret hurr'],
session: {
key: 'koa:sess'
}
}
更改serve 字段
改成我们的后端访问地址。 注意加 http://
# test cases 测试用例
npm run test
# will watch & serve automatically 会自动监视改变后重新编译
npm run dev
正式配置,必须配置
# 正式配置
配置文件路径:/src/config/config.prod.js
module.exports = {
serve: 'http://127.0.0.1:8080',
keys: ['some secret hurr'],
session: {
key: 'koa:sess'
}
}
更改serve 字段
改成我们的后端访问地址,访问地址直接使用ip,不要使用127.0.0.1。 注意加 http://,
# 编译React生产包
npm run build
# 安装serve
npm install -g serve
# 运行
serve -s ./build -p 80
-p 为指定端口
# 后台运行
nohup serve -s ./build -p 80 &
rap2使用方法
这里我提供两种使用方法,大家根据自己的项目自行决定使用哪种方法。
1.前端:使用webpack-dev-server
proxy: {
"/api": {
target: "http://10.96.78.185:3000/",
secure: false, #是否支持https
changeOrigin: true
}
}
2.后端:http-proxy-middleware 当后端使用node 的express框架时,可用如下方法,使用时,请先下载http-proxy-middleware模块。
var express = require('express');
var proxy = require('http-proxy-middleware');
var app = express();
app.use('/api', proxy({target: 'http://localhost:3001/', changeOrigin: true}));
app.listen(3000);
后期改进
后期打算将rap2实现sso接入,sso广泛应用于大型企业中。sso的好处是,用户只需登陆一个子系统,在进入其它子系统时,只需验证,而无需重复登陆,这样做可以极大的提升办公效率。
部署时遇见的问题
1.Can't connect to local MySQL server through socket '/tmp/mysql.sock'
错误原因:mysql服务未正常启动, 重启mysql服务即可(mysql.server start)
2. NOAUTH Authentication required 错误原因:项目中redis的密码和redis数据库的密码不匹配,修改项目中redis数据库相关信息。 3. npm install 时出错 解决方法:npm install --unsafe-perm