安装rap2
1、安装 node
2、git
3、redis
4、mysql
请确保上面的都安装完成
由于 客户端:rap2-dolores 是建立在 服务端:rap2-delos 基础上,因此先搭建服务端应用
下载服务端代码
git clone https://github.com/thx/rap2-delos.git
目录:rap2-delos/src/config
文件:config.dev.ts;config.local.ts;config.prod.ts 请把三个文件都修改 请看下面注释
修改:config.dev.ts文件中db对象中username,password参数与本地或者开发环境的数据库信息匹配
上面三个 配置文件 config.*.tx 都要修改 主要是针对 mysql 做修改
import { IConfigOptions } from "../types";
let config: IConfigOptions = {
version: '2.3',
serve: {
port: 8080, // 这个端口可以自定义 我这边采取默认的8080,待会前端配置服务器地址的时候就配置这个
},
keys: ['some secret hurr'],
session: {
key: 'rap2:sess',
},
db: {
dialect: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',//用户
password: ''mysqlpw',// 密码
database: 'RAP2_DELOS_APP',// 数据库名字 可以自定义 但是要记住
pool: {
max: 80,
min: 0,
idle: 20000,
acquire: 20000,
},
logging: false,
},
// redis 保持默认即可
redis: {
host: process.env.REDIS_URL || 'localhost',
port: (process.env.REDIS_PORT && parseInt(process.env.REDIS_PORT)) || 6379
},
mail: {
host: 'smtp-mail.outlook.com',
port: 587,
secure: false,
auth: {
user: '[email protected]',
pass: ''
}
},
mailSender: '[email protected]',
}
export default config
创建数据库
自己根据上面定义的数据名字创建 我的是 RAP2_DELOS_APP
mysql -uroot -p -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci';
进入项目根目录
# cd rap2-delos
安装项目所需依赖
# npm install
全局安装PM2 这是用来启动服务端代码的
# npm install -g pm2
安装 TypeScript 编译包
# npm install typescript -g
执行编译
# npm run build
如果上面编译报错 rimraf: command not found 则执行 npm install rimraf --save-dev -g 其他错误根据具体去处理
初始化数据库 如果不执行上面的编译 直接执行初始化数据库会报错
# npm run create-db
如果上面报错 sh: cross-env: command not found 则先执行 npm install --save-dev cross-env -g
# npm run check
如果上面报错 sh: tslint: command not found 则先执行 npm install -g tslint typescript
开发模式 启动开发模式的服务器 监视并在发生代码变更时自动重启 (第一次运行比较慢,请耐心等待)
# npm run dev
生产模式 启动生产模式服务器
# npm start
没报错代表启动了起来 如果启动失败,请确认node 已经是10版本以上,如果不是 请先切换版本 nvm use v10.15.0
1、执行命令 如下显示则代表数据库连接正常
# pm2 log
DATABASE √
HOST localhost
PORT 3306
DATABASE RAP2_DELOS_APP
2、浏览器查看 ip:8080 请记得开放 8080 端口[下面代表启动正常]
RAP2后端服务已启动,请从前端服务(rap2-dolores)访问。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores).
部署问题
1、执行npm run create-db命令,提示Unable to connect to the database:{ SequelizeAccessDeniedError: Access denied for user 'root'@'localhost' (using password:NO)}
原因:未修改rap2-delos/src/config目录下数据库配置文件,或者是与文件中的数据库信息与之连接的数据库信息不匹配
解决方法:修改config.dev.ts文件数据库配置信息
如果修改正确无误后,执行npm run create-db依旧出错,那么查看该项目中是否已经存在dist目录,如果有,请按照如上修改对应的数据库配置信息
2、执行npm run dev命令,提示Error: listen EADDRINUSE :::8080
原因:8080 端口被占用
解决方法:杀掉占用 8080 端口的应用
3、执行npm install 命令,提示hiredis 编译无法通过
原因:无权限操作rap2-delos/node_modules/hiredis路径
解决方法:sudo npm install
如果提示sudo: npm: command not found,请参考 stackoverflow-npm,stackoverflow-node
4、执行npm run dev可以正常启动,npm start命令无法正常启动服务
原因:请使用pm2 logs查看日志具体定位
5、示例:由于 Redis 的安全模式,不能正常使用
ReplyError: Ready check failed: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions:
1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent.
2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server.
3) If you started the server manually just for testing, restart it with the '--protected-mode no' option.
4) Setup a bind address or an authentication password.
NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.
解决方法: 使用--protected-mode no方式启动
获取源代码
git clone https://github.com/thx/rap2-dolores.git
执行不成功 多执行几次,或者直接在浏览器打开 https://github.com/thx/rap2-dolores.git 去下载压缩包回来
目录:rap2-dolores/src/config
文件:config.dev.ts; 其中 dev,表示开发环境,其他同理
修改:config.dev.ts文件,serve地址是 服务端 rap2-delos 部署成功后的地址,默认:'http://localhost:8080'
最终修改如下 配置文件如下 请注意 ip 那里 不能使用 127.0.0.1 请使用服务器ip
module.exports = {
serve: 'http://ip:8080',
keys: ['some secret hurr'],
session: {
key: 'koa:sess'
}
}
# npm install 【如果报下面错误】
错误
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/data/wwwroot/rap2-dolores/node_modules/node-sass/.node-gyp'
错误解决
1、在项目根目录创建.npmrc文件,复制下面代码到该文件
phantomjs_cdnurl=http://cnpmjs.org/downloads
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
registry=https://registry.npm.taobao.org
2、删除之前安装node-sass包
# npm uninstall node-sass
3、重新安装
# npm install -g node-sass
如果上面还是不成功还是报错
ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/data/wwwroot/rap2-dolores/node_modules/node-sass/.node-gyp'
安装淘宝 npm
# npm install -g cnpm --registry=https://registry.npm.taobao.org
使用cnpm 安装node-sass
# cnpm install -g node-sass
执行成功后 再执行npm install
01、开发模式 自动监视改变后重新编译
# npm run dev
备注:测试用例
# npm run test
02、生产模式 编译 React 生产包
# npm run build
使用 nginx 服务器路由到编译产出的 build 文件夹作为静态服务器即可
配置如下 8181 是我的前端页面端口
server {
listen 8181;
server_name _;
root /data/wwwroot/rap2-dolores/build;
index index.html index.htm;
location / {
try_files $uri /index.html;
}
error_page 500 502 503 504 /500.html;
}
重新加载配置文件
# systemctl reload nginx
访问服务 ip:8181 成功
如果不成功 一直有圈圈在转 请查看 rap2-dolores/src/config/config.dev.ts 文件 ip 必须是服务器的ip 不能是127.0.0.1
module.exports = {
serve: 'http://ip:8080',
keys: ['some secret hurr'],
session: {
key: 'koa:sess'
}
}
配置完成后 重新运行 npm run build 即可
参考文章