一,下载node及MongoDB
- Node.js选版本下载:
2.MongoDB选版本下载:
安装完成后直接点击bin目录中的mongod.exe,启动即可运行服务。
安装教程详见:
二,安装PM2:
- 使用运行窗口以管理员身份运行PowerShell
第1步: 同时按下Windows + R键以弹出“运行”对话框。
第2步: 在框中键入PowerShell,然后单击OK(确定)按钮。 普通的Windows PowerShell将以当前用户身份启动。
第3步: 键入如下命令,然后按“enter”键。
start-process PowerShell -verb runas
第4步: 以上命令将以管理员身份提升Windows PowerShell的权限。
2.管理员cmd窗口运行:
npm install pm2 -g
3.安装windows自启动包:
npm install pm2-windows-startup -g
4.执行命令:
pm2-startup install
5.查看是否安装成功:
pm2 -v
三,数据备份及还原
scp数据库备份文件到本地,windows用robo3T直接import界面功能将bson文件导入本地数据库
四,启动服务
启动node服务遇到:
MongoError: Unsupported OP_QUERY command: listIndexes.
The client driver may require an upgrade.
For more details see https://dochub.mongodb.org/core/legacy-opcode-removal
查看dochub.mongodb.org/core/legacy…发现:OP_QUERY命令已经废弃,那就是说mongoose版本过低,和新安装的mongodb版本不兼容导致,我选择将mongo版本降到6.0一下。
重新安装低版本mongo后重启node服务报错:
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
查到资料:
上面出现的 ::1 是 ipv6 的 localhost 地址,但是 mongoDB 是在 127.0.0.0:27017上侦听的,(ipv4的 localhost(127.0.0.1)),所以连接 ::1:27017 会失败。
所以要想连接 mongodb 数据库成功,必须将服务器中 ipv6 的 localhost 修改为 ipv4 的 localhost。但是要想修改成功,这里会有一个 ipv6 与 ipv4 在我们服务器的优先级问题。
所以,下面推荐一篇修改 ipv6 与 ipv4 的优先级文章,按照这篇文章修改即可解决连接本地mongo数据库失败:connect ECONNREFUSED ::1:27017 的问题。
win10 localhost 解析为::1 的解决办法
node.js 18默认使用ipv6,我没有选择采用使用高版本node并解决::1问题的解决方式,而是降低node.js版本到16以下(包含16)来解决问题。
至此,服务成功重启。
五,总结
windows自带的powershell权限太低,好多linux下加个sudo就能运行的命令,windows都需要在管理员powershell中才能完成,这点让我很不习惯。
另外,下载个软件太多的关联下载,比如下载mongo竟然默认关联mongo compass,这让我很不舒服。mac 用命令行就很方便,没有这么多事。
值得一提的是windows版本的Robo3t确实比mac版强大很多,多了很多图形化的傻瓜操作,确实不错。