RAP2 是採用先後端分離的形式,所以搭建完整的 RAP2 須要 服務端:rap2-delos,客戶端:rap2-dolores 同時部署html
部署 RAP2 須要親具備 Node+Linux+MySQL 的運維知識,若是親對此不是很瞭解,建議用 http://rap2.taobao.org 線上版本就能夠前端
因爲 客戶端:rap2-dolores 是創建在 服務端:rap2-delos 基礎上,所以先搭建服務端應用node
- 截至到 2018-08-01 delos 並無發佈 Tag 版本,應該還處於功能開發前期階段吧。本教程是在 CentOS 機器上實戰部署
- 然而安裝部署並非順利,所以記錄踩過的坑(別問我爲啥不用 Docker,由於我司分配的機器沒法知足 Docker 的最低內核版本),安裝環境介紹:Redis,delos,dolores 均在一臺服務器,MySQL 使用已存在的服務
安裝基本工具
- Git
- Node 8.9.4+
- Redis 4.0+
- MySQL 5.7+
以上基本工具請根據自身須要,下載對應系統安裝包,請自行解決安裝配置等問題,這裏不作過多說明mysql
Redis 安裝可參考 Linux 經常使用應用安裝;
Redis 最好用非安全模式啓動linux
服務端 delos 環境搭建
構建項目
構建項目前,請確認 Node,Redis,MySQL 服務均能正常使用nginx
1 |
git clone https://github.com/thx/rap2-delos.git |
環境配置
建立數據庫
-
Mac or Linuxgit
1
mysql -e 'CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci';
-
Windows 環境github
進入 mysql 命令後執行redis
1
CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
配置文件
目錄:rap2-delos/src/config
文件:config.dev.ts
; 其中 dev,表示開發環境,其餘同理
修改:config.dev.ts
文件中db
對象中username
,password
參數與本地或者開發環境的數據庫信息匹配sql
import { IConfigOptions } from "../types";
let config: IConfigOptions = {
version: '2.3',
serve: {
port: 8888 //你本身設置的端口,我是設置的8888
}, keys: ['some secret hurr'],
session: {
key: 'rap2:sess'
},
db: {
dialect: 'mysql',
host: 'localhost', //mysql服務器的ip,這裏我是用的本地的mysql
port: 3306,
username: 'root', //mysql用戶名
password: 'root', //mysql密碼
database: 'RAP2_DELOS_APP', //rap2的後臺數據庫名
pool: {
max: 5,
min: 0,
idle: 10000
},
logging: false
},
redis:{
host: 'localhost',
port: 6379
}
}
export default config
啓動項目
安裝項目依賴包
項目根目錄下執行
1 |
# 安裝項目所需依賴 |
安裝 TypeScript 編譯包
1 |
npm install typescript -g |
若是下載緩慢,請使用淘寶 npm 鏡像
初始化數據庫(必需要執行的,生成數據庫初始化數據)
項目根目錄下執行 (該過程比較慢,耐心等待初始化完成)
1 |
npm run create-db |
編譯啓動項目(可執行,也能夠不執行,知識作代碼檢查)
執行 mocha 測試用例和 js 代碼規範檢查
1 |
npm run check |
-
開發模式
啓動開發模式的服務器 監視並在發生代碼變動時自動重啓 (第一次運行比較慢,請耐心等待)1
npm run dev
-
生產模式
啓動生產模式服務器1
npm start
看到瀏覽器中以下提示,表示服務端 delos 已經部署成功
RAP2 後端服務已啓動,請從前端服務 (rap2-dolores) 訪問。 RAP2 back-end server is started, please visit via front-end service (rap2-dolores).
或者在程序控制臺出現以下 Log,表示服務端 delos 已經部署成功
常見問題
部署問題
-
Windows 下執行
npm run build
,提示'rm' 不是內部或外部命令,也不是可運行的程序或批處理文件
緣由:
rm
是 Linux 下命令,
解決方法:Windows 系統可以使用git bash
打開該項目,執行該命令 -
執行
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
目錄,若是有,請按照如上修改對應的數據庫配置信息 - 執行
npm run dev
命令,提示Error: listen EADDRINUSE :::8080
緣由:8080 端口被佔用
解決方法:殺掉佔用 8080 端口的應用 - 執行
npm install
命令,提示hiredis
編譯沒法經過
緣由:無權限操做rap2-delos/node_modules/hiredis
路徑
解決方法:sudo npm install
若是提示
sudo: npm: command not found
,請參考 stackoverflow-npm,stackoverflow-node -
執行
npm run dev
能夠正常啓動,npm start
命令沒法正常啓動服務
緣由:請使用pm2 logs
查看日誌具體定位
示例:因爲 Redis 的安全模式,不能正常使用1
2
3
4
5
6
7ReplyError: 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
方式啓動 - 執行npm run create-db時,ts編譯出錯,提示ctx上下問出錯,那麼在項目根目錄中找到tsconfig.js,修改noImplicitAny的值爲false便可(注意:默認是true,npm run create-db時就會報錯)
- redis 清除緩存 運行redis-cli 執行flushall命令清空緩存
-
八、若是出現 is not allowed to connect to this mysql server的解決辦法
use mysql;
select host from user where user='root';
update user set host = '%' where user ='root'
客戶端 dolores 環境搭建
構建項目
獲取源代碼
1 |
git clone https://github.com/thx/rap2-dolores.git |
環境配置
配置文件
目錄:rap2-dolores/src/config
文件:config.dev.ts
; 其中 dev,表示開發環境,其餘同理
修改:config.dev.ts
文件,serve
地址是 服務端 rap2-delos
部署成功後的地址,默認:'http://localhost:8080'
在蘋果系統下:sudo npm install 在install node-sass時存在權限問題,須要執行:sudo npm install --unsafe-perm=true --allow-root 才能夠進行安裝
啓動項目
安裝項目依賴包
項目根目錄下執行
1 |
npm install |
若是下載緩慢,請使用淘寶 npm 鏡像
編譯啓動項目
-
開發模式
自動監視改變後從新編譯1
npm run dev
備註:測試用例
1
npm run test
-
生產模式
編譯 React 生產包1
npm run build
用 serve 命令或 nginx 服務器路由到編譯產出的 build 文件夾做爲靜態服務器便可
1
serve -s ./build -p 80
常見問題
部署問題
-
執行
npm run dev
,提示1
2
3return process.dlopen(module,path._makeLong(filename))
...
...node_modules\node-sass\vendor\win32-x64-57\binding.node is not a valid Win32 application...緣由:項目依賴包
node-sass
沒有安裝徹底
解決方法:npm install node-sass
-
項目運行起來,但一直停留在加載動畫那裏
瀏覽器控制檯輸出:
GET http://127.0.0.1:8080/account/info ==>> Failed to load http://127.0.0.1:8080/account/info
緣由:未修改
rap2-delos/src/config
目錄下服務端鏈接地址, 或者修改結果與 rap2-dolores實際提供服務地址不匹配
解決方法:修改config.dev.ts
文件 serve 配置信息若是 Windows 系統修改正確無誤後,依舊出錯,那麼查看 hosts(路徑:C:\Windows\System32\drivers\etc) 中 127.0.0.1 的 IP 前是否有
#
,若是有請取消註釋
其餘
MySQL 運行問題
- 錯誤一
緣由:MySQL 集成命令沒有加入系統的環境變量
解決方法:將安裝的 MySQL Service 路徑加入系統變量 - 錯誤二
緣由:沒有數據庫連接權限
解決方法:先登陸用 root 數據庫,密碼具體看本身數據庫當時設置的密碼
如何獲取更新
目前請選擇master
分支源碼,後續其餘分支請看相應分支說明文檔。在開發環境中 git pull 來獲取最新的源碼更新,每一期更新都會有對應的 update.md 請關注並按照上面的指示進行升級工做。