Node-web05-09-01博客统部署优化解释

上次部署的服务器

我们在服务器修改了部分文件,如果直接 git pull 就会有问题

git 通灵术使用

  • git status 查看修改的文件状态
  • 假如我们服务器的代码 修改了 xx.txt 内容,拉取的时候不想冲突
  • 你就 git stash 把它存入一个地方
  • git status 状态就是空的了
  • 然后 git pull 下载最新代码
  • 恢复刚才藏起来的代码 git stash pop

设置环境变量导致的bug

  • 我们设置了 export NODE_ENV=production
  • 这样 yarn install 的时候 dev依赖就会被忽略
  • 解决办法是
1
yarn install --production=false

在服务器执行本地脚本

1
2
3
4
5
6
7
ssh blog@dev1 "echo hi > /tmp/xxx"

# 你会发现你服务器上的 多了`/tmp/xxx` 文件 内容是 hi

# 项目里声明一个 deploy.sh
# 本地的脚本在服务器端执行
ssh blog@dev1 "bash -s < bin/deploy.sh"

解决json配置两个环境不一致问题

  • 由于json不能改,所以这是一个痛点,因为本地和 生产环境 的配置“不一致”
  • 复制 ormconfig.json 内容到ormconfig.sample.json
  • 然后 .gitignore里 忽略ormconfig.json

解决配置文件要在git pull 之后修改的问题

  • 在服务器 ~/shared/ormconfig.json这样建立文件
  • 然后在你的项目里 通过“软链接” 来分离配置和项目代码
  • 项目目录里运行ln -s ~/shared/ormconfig.json
    • 这样你服务器环境的配置文件是 软链接的文件
    • 你本地开发可以自己参考 ormconfig.sample.json 建立dev的配置ormconfig.json
    • 这样两边就不一致了

补丁包使用

  • 我们的 src/entity/User.ts 里有数据库validate操作 yarn m:run 数据库迁移时会报错
  • 所以服务器和本地的时候,我们都要把对应操作注释掉执行 yarn m:run迁移数据库,然后在把注释恢复
  • 这样就非常的 ”蛋疼“

git create patch from diff

  • step01 假如数据库迁移的时候需要的xxx.js文件内容是
1
2
3
aaa
// bbb
ccc
  • step02 而数据库迁移之后,我们xxx.js 的内容是这样
1
2
3
aaa
bbb
ccc
  • step03 将git diff的内容 完整拷贝到 migrate.patch 文件里
1
git diff > migrate.patch
  • step04 然后取消掉 migration 要做的文件改动,即 xxx.js内容为
1
2
3
aaa
bbb
ccc
  • step05 运行补丁,
1
2
3
4
5
6
git apply migrate.patch

# 运行后 xxx.js 内容为
aaa
//bbb
ccc
  • step06 撤销操作git reset --hard HEAD