likes
comments
collection
share

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

作者站长头像
站长
· 阅读数 27

服务器部署-服务端篇

前言

这几天又捣鼓了一下服务器部署相关的东西(总不能让前段时间买的一台云服务器荒废了是吧),然后也想着有个地方记录一下这段时间的收获等等。于是~ 有了此文

1. 服务器准备

需要准备一台云服务器,主流的腾讯云或者阿里云都可以,这里以腾讯云为例

自用的话,2核2G的配置即可

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

地域地区选离自己最近的即可

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)


镜像安装选的是centos7版本

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)


云服务器准备完成后,会有公网ip和内网ip

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

顾名思义:

  • 公网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

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

注意github的ip可能会变化,如何获取对应的ip,最简单的方法是 ping一下 github.com即可

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

2.2 安装nvm

直接执行

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

可能会需要几次确认,一直输入 y 即可

安装完成后,正常情况下查看 ~/.bashrc文件会发现添加了这些东西(如果没有,尝试重新安装nvm)

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇) 运行命令检查是否安装成功

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

如果不生效,尝试 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

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

2.4 安装PM2、yarn等依赖包

npm i -g pm2 yarn@1.22.19

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

后续打包完nodejs服务后,当然可能直接运行 node xxx.js 把服务跑起来,但是可能会出现服务挂掉等情况,这里使用了pm2作为进程守护,可以自动重启和管理服务,更多内容可以查阅 pm2文档

tips: 注意如果习惯用yarn来管理,最好不要安装最新版的yarn,安装到v1.22.19版本即可,最新版本可能会不太兼容一些旧项目(比如会对packageManage校验版本等)

2.5 给自己的项目划分一下文件夹

项目部署,一般可以把服务端、数据库、前端等项目划分开来(当然也可以不划分)

这里在 /home 目录下建了project的文件夹,作为部署的项目位置

project文件夹下,区分Server、Client等 log存放一些日志(如有必要)

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

3. 服务端

3.1 打包上传、运行服务

本地打包好自己的nodejs服务后,可以通过xftp或者其他方式上传到服务器对应的文件中

这里上传到上一步创建的 /home/project/Server 文件夹中

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

这里可以直接node server.js 文件 运行服务

当然这里我选择使用pm2来管理

pm2 start server.js
pm ls

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

浅试一下写的接口能不能通过公网访问

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)

成功访问

3.2 开放指定端口访问

如果用的不是默认80端口,而且服务端自定义的端口,然后又想把服务端端口暴露在公网测试的话,需要开放出对应的端口进行验证(一般服务端不用80端口的接口,为了留给前端nginx访问用;一般不会暴露服务端端口在公网上,不安全,测试完关掉即可)

这里如果用的是腾讯云(其他的也类似) 打开云服务器实例的防火墙,添加规则

【服务器部署】Nodejs服务端(node、nvm、pm2、hosts) (后端篇)


写在最后

服务器部署相关的后端篇告一段落,其中也是踩了一点点坑,比如之前一直想安装node18的版本,然后报错;或者是先安装了node,再想安装nvm,然后就是nvm安装缓慢,又去找了修改hosts的方法等等,其中还发生过一不小心把服务器的东西全删了的情况(tx云竟然不阻止 rm -rf /* 这种类似的危险命令 !!!气抖冷)好在虽然有点小折腾,总体上还是顺利解决的~ (ChatGPT真是好朋友 泰裤辣!)

后续会整一篇 服务器部署的前端相关的内容,记录一下新的折腾~

转载自:https://juejin.cn/post/7367674099877494811
评论
请登录