likes
comments
collection
share

前端如何将node.js 和mongodb部署到linux服务器上!

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

记录了我第一次成功部署node.js 和mongodb到linux服务器上了,期间也遇到一些小坑,但是网上各位大佬记录的文章帮了大忙,所以我也将过程记录了下来。

安装Node

使用nvm

linux上安装node,肯定首选nvm,因为这样可以控制node的版本。

安装git:

sudo apt install git

# 安装完后运行一下验证是否安装成功
git --version

pull nvm的代码的:

git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

配置nvm的环境变量:

echo ". ~/.nvm/nvm.sh" >> /etc/profile
source /etc/profile

安装完nvm后,就可以执行以下nvm的常见命令:

# 安装最新版本命令
nvm install node

#  查看远程版本
nvm ls-remote

# 查看安装的版本
nvm ls

# 查看当前使用版本
nvm current

# 安装具体版本
nvm install v18.15.0

# 使用安装的版本
nvm use v18.15.0

升级ubuntu版本

我安装的是node 18.15,然后由于我装的Ubuntu 版本老旧,导致我无法运行node,报错为node: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.28 not found (required by node)

然后是这条stackoverflow的答案救了我,具体就是升级了ubuntu的版本:

前端如何将node.js 和mongodb部署到linux服务器上!

使用pm2运行代码

接下来,就是让node代码跑起来。我是把代码上传到github,然后直接pull到服务器上跑。这里使用pm2来监控和运行node服务:

# 安装
npm i -g pm2

# 跑项目
pm2 start xxx.js
# 或者跑项目的时候为项目名个名字
pm2 start xxx.js --name server-pdd

# 查看运行了哪些进程
pm2 list

# 停止进程
pm2 stop server-pdd 

# 重启
pm2 reload server-pdd
## 重启所有
pm2 reload all

# 删除某个进程
pm2 delete server-pdd

# 查看进程的详情
pm2 show server-pdd

# 监控性能
pm2 monit

前端如何将node.js 和mongodb部署到linux服务器上!

Mongodb

安装运行

我是直接按照官网教程操作的,教你如何下载安装mongodb,运行,停止。

我遇到的问题:本地无法连接远程的mongodb ,最后是参考这篇文章来解决的:www.digitalocean.com/community/t…

原因:

  1. 没有让防火墙放通
  2. 没有让mongodb bind ip
  3. 完成前面2步后,没有重启mongodb

一切都搞定后,有空记得看看mongodb的官网教程。哈哈,我也没有看,需要的时候再看吧。

设置用户名密码

虽然是练手用的,但是还是设置一下用户名和密码比较好。可参考简书上的这篇文章官网文档

输入mongosh 进入mongodb的交互式终端:

前端如何将node.js 和mongodb部署到linux服务器上!

# 切换到admin数据库
use admin

# 创建管理员
db.createUser(
  {
    user: "admin",
    pwd: passwordPrompt(),
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  }
)

配置好管理员后,然后在/etc/mongod.conf配置文件中开启权限校验,然后重启mongod。

sudo su - root
nano /etc/mongod.conf

# 在 /etc/mongod.conf 增加下面2行
security:
	authorization: enabled

# 重启
sudo systemctl restart mongod

然后重新运行mongosh终端,会显示连接成功了,但是无法执行其他命令:

前端如何将node.js 和mongodb部署到linux服务器上!

# 切换到admin数据库后登录
use admin
db.auth('admin', '123456')

# 如果是远程连接的话,url就变成了mongodb://admin:123456@你的服务器ip:27017/

命令行

记录一下我觉得比较有用的命令行。

netstat -nltp  # 查看服务器网络连接状态
root@VM-24-5-ubuntu:~# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      298356/mongod       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/init              
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      992/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      112156/sshd: /usr/s 
tcp6       0      0 :::111                  :::*                    LISTEN      1/init              
tcp6       0      0 :::22                   :::*                    LISTEN      112156/sshd: /usr/s 

切换为管理员:

sudo su - root

mongodb启动终止操作:

## 启动
sudo systemctl start mongod

## 验证状态
sudo systemctl status mongod

## 停止运行
sudo systemctl stop mongod

## 重启
sudo systemctl restart mongod

总结

遇到问题就多查询,Stack Overflow上总有解决办法的。就算完全搞砸了,也没有关系,不管你用的哪个云服务器厂商的服务器都可以一键重装系统再次尝试。实在实在不行,还可以通过宝塔面板来可视化操作。