记一次腾讯云 Ubuntu 18.04.1 LTS 安装配置 Nginx + Node + MongoDB + PM2 部署 Vue 项目

麻麻说标题长才有人看~

这篇算是流水账的笔记,但也希望可以帮助到搜索到这篇文章的各位。

1 安装 NodeJS、PM2

进入官网 https://nodejs.org/en/download/ 复制Linux Binaries (x64)下载链接

cd /usr/local/src
wget https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.xz
tar -xvf node-v14.16.1-linux-x64.tar.xz
mv node-v14.16.1-linux-x64/ node
cd node

通过创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令:

ln -s /usr/local/src/node/bin/node /usr/local/bin/node
ln -s /usr/local/src/node/bin/npm /usr/local/bin/npm
node -v

查看node版本检测是否安装成功。

全局安装 yarn、pm2,用相同方式创建软链接

npm i yarn -g
npm i pm2 -g

2 安装 MongoDB

安装依赖:

apt-get install libcurl4 openssl liblzma5

官网 https://www.mongodb.com/try/download/enterprise

选择对应的版本、系统,选择tgz格式,再点击 Copy Link 复制链接

cd /usr/local/src
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.4.5.tgz
tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.4.5.tgz
cd mongodb-linux-x86_64-ubuntu1804-4.4.5.tgz

可以像前面一样创建软链接或者复制文件到bin实现全局

cp mongodb-linux-x86_64-ubuntu1804-4.4.5/bin/* /usr/local/bin/

创建储存MongoDB数据和日志的文件夹

mkdir -p /var/lib/mongo
mkdir -p /var/log/mongodb

--fork会以守护进程的方式运行 MongoDB
默认端口为27017,可使用--port更改
默认只允许所有本地连接,可使用 --bind_ip 修改
可使用ps aux | grep mongod 查看进程,使用kill -9 xxx结束进程
运行 MongoDB:

mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

2.1 创建用户

userAdminAnyDatabase:授予在所有数据库上管理User的权限
root:所有权限

mongo
> use admin
switched to db admin
> db.createUser({user:"admin", pwd:"password",roles:[{ role: "userAdminAnyDatabase", db: "admin" }]})
> db.createUser({user:"admin",pwd:"password",roles:["root"]})

新建名为 vok_blog 的库,添加数据库用户
dbOwner:在当前DB中执行任意操作

> use vok_blog
switched to db vok_blog
> db.createUser({user:"admin", pwd:"password",roles:[{ role: "dbOwner", db: "vok_blog" }]})

权限说明
数据库用户角色(Database User Roles)
read:授予User只读数据的权限
readWrite:授予User读写数据的权限
数据库管理角色(Database Administration Roles):
dbAdmin:在当前dB中执行管理操作
dbOwner:在当前DB中执行任意操作
userAdmin:在当前DB中管理User
备份和还原角色(Backup and Restoration Roles):
backup
restore
跨库角色(All-Database Roles):
readAnyDatabase:授予在所有数据库上读取数据的权限
readWriteAnyDatabase:授予在所有数据库上读写数据的权限
userAdminAnyDatabase:授予在所有数据库上管理User的权限
dbAdminAnyDatabase:授予管理所有数据库的权限
集群管理角色(Cluster Administration Roles):
clusterAdmin:授予管理集群的最高权限
clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限
hostManager:管理Server

2.2 重新启动

去腾讯云开放端口 27017,然后重新启动 mongod 服务

ps aux | grep mongod
Kill -9 xxxx
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork --auth --bind_ip 0.0.0.0

3 安装Nginx

apt install nginx

在 nginx 安装目录下有一个 nginx.conf,如何配置呢?
可以在 nginx 目录下的 conf.d 文件夹下新建配置文件,比如 biandan.me.conf

cd /etc/nginx
vim ./conf.d/biandan.me.conf

server {
listen 80;
server_name biandan.me; #这里输入绑定服务器的域名,多个用空格隔开
location / {
root /home/ubuntu/html; #这里是静态资源的文件夹路径
index index.html index.htm; #主页入口文件
try_files $uri $uri/ /index.html; #vue的单页面应用需要这样配置
}
location /api/v1 { # 代理接口
proxy_pass http://127.0.0.1:3000/api/v1; #我的后台接口端口号是3000
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /etc/nginx/html;
}
}
:wq

nginx -s reload

4 最后

进入后端项目的目录,使用 pm2 start ./app/index.js 启动
上传vue项目到 /home/ubuntu/html 目录,域名A记录绑定服务器IP即可

发表评论

设为私密评论(仅博主可见)
1 Comment
  1. 白熊阿丸 Safari | 605.1.15 Mac OS X Lion 10_15_7
    2021/9/15

    摸摸小扁担|´・ω・)ノ