部署node.js+express+mongodb(更新中)

1-Linux服务器部署MongoDB

1.升级

yum -y update

 2.下载MongoDB安装包

 3.上传安装包

上传目录 : /usr/local/

2-配置MongoDB环境变量并启动 

1.配置环境变量全局启动

vi ~/.bash_profile  

使用i命令进入编辑模式
添加: export PATH=/usr/local/mongodb/bin:$PATH

使用esc+:wq命令保存并退出

source ~/.bash_profile使其生效

2.建立数据路径data+日志路径logs

mkdir -p /usr/local/mongodb/data
mkdir -p /usr/local/mongodb/logs

3.启动MongoDB

方法一:路径命令

mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/logs/log.log -fork

如果报Permission denied,权限不够

sudo chmod +x /usr/local/mongodb/bin/mongod

 方法二:配置文件

建立mongodb.conf文件:
 

dbpath = /usr/local/mongodb/data
logpath = /usr/local/mongodb/logs/log.log
port = 27017
bind_ip = 0.0.0.0
fork = true

启动命令

mongod -f /usr/local/mongodb/mongodb.conf

4.运行MongoDB

运行:mongo
查看数据库:show dbs
退出:quit()

5.启动状态

查询启动状态:ps -ef | grep mongod
停止启动状态: kill -2 进程号

4-MongoDB开机自启动 

在/lib/systemd/system/路径下建立mongodb.service文件:

[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 5-Linux服务器安装NodeJS+PM2

以 Node.js 版本 16.x 为例,以下是通过 NodeSource 安装 Node.js 特定版本的步骤:

1.首先,导入 Node.js 的 RPM 仓库:

curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -

这个命令将会为 Node.js 16.x 设置仓库。

2.然后,安装 Node.js: 

对于 CentOS 8、RHEL 8 或更高版本使用 dnf

sudo dnf clean all && sudo dnf makecache
sudo dnf install -y nodejs

3.验证 Node.js 版本: 

node --version

如果您想安装16.18.1的确切版本而不是最新的16.x版本,或者如果上述步骤中的安装不提供您需要的确切版本,您可以使用 nvm 来安装 Node.js。以下是使用 nvm 安装特定 Node.js 版本的步骤:

1.安装 nvm: 

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

安装完成后,关闭并重新打开您的终端或者加载 nvm 配置

source ~/.bashrc

2.通过 nvm 安装特定版本的 Node.js: 

nvm install 16.18.1

 3.使用 nvm 选择要使用的 Node.js 版本:

nvm use 16.18.1

服务器上配置npm淘宝镜像

npm config set registry https://registry.npm.taobao.org

验证配置是否成功

npm config get registry

安装 PM2 

sudo npm install pm2@latest -g

 

6-compass可视化工具连接+管理Linux服务器MongoDB

1.去 MongoDB官网下载MongoDB Compass

2.然后新建一个数据库和集合测试 

7.-NodeJS通过mongoose模块获取MongoDB数据 

1.安装node模块

寻找的是全局安装的 Node.js 模块的位置:npm root -g 

cd进入然后安装

npm install mongodb --save
npm i mongoose --save

2.mongodb模块测试
root/.nvm/test-mongo/test.js测试文件

const { MongoClient } = require('/root/.nvm/node_modules/mongodb')
const client = new MongoClient('mongodb://localhost:27017')
async function main() {
  // 连接数据库
  await client.connect()
  console.log('连接成功')
  const db = client.db('Free')
  const collection = await db.collection('Free_User').find().toArray()
  console.log(collection)

}
main()


运行命令
node root/.nvm/test-mongo/test.js

 

8-使用NodeJS模块express部署项目接口

1.安装node模块

也是先进入node的安装目录,然后安装包

cd /root/.nvm

npm i express --save

npm install -g supervisor

 

9-使用NodeJS模块express部署项目接口

1.在root文件下新建一个web文件夹

然后npm init-y

index.js文件

var express = require('/root/.nvm/node_modules/express')
var app = express()
app.listen(3000, function () {
  console.log('环境运行中')

})

app.get('/api1', function (req, res) {
  const resData = require('./api1')
  res.send(resData)
})

app.get('/api2', function (req, res) {
  const resData = require('./api2')
  resData.api2().then(r => {
    console.log(r);
    res.send(r)

  })
})

api1.js

const api1 ='hello'
module.exports=api1

 api2.js

const { MongoClient } = require('/root/.nvm/node_modules/mongodb')
const client = new MongoClient('mongodb://localhost:27017')
const api2 = async function () {
  // 连接数据库
  await client.connect()
  console.log('连接成功')
  const db = client.db('Free')
  const collection = await db.collection('Free_User').find().toArray()
  return collection

}
module.exports = {
  api2
}

 2.然后执行命令 supervisor node /root/web/index.js

3.然后打开公网:3000/api2就能看见数据

10.pm2配置开机启动

cd到你的node项目文件

pm2 start index.js
pm2 startup
pm2 save

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/292571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos 8.0 安装sysbench 1.0.17

序号步骤说明执行命令执行结果备注1 下载并解压sysbench-1.0.17.zip sysbench-1.0.17.zip2安装依赖文件 yum install automake libtool -y yum install /usr/include/libpq-fe.h 3安装sysbench cd sysbench-1.0.17 ./autogen.sh ./configure \ --prefix/sysbench \ --with-pgsq…

Javaweb之Mybatis的基础操作之删除的详细解析

1.3 删除 1.3.1 功能实现 页面原型: 当我们点击后面的"删除"按钮时,前端页面会给服务端传递一个参数,也就是该行数据的ID。 我们接收到ID后,根据ID删除数据即可。 功能:根据主键删除数据 SQL语句 -- 删除…

C语言中关于strcpy函数的理解

strcpy的功能是将源指向的字符串复制到另外一个字符串中 目标指向的数组的大小应该要足够长&#xff0c;避免让源字符串中的数据溢出 关于这个函数的具体用法&#xff0c;我们可以看看下面这个程序 注意&#xff1a;strcpy函数的头文件是<string.h>&#xff0c;我们在用…

【科研绘图】Origin科研绘图超快速上手指南

Origin教程 Part 1:Origin界面介绍项目管理器graph文件工具栏文字工具箭头工具&#xff0c;直线工具 菜单栏文件新建导出 图图表绘制 Part 2:绘图实例讲解1.创建工程2.导入数据到book3.创建空Graph&#xff0c;设置画布尺寸4. 添加坐标系&#xff0c;设置坐标系的位置与尺寸5.添…

教师技能干货:如何快速发布期末考试成绩

期末考试结束&#xff0c;随之而来的是成绩发布。对于教师而言&#xff0c;这是一项既重要又繁琐的工作。成绩的发布不仅是对学生一学期努力的肯定&#xff0c;也是对学生未来学习的指引。那么&#xff0c;如何快速、准确地发布期末考试成绩呢&#xff1f;下面将为您分享一些实…

Java-replaceAll()同时替换多个字符

今天复现了raplaceAll&#xff08;&#xff09;的用法&#xff0c;但是通常都是对一种字符进行替换&#xff0c;我就在想有没有操作可以一次性替换多个不同的字符&#xff0c;百度一搜&#xff0c;果然有。具体情况如下 首先是替换字的 String str1 "小明&#xff0c;小…

Win32 TEXT()宏学习

之前学习了_T()宏&#xff1b; _T()是MFC的&#xff1b; TEXT()是win32的&#xff1b; _T("")定义于tchar.h&#xff1b; TEXT宏是windows程序设计中经常遇到的宏&#xff0c;定义在 <winnt.h>中&#xff1b; 如果使用UNICODE字符集&#xff0c;则TEXT&…

02-微服务-Eureka注册中心

Eureka注册中心 假如我们的服务提供者user-service部署了多个实例&#xff0c;如图&#xff1a; 大家思考几个问题&#xff1a; order-service在发起远程调用的时候&#xff0c;该如何得知user-service实例的ip地址和端口&#xff1f;有多个user-service实例地址&#xff0c;…

什么是差值表达式

在Vue.js中&#xff0c;差值表达式是一种基本的数据绑定形式&#xff0c;用于将数据绑定到文档对象模型&#xff08;DOM&#xff09;上。差值表达式通常使用双大括号 {{ }} 来表示&#xff0c;这种语法非常直观。当Vue实例的数据发生变化时&#xff0c;差值表达式的内容也会相应…

【源码分析】 Calcite 处理流程详解:calcite架构、处理流程以及就一个运行示例进行源码分析

文章目录 一. Calcite整体架构二. Calcite处理流程三. 处理流程样例说明1. 样例demo1.1. 样例数据1.2. 使用calcite 2. 流程源码分析Step1: SQL 解析阶段&#xff08;SQL–>SqlNode&#xff09;Step2: SqlNode 验证&#xff08;SqlNode–>SqlNode&#xff09;1. 注册元数…

入行IC,该如何规划学习和成长路线?

不同学历背景的同学会有不同的道路选择。 微电子/集成电路专业的科班生&#xff0c;已经拥有了理论知识基础&#xff0c;不需要再额外学习这一部分。所以精力主要聚焦在流片项目和集创赛一类的赛事上&#xff0c;重点在于如何拿到更好的Offer。 而电子大类以及其他相关专业的…

IOC解决程序耦合

1.什么是IOC IOC (Inverse of Control)即控制反转&#xff1a;由ioc容器来创建依赖对象&#xff0c;程序只需要从IOC容器获取创建好的对象。 我们在获取对象时&#xff0c;都是采用new的方式。是主动的。 我们获取对象时&#xff0c;同时跟工厂要&#xff0c;有工厂为我们查找…

对话惠买集团董事长兼CEO杜瑞勇:直播电商粗放时代结束,如何用AI+XR打造精细化的智慧直播生态?

“ 未来将是专业选手精细化运营的智慧直播时代。“ 整理 | 梦婕 编辑 | 渔舟 出品&#xff5c;极新&#xff06;北京电子商务协会 直播电商在经过爆发式增长后&#xff0c;从业者不断涌入&#xff0c;竞争日趋激烈&#xff0c;行业发展必然将会进入到一个缓慢增长阶段。直播…

实现vue加载指令 v-loading

文章目录 为什么使用指令实现 loading具体实现封装准备实现 loading 效果loading 显示与隐藏使用修饰符扩展 完整代码与结语 本文不会详细的说明 vue 中指令这些知识点&#xff0c;如果存在疑问&#xff0c;请自行查阅文档或者其他资料 为什么使用指令实现 loading 在日常的开…

基于SSM的班级事务管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

未来已来,Ai原生应用与人高度结合!学习就在现在?

原生应用&#xff1a;OpenAI™ChatGPT、Baidu.Inc™文心一言 也可以体验CSDN的INSCODE AI&#xff0c;集成多个国内GPT内容。 文章目录 前言----编程语言的未来&#xff1f;一、编程语言的教育1.1 学校所见所闻1.2 开启我们的Ai行程~io&#xff01;1.3 Ai结果评论 二、Ai编程教…

生成式AI:软件工程的未来伙伴

随着技术不断进步&#xff0c;软件工程正在经历一场革命性的变革。从最初的穿孔卡片和汇编语言编程&#xff0c;到现代集成开发环境和高级编程语言&#xff0c;软件工程已经走过了一条漫长的路。现在&#xff0c;生成式人工智能(AI)正打开新的篇章&#xff0c;不仅对传统的编码…

阿里云ECS服务器无法访问端口(防火墙在关闭状态也启作用)

问题&#xff1a;一直用得好好的端口&#xff0c;突然在某一时间不可以访问这个端口了 &#xff0c;在服务器录入外网地址访问如下图&#xff1a; 先按正常流程检测&#xff1a; 1 先云服务商的管理网站查看防火墙端口是否开放 看了正常开放了端口&#xff0c;如下图&#xff…

常见位运算总结

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 前言 1.基础位运算 &运算 |运算 ^运算 >>运算 <<运算 ~运算 2.给一个数n&#xff0c;确定他的二进制表示中的第x位&#xff0c;是0还是1 3.将一个数n的二进制表示的第x位修改成1 4.将一个数…

jupyter更改默认路径到其它的目录或者到其它的盘 比如D盘

1.打开终端 输入jupyter notebook --generate-config 如下 2.在C:\Users\mb5958\.jupyter路径下 3.用记事本打开它&#xff0c;搜索directory 4.在你想要的路径下新建一个文件夹&#xff0c;如‘D:\jupyterFile’&#xff0c;然后将路径名放在c.NotebookApp.notebook_dir"…