部署node服务,可以利用pm2管理进程,但是相关的mongodb也需要在环境中安装和配置,此文以本地windows环境去模拟(只是为了模拟全过程,不建议服务不是在windows环境,会使自己的电脑卡顿,很多资源进行闪退,而且自己的电脑也会常常关机),我们可以设置自启动脚本,开机自启动
1 windows服务的简介
Microsoft Windows 服务(即以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。
我们可以通过开菜单-->输入服务-->回车即可查询本机所有的服务
可以对服务进行停止,重启和删除,如下在本地开启个nginx服务,在上面方式打开的界面可以停止和重启
也可以删除该服务,使用服务相关命令
用sc.exe这个Windows命令 开始——运行——cmd.exe,然后输入sc就可以看到了。使用办法很简单: sc sc query nginx sc delete nginx
sc delete "服务名" (如果服务名中间有空格,就需要前后加引号),服务名称可以在服务的属性里找到,不要将服务名称误认为显示名称。
windows删除服务 只是将服务标记为删除 等到服务停止的时候 才会被真正的删除
2 配置mongoDb自启,将mongoDB设置为windows的服务,从而实现开启自启动
将mongoDb配置成windows的服务有两种方式,
方式一:在mongoDb安装过程中有选项可以直接按流程勾选
详见:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/
方式二:使用命令行(老版本文档里有介绍),以管理员身份打开cmd运行下面的命令
sc.exe create MongoDB binPath= ""E: oolMongoDBServer4.2inmongod.exe" --service --config="E: oolMongoDBServer4.2mongod.cfg"" DisplayName= "MongoDB" start= auto
上面的运行可能存在各种问题,总结:
Q1:执行完后没有反应,开启服务:net start MongoDB Server 结果显示:mangodb服务无法启动,发生服务特定错误:100 A:删除D:MongoDBdatamongod.lock文件 Q2:提示“服务没有响应控制” 造成错误的原因是在第一步配置时,输入有误。 A:在 cmd 中 使用 sc delete MongoDB 命令来删除之前安装的服务,并重新执行第一步并 确保准确无误。 Q3:报错“拒绝访问”,原因:则应该使用管理员身份运行cmd A:在开始页面输入cmd,右边栏中选择“以管理员身份运行”
详见:https://docs.mongodb.com/v3.6/tutorial/install-mongodb-on-windows/
3 配置node服务自启动
使用pm2管理项目,下面列出了部分常用的命令
pm2 start --name="projectName" main.js pm2 list 查看各个项目运行情况 pm2 reload name/id 挂掉了重启 Pm2 stop item-id 停止项目 Pm2 delete item-id 删除项目
1. 取最新代码 git clone https://**/*.git 2. cd projectName 3. npm install 一般部署项目时别忘记在平台安装依赖包,本文在本机尝试暂时不需要
将pm2设置为服务,在不同系统上是不同的
一般的linux系统:
pm2 list //查看你的项目是否成功启动 pm2 save //保存你的项目,可以直接看到保存到的目录 pm2 startup //设置自启动脚本,执行后悔要求设置环境变量,按下面方式设置一下即可 [PM2] You have to run this command as root. Execute the following command: sudo su -c "env PATH=$PATH:/home/unitech/.nvm/versions/node/v4.3/bin pm2 startup <distribution> -u <user> --hp <home-path> 注意:当升级到较新的Node.js版本时,请更新PM2的启动脚本! 先使用pm2 unstartup,然后再使用pm2 startup
详见官网:https://pm2.keymetrics.io/docs/usage/startup/
在windows系统,需要引入外部库,生成一个兼容Windows的启动脚本,如pm2-windows-service或pm2-windows-startup。
使用pm2-windows-startup,使用方法如下
pm2 save //保存当前的进程列表 npm install pm2-windows-startup -g pm2-startup install
现在PM2将在启动时自动恢复保存的进程。
详见:https://www.npmjs.com/package/pm2-windows-startup
pm2-windows-service详见 https://www.npmjs.com/package/pm2-windows-service
当需要卸载服务可以使用
pm2-startuo uninstall
4 nginx 服务,设置开机自启动
我们常规的方法电脑重启都需要手动start,如何进行开启自启
1 正常下载nginx解压 2 下载winSW.NET4 https://github.com/winsw/winsw/releases/tag/v2.9.0 3 配置等详见下面文章
https://www.npmjs.com/package/pm2-windows-service
注意nginx配置代理时需要小心/问题
#当请求的接口地址为/myproject/getMySource时 #实际将访问http://127.0.0.1:3000/myproject/publicPath/getMySource location /myproject/ { proxy_pass http://127.0.0.1:3000; } #实际将访问http://127.0.0.1:3000/publicPath/getMySource location /myproject/ { proxy_pass http://127.0.0.1:3000/; }
经过上面的一系列配置,可以重启下你的电脑试一下了。记录一下自己学习的全过程,如有错误或更好的方法,有大神经过感谢指点一下;
不设置自启动,每次需要开启mongodb,启动服务pm2 ,启动静态服务器nginx 启动自己的本地项目或打开静态文件; 实际我们正常安装和启动项目一样可以使用,为了更好的模拟测试环境,才设置了自启动服务等;