创建 deploy

在项目中创建 deploy 分支

定义编译命令

在项目目录中:

1
npm install rimraf --save-dev //安装这个包,这个包带了一个命令行工具可以删除掉指定的目录

在项目根目录创建一个配置文件 tsconfig.build.json,这个配置文件是给生产环境准备的:

1
2
3
4
{
"extends":"./tsconfig.json", //继承这个配置
"exclude":["node_modules","test","dist","**/*.spec.ts","**/*.test.ts"]
}

打开 package.json,在 script 中配置命令:

1
2
"prebuild":"rimraf dist",  //删除dist,这个命令会在执行build命令之前自动执行
"build":"tsc -p tsconfig.build.json" //编译,并使用配置文件

迁移数据库到生产环境

  1. 打开 tableplus 这个数据库客户端软件,连接到本地运行的数据库服务,选中所有数据表,右键-export 导出,在 sql 选项卡中只勾选 include table structure 这个选项(只包含表格结构),再点击 export,选择一个位置,保存。
  2. 打开生产环境的数据服务连接,右键-import-from sql dump,找到刚才导出的文件,点击 import 确定导入,现在生产环境的数据库中,就会出现应用需要的数据表了。

把本地 master 分支推送到远程仓库上

应用的代码可以通过 github 部署到远程仓库上。

1
2
3
4
5
git checkout develop
git merge deploy
git checkout master
git merge develop
git push origin master

在远程仓库添加部署秘钥

在终端,用 ssl 远程登录到服务器

1
2
3
4
5
ssh chenxunan@114.114.114.114 // 远程登录服务器
cd /mnt //进入根目录,可以把要部署的应用放在这个目录里面
sudo dnf install git -y //安装git
git clone 此处是项目的git地址 //将git上的项目克隆到这个目录中,这里问确定要连接吗:yes。如果提升无法读取远程仓库,是因为服务器没有权限克隆项目的远程仓库,可以这样。
cat ~/.ssh/id_rsa.pub //查看公钥文件,复制,在github的项目远程仓库中点击设置-deploy keys-add deploy key。粘贴进去,取个名字。可以勾选一下allow write access(允许写入的权限),点击add key。配置好后,服务器就有权限使用这个远程仓库了。

在生产环境上部署与运行应用

1
2
3
git clone git项目地址 //在服务器根目录中克隆项目
cd xb2-node
npm install //安装项目依赖

完成后要在项目根目录下面创建一个环境变量文件,然后将项目的环境变量文件根据实际情况修改后粘贴进来。然后把本地的环境变量文件恢复成修改前的样子。

1
2
3
4
5
6
vi .env // 进入编辑模式,粘贴,esc,:wq
npm run build //编译应用
pm2 stop node-app //停掉之前运行的应用
pm2 delete node-app //从进程中删掉
pm2 start dist/main.js --name xb2-node //启动项目并设置名字
pm2 list //查看pm2管理的应用列表状态

想查看应用输出到控制台上的东西可以使用

1
pm2 log xb2-node

然后可以测试一下相关的接口是否正常可用。

修改 nginx 的请求主体数据不超过 1m 的问题

1
sudo vi /etc/nginx/nginx.conf

在 http 区块里可以添加一个配置,按 i 进入编辑输入,编辑完成后 esc,:wq。这个也可以放在特定的 server 里,影响单独服务,在 http 中会影响全部。

1
2
3
client_max_body_size 512m;

sudo systemctl reload nginx

应用提升文件夹不存在的时候:

1
2
cd /mnt/xb2-node
mkdir uploads