【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)
服务器部署-服务端篇
前言
这几天又捣鼓了一下服务器部署相关的东西(总不能让前段时间买的一台云服务器荒废了是吧),然后也想着有个地方记录一下这段时间的收获等等。于是~ 有了此文
1. 服务器准备
需要准备一台云服务器,主流的腾讯云或者阿里云都可以,这里以腾讯云为例
自用的话,2核2G的配置即可
地域地区选离自己最近的即可
镜像安装选的是centos7版本
云服务器准备完成后,会有公网ip和内网ip
顾名思义:
- 公网IP:可以被互联网上的任何设备访问,用于与外部网络通信。
- 内网IP:只能在云服务提供商的内部网络中访问,用于云服务器之间的通信。
没有额外购买域名,绑定域名的情况下,我们一般用公网ip访问即可(例如shell类型的连接)
2. 服务器环境准备
由于使用nodejs作为服务端,所以要安装相关的依赖包等
开发环境:NVM(node版本切换)、Node、PM2(进程守护)等
可以选择直接安装node,但是如果要想切换版本,可以安装nvm来控制切换node版本
2.1 添加github hosts
直接安装nvm,可能会遇到github下载安装慢的问题,这里需要修改hosts 在 服务器目录 /etc 下有一个hosts文件,用管理员身份修改添加一行即可
sudo vi /etc/hosts
注意github的ip可能会变化,如何获取对应的ip,最简单的方法是 ping一下 github.com即可
2.2 安装nvm
直接执行
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
可能会需要几次确认,一直输入 y 即可
安装完成后,正常情况下查看 ~/.bashrc文件会发现添加了这些东西(如果没有,尝试重新安装nvm)
运行命令检查是否安装成功
如果不生效,尝试 source 一下 ~/.bashrc 文件或者关闭重新进入shell
source ~/.bashrc
2.3 安装node
上一步已经安装了nvm,可能使用nvm来安装node版本
nvm install 16.15.0
检查安装的node版本
nvm ls
这里安装node v16.15.0的版本 如果安装了多个node,需要切换的话,运行
nvm use 16.15.0
tips: 注意这里有个坑,如果安装node18以上的版本,centos7是不兼容的,要么升级到centos8要么把开发环境打包进docker,进行部署
查看node是否安装完毕
node -v
2.4 安装PM2、yarn等依赖包
npm i -g pm2 yarn@1.22.19
后续打包完nodejs服务后,当然可能直接运行 node xxx.js 把服务跑起来,但是可能会出现服务挂掉等情况,这里使用了pm2作为进程守护,可以自动重启和管理服务,更多内容可以查阅 pm2文档
tips: 注意如果习惯用yarn来管理,最好不要安装最新版的yarn,安装到v1.22.19版本即可,最新版本可能会不太兼容一些旧项目(比如会对packageManage校验版本等)
2.5 给自己的项目划分一下文件夹
项目部署,一般可以把服务端、数据库、前端等项目划分开来(当然也可以不划分)
这里在 /home 目录下建了project的文件夹,作为部署的项目位置
project文件夹下,区分Server、Client等 log存放一些日志(如有必要)
3. 服务端
3.1 打包上传、运行服务
本地打包好自己的nodejs服务后,可以通过xftp或者其他方式上传到服务器对应的文件中
这里上传到上一步创建的 /home/project/Server 文件夹中
这里可以直接node server.js 文件 运行服务
当然这里我选择使用pm2来管理
pm2 start server.js
pm ls
浅试一下写的接口能不能通过公网访问
成功访问
3.2 开放指定端口访问
如果用的不是默认80端口,而且服务端自定义的端口,然后又想把服务端端口暴露在公网测试的话,需要开放出对应的端口进行验证(一般服务端不用80端口的接口,为了留给前端nginx访问用;一般不会暴露服务端端口在公网上,不安全,测试完关掉即可)
这里如果用的是腾讯云(其他的也类似) 打开云服务器实例的防火墙,添加规则
写在最后
服务器部署相关的后端篇告一段落,其中也是踩了一点点坑,比如之前一直想安装node18的版本,然后报错;或者是先安装了node,再想安装nvm,然后就是nvm安装缓慢,又去找了修改hosts的方法等等,其中还发生过一不小心把服务器的东西全删了的情况(tx云竟然不阻止 rm -rf /* 这种类似的危险命令 !!!气抖冷)好在虽然有点小折腾,总体上还是顺利解决的~ (ChatGPT真是好朋友 泰裤辣!)
后续会整一篇 服务器部署的前端相关的内容,记录一下新的折腾~
转载自:https://juejin.cn/post/7367674099877494811