记一次服务迁移

2019-08-12  本文已影响0人  般犀

最近迁移了一下一个小网站,从一台机器迁移到另一台,虽然过程其实很简单,但还是有些东西可以记一下。

迁移过程

先从旧机器的mongoDB上把数据导出来,数据导入导出的方法可以参考:MongoDB 的更新操作、数据导入,数据库导出,导出后我把数据放在了项目的gitlab仓库里。

在新机器上选一个文件夹,使用git clone [gitlab仓库地址]就把项目拉下来了。拉下来后以为可以跟windows一样npm i就完事了,但是下载一直卡住,后来去请教了大佬,大佬说尽量不要在机器上使用npm i,因为这样会占用网络带宽,会使机器上的其他服务受影响。他的建议是将本地开发的node_modules压缩后放在项目里,随项目git pull到机器上即可。

将项目的包都拉到机器上后,想着可以输入运行指令了吧!可曾想npm run prd后发现报错cross-env无法使用,这个问题暂时无解,因为用了替代的方法,没有使用npm script启动了,而是直接使用pm2 node/www启动了项目。

启动成功后以为可以平稳运行了,却发现过了一会后就显示进程状态错误停止了。又去请教大佬,大佬教了一个指令pm2 logs 0查看 pm2 日志,发现 pm2 日志提示logs: No such file or directory,意思是没有logs文件夹,于是用mkdir logs创建了logs文件夹。

没一会发现又失败了,再看日志,发现日志里的错误变成了permisson denied write to file xxxx.logs 意思是没有权限在logs文件夹里做读写操作。又又跑去请教大佬,大佬将文件夹的权限修改了后,程序终于稳定运行了。这里又涉及到了 linux 的文件夹读写权限知识。

简单地说,就是 linux 系统里有三种角色:user, group, other,每个角色对文件的操作权限都不同,我们可以使用 root 权限对某一个文件的权限用 chmod 指令修改,授予/取消某个角色操作一个文件的能力。

安全相关

程序部署上去后,一开始想着是不是也跟部署自己的机器一样,要开放程序的运行端口让外部访问呢,但是发现端口怎么都打不开,又跑去问了大佬,大佬说一般不会直接开放某个端口让外部访问,而是通过 Nginx + 域名路径,从 80 端口访问,再根据域名路径访问相应的服务。

程序运行起来后发现,使用IP还是可以直接访问到服务,大佬觉得这样不安全,不能让别人用IP就可以访问到网站,大佬让我不要让node服务listent 0.0.0.0,改为127.0.0.1,这样,服务就只能通过127.0.0.1访问了,而不会通过公网IP访问到。

关于127.0.0.1和0.0.0.0的区别,可以看127.0.0.1和0.0.0.0地址的区别这篇文章。

代码发布

我司的代码发布流程是使用的 rsync,将代码从 gitlab pull下来后,使用 rsync 同步到外部机器,至于代码一开始是 pull 到哪台机器,这个还要请教一下相关的同事。

以上就是一次服务的迁移过程,虽然难度不大,但是涉及到了一些 Nginx 和 Linux 相关的知识。

上一篇 下一篇

猜你喜欢

热点阅读