id | title |
---|---|
deploy |
部署项目 |
使用 salt 脚本,在目标服务器上安装 node
和 pm2
。
确保账号拥有目标服务器的
sudo
权限,且远程登录过,否则会提示无权限或 ip 地址有问题。
在 Portal 系统的应用树中选择 appcode 对应的节点,按着下面的步骤操作:
- 选择【主机】
- 勾选要部署的服务器
- 选择【Salt部署】
- 点击【执行命令】
- 在弹框中输入下面的命令
sudo salt-call state.sls qunardev.hnode.nodejs_lts12 && sudo salt-call state.sls qunardev.hnode.pm2_v4 && sudo pm2 startup
Linux crontab
是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
我们经常会用到 crontab ,如日志文件定期清理、定时执行数据抓取任务等。通常配置 crontab 任务需要远程登录到服务器,这个过程比较浪费时间,而且当服务器集群过大时,如何保证所有服务器配置一致也是个问题。对于这个问题,nice-node 的解决方式是 本地编辑、远程同步
,就是在本地编辑 crontab 任务列表,发布时同步到服务器,这样操作起来简单方便,而且能保证多服务器上配置完全一致,具体做法是:
- 在项目根目录新建
crontab
目录和crontab/crontab.txt
文件 - 按着标准的 linux crontab 任务配置方式在
crontab/crontab.txt
中创建任务,如# 每天凌晨5点删除过期的日志文件 0 5 * * * sh /some-where/your-script.sh 1>/dev/null
Nice-node 发布时会根据 appCode
先清除已有的 crontab 任务(执行脚本的路径中能模糊匹配到 appCode 的任务),然后再将 crontab/crontab.txt
中配置的任务添加服务器的系统任务列表。
项目源代码都放在 src
目录下,发布时会编译到 dist
, src
下的文件没有必要发布到目标服务器。同理,像 package-lock.json
这种文件也不需要发布到目标服务器。
Portal 上有个
部署时需排除文件(excludes)
参数,目的就是排除不需要部署的文件,但这个功能有bug,比如配置了src
,那么所有路径中包含 src 关键字的文件都会被忽略,包括node_module/debug/src/index.js
这种文件,这和我们期望的不一致。
注意:
pom.xml
是用来做前端工程关联的,maven
同步前端资源是发生在目标服务器上,因此pom.xml
必须发布到目标服务器。
Nice-node 内置了一个默认同步忽略文件列表,点击查看 。如果默认列表满足不了需要,你可以创建一个自定义的同步忽略文件列表,具体做法是:
- 在项目根目录新建
.syncignore
文件。 - 在
.syncignore
里列出需要忽略的文件或路径。- 每行一个文件或目录
- 空行和井号开头的行(就是支持
#
单行注释)会忽略 - 行首、行尾的空格会剔除
- 路径是相对于项目根目录的,不支持模糊匹配,不支持部分匹配
我们来看一个示例:
###################################
# .syncignore
# 以下文件和目录将在编译执行成功后删除
# 避免同步到目标服务器
###################################
# 下面的规则只能匹配 /src
# 不能匹配 test/src
# 也不能匹配 /sr
src
# 不支持通配符,下面的指定是不合法的
# src/*.ts
以下是在新建发布任务时需要配置的参数,没有提到的参数不用修改,使用默认值即可。
- 基础信息
- 应用类型:
node
- 应用类型:
- 编译参数
- 分支策略(branch_strategy)
分支发布
- 编译方法(compile_method)
node
- node_version
12.x
- 编译自定义命令(compile_command)
npm run build
- 分支策略(branch_strategy)
- 部署参数
- 部署源路径(target_dir)
./
- 部署目标路径(deploy_dst)
/home/q/www/${appcode}/webapps
- 服务心跳检测路径(healthcheck_root)
/home/q/www/${appcode}/webapps
- 应用端口(app_port)
3000
- 服务启动检测地址(check_urls)
/check_urls
- 启服务脚本(start_websrv_scripts)
${appcode}_start
- 停服务脚本(stop_websrv_scripts)
${appcode}_stop
- 部署源路径(target_dir)
如需关联前端项目,需要检查 pom.xml
设置,确保包含 <%=appname%> 的参数都配置正确。
/deploy_scripts
目录下存放发布过程需要的启停服务脚本。文件名称需要配置到 portal 。
为了减少开发和调试的时间,nice-node 封装了启停服务的通用脚本,使用方式如下:
#! /bin/bash
# 这里需要传 appcode
APP_CODE="xxx"
source "/home/q/www/${APP_CODE}/webapps/node_modules/nice-node/scripts/start.sh"
# source "/home/q/www/${APP_CODE}/webapps/node_modules/nice-node/scripts/stop.sh"