阿里云部署nuxt3+mongodb

文章目录

  • 阿里云部署nuxt3+mongodb
    • 一、云服务器安装mongodb
    • 二、mongodb添加管理员用户
    • 三、nuxt3使用mongodb
    • 四、使用 pm2 管理nodejs进程,运行nuxt3

mongodb安装的参考文章 阿里云服务器上部署node和mongodb教程

阿里云部署nuxt3+mongodb

一、云服务器安装mongodb

  1. 安装
# 选择要安装的路径
# 之前nginx安装到etc下,我这里和mongodb放到一起

cd /etc
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz
  1. 解压安装
tar zxvf mongodb-linux-x86_64-4.0.4.tgz
# 将解压后的文件夹名称改为 mongodb
mv mongodb-linux-x86_64-4.0.4 mongodb
  1. 创建数据和日志目录
cd /etc/mongodb
mkdir data/db
mkdir data/logs
  1. 创建mongo配置文件
cd /etc/mongodb
touch mongodb.conf

  1. 添加配置
vim mongodb.conf
# 端口号
port=27017

#数据目录---上面3创建的
dbpath=/etc/mongodb/data/db

#日志目录
logpath=/etc/mongodb/data/logs/mongodb.log
 
#设置后台运行
fork=true
 
#日志输出方式(写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。)
logappend=true
 
#开启认证(默认是flase,不需要认证的)
auth=true

#对外开放端口(默认是127.0.0.1)
bind_ip=0.0.0.0

按 i 进入编辑模式,完场后按 ESC 后输入:wq保存退出

  1. 启动和终止

启动

进入mongodb的bin目录

./mongod --config ../mongodb.conf

启动成功

about to fork child process, waiting until server is ready for connections.
forked process: 18999
child process started successfully, parent exiting

查看mongodb进程ps aux | grep mongodb

安装好就可以使用了,http://公网ip:27107
浏览器中看到这个说明启动好了

It looks like you are trying to access MongoDB over HTTP on the native driver port.

这里不成功查看下是否配置了云服务器的安全组,有没有配置端口 27017

二、mongodb添加管理员用户

  1. 进入 mongodb 文件夹下的 bin 目录
cd /etc/mongodb
./mongo

这里你配置的port不是27017,则要指定端口号 ./mongo --port=27018

  1. 添加用户
> use admin // 切换到admin数据库
switched to db admin
> db.createUser({user:"root",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) // 创建用户
Successfully added user: {
	"user" : "root",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}
> db.auth('appAdmin', 'password') // 使用db.auth()验证User是否有权限访问当前数据库
1 // 表示有权限

注意:如果出现类似的错误"errmsg" : "not authorized on admin to execute ,则说明没有权限

解决方案:给用户授予相应的操作权限

db.grantRolesToUser('appAdmin', [{role: 'dbOwner', db:'admin'}])

三、nuxt3使用mongodb

我这里使用的是nuxt-mongoose

  1. 配置
export default defineNuxtConfig({
  modules: ['nuxt-mongoose'],
  mongoose: {
    uri: process.env.MONGODB_URI
  }
})

.env 文件

MONGODB_URI='mongodb://root:[email protected]:27017/test-db(你要连接的数据库)?authSource=admin'

假如这里部署到服务器上连接数据库报错了可能是没有给 test-db 配置写入权限

进入到云服务器 mongodb/bin目录下

./mongo
mongodb://root:123456@localhost/admin
db.grantRolesToUser("root", [{role: "readWrite", db: "test-db"}]);

四、使用 pm2 管理nodejs进程,运行nuxt3

云服务器上安装

cd ~/
npm install pm2 -g

进入nuxt项目文件夹

cd /home/web/nuxt // 我是放到这个目录下,根据个人选择
npm run build
// 打包完成后
pm2 state .output/server/index.mj

几个可能用到pm2命令

pm2 list // 查看pm2管理的进程
pm2 start 0 // 启动 对应id为0的进程
pm2 delete 1 //删除 id为1 的进程
pm2 stop 1 // 停止id为1的进程

你可能感兴趣的:(阿里云,mongodb)