阿里云ECS云服务器Ubuntu18.04配置Yapi和mongodb

3 篇文章 0 订阅
1 篇文章 0 订阅

Ubuntu18.04下安装YApi

前言

最近买了一个阿里云ECS云服务器Ubuntu20.04,想要搭建一个自己的Yapi接口管理工具,然后自己看网上的搭建Yapi的教程,发现很多情况下都不经如意,都导致不能运行,最后将ubuntu20.04更换为ubuntu18.04,并安装一个前辈们的教程安装成功,以下只是介绍配置安装的过程中的过程以及遇到的问题和解决方式。

环境准备

因为YApi是基于node开发,数据存储在mongodb数据库,因此在安装之前需要在服务器安装node和mondodb。(其实我不知道,复制的前辈的话)

  1. ECS云服务器Ubuntu18.04(需要开放端口:27017、9090、22、3000)
  2. XShell远程连接(需要能远程连接到ECS云服务器Ubuntu18.04)
  3. mongodb安装包node安装包(遇到的第一个坑就是node的版本为14.x太高了,然后更改为12.x才解决了问题;估计是mongodb 4.4.5的版本是针对Ubuntu20.04的)

mongoDB安装

  • 下载mongodb安装包,下载地址:mongodb安装包
  • 将压缩包上传到服务器(我是直接在windows10系统里面将下载的mongodb的安装包直接拖到XShell里面,后但是速度太慢了,系统推荐使用 sudo apt-get install lrzsz,其实是 apt-get install rz,都可以的哈)
apt-get install lrzsz
  • 将压缩包解压
 tar -xvf mongodb-linux-x86_64-ubuntu2004-4.4.5
  • 解压后重命名
mv mongodb-linux-x86_64-ubuntu2004-4.4.5/ mongodb
  • 将mongodb文件夹移动到/usr/local
mv mongodb /usr/local
  • 添加环境变量
sudo vim /etc/profile
  • 进入编辑界面之后,点击 i,代表是 insert ,这个时候就可以添加语句了,然后点击:【ecs】退出编辑模式,再输入 :wq,保存后退出
export PATH=/usr/local/mongodb/bin:$PATH

在代码末尾加上路径

  • 使修改生效(PS:一定要执行这个命令使修改生效
source /etc/profile
  • 创建用于存放数据和日志文件的文件夹,并修改其权限增加读写权限(这是一个坑,切记,记得给权限)
# 数据存储目录
sudo mkdir -p /var/lib/mongo
# 日志文件目录
sudo mkdir -p /var/log/mongodb
sudo chown `whoami` /var/lib/mongo     # 设置权限
sudo chown `whoami` /var/log/mongodb   # 设置权限
  • /usr/local/mongodb/bin下面增加配置文件mongodb.conf
# 将进入 /usr/local/mongodb/bin
cd /usr/local/mongodb/bin
ls
# 在当前目录创建 mongodb.conf
vim mongodb.conf

往mongodb.conf添加内容

# 数据文件存放目录
dbpath = /var/lib/mongo
# 日志文件存放目录
logpath = /var/log/mongodb/mongodb.log
#端口
port = 27017
#是否认证,后续会改成true
auth = false
#远程连接要指定ip 不然无法连接。0.0.0.0不限制ip访问,并开启对应端口
bind_ip = 0.0.0.0

启动mongodb

  • 启动mongodb,进入usr/local/mongodb/bin执行以下命令,–fork指的是在后台运行,可以先不加,等后面都配置好了再进行启动即可。
# 进入usr/local/mongodb/bin目录
cd usr/local/mongodb/bin
# 在usr/local/mongodb/bin执行mongodb.conf
./mongod -f mongodb.conf --fork
  • 配置密码登陆
# 进入根目录
cd ~
# 进入mongo数据库
mongo
# 在mongodb命令行里面创建一个admin的数据库,并创建一个系统管理员账号
use admin
db.createUser({user:"admin", pwd: "adminpassword", roles: [{role: "userAdminAnyDatabase", db: "admin"}]})
# 用户名为admin,密码为adminpassword,针对admin数据库创建
db.auth('admin','adminpassword')  # 验证是否创建成功

返回结果为“1”,代表数据库用户创建成功

  • 同理以上,创建一个yapi的数据库
1、use yapi
2、db.createUser({user:"admin", pwd: "adminyapi", roles: [{role: "readWrite", db: "yapi"}]})
# 用户名为admin,密码为adminyapi,针对yapi数据库创建
3、db.auth('admin','adminyapi')  # 验证是否创建成功
  • 重点:在配置文件开启权限认证,打开/usr/local/mongodb/bin/mongodb.conf文件将auth设置为true
# 进入/usr/local/mongodb/bin目录
cd /usr/local/mongodb/bin
# 进入 mongodb.conf,编辑方式上面已说过,此处不再赘述
vim mongodb.conf
# 查看编辑的结果
cat mongodb.conf

看auth设置为true

  • 关闭mongodb服务,并重新开启,就可以使用密码进行连接mongodb了
# 关闭mongodb服务,必需要先关闭
./mongod -f mongodb.conf --shutdown
# 更新mongodb的配置
./mongod -f mongodb.conf --fork

node安装

①先使用前辈的方式进行安装(PS:node 14.x版本)–使用压缩包的方式安装(先不推荐这种)

tar -xvf node-v14.16.1-linux-x64.tar.xz
  • 解压后重命名文件夹:
mv node-v14.16.1-linux-x64 nodejs
  • 将nodejs文件夹移动到/usr/local
mv nodejs /usr/local
  • 添加软连接
ln -s /usr/local/nodejs/bin/node /usr/local/bin
ln -s /usr/local/nodejs/bin/npm /usr/local/bin
  • 查看是否安装成功:
node -v
npm -v
  • 安装pm2与n进行管理
npm install -g pm2
npm install -g n
  • 添加软链接
ln -s /usr/local/nodejs/bin/pm2 /usr/local/bin
ln -s /usr/local/nodejs/bin/n /usr/local/bin
  • 查看是否安装成功
n -V
pm2 -v
  • 安装成功
    查看npm和pm2是否安装成功
    安装node的时候不要安装版本太高,因为后续安装yapi时候node版本太高导致报错了,因此安装10.x左右的版本就行。(ps:我是用的12.x版本)

②使用ubuntu本身命令安装node(这种更方便,推荐这种)

  • 使用PPA 安装指定或最新版本的 nodejs
# 进入根目录
cd ~
# node存储库加入计算机配置,然后指定版本为12.x
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
# 检查系统更新
sudo apt update
# 安装nodejs
sudo apt install nodejs
# 安装npm,安装完成通过npm -v查看是否安装成功
apt-get install npm
# 安装pm2,安装完成通过pm2 -v查看是否安装成功
sudo npm install -g pm2
  • 这个时候我也不知道是否需要创建软连接,可以通过以下命令查看nodejs和pm2的安装位置
# 全局查询node
find / -name node
# 全局查询pm2
find / -name pm2

如果查询到一下pm2在node的目录下就不需要创建软连接(自我感觉是这样的哈,不对就望指正)
在这里插入图片描述

安装yapi

  • YApi官方提供了可视化部署和命令行部署两种方式,可视化部署方式是在服务器起了一个node服务,在浏览器根据需要填入相关配置后自动部署,命令行方式则是自己修改配置文件后进行部署。具体操作可查看
npm install -g yapi-cli --registry https://registry.npm.taobao.org
  • 添加软链接(因为前面安装node的方式导致这里需要再处理一下)(PS:这个添加软链接的地址是按照方式①按照的nodejs来的)
ln -s /usr/local/nodejs/bin/yapi /usr/local/bin
  • 执行yapi server启动安装服务,默认端口9090
  • 防火墙开启9090端口,浏览器输入访问地址http://ip:9090开始安装

在这里插入图片描述

  • 部署成功的提示包含如下(没有截图,只能去百度的一点文字):
    初始化管理员账号成功,账号名:“admin@admin.com”,密码:“ymfe.org”
    部署成功,请切换到部署目录,输入: “node vendors/server/app.js” 指令启动服务器, 然后在浏览器打开 http://127.0.0.1:3000 访问
  • 去部署目录去执行:node vendors/server/app.js ,这里存在一个坑,在下文有讲答
# 进入部署目录
cd /usr/bin/yapi
# 执行上述命令
node vendors/server/app.js
  • 安装完成后通过http://ip:3000进行访问即可进行注册登陆使用了,使用上述的管理员账号进行登录哈
    在这里插入图片描述

注意事项:服务器的安全组记得开端口9090、3000、27017三个

pm2的用处

  • 因为将远程连接断开之后,就导致yapi就不能访问了,就需要将yapi设置为后台启用,故而使用pm2来控制
    在上文已安装了pm2,但是如何使用呢?
# 下载PM2(这个已安装过了)
npm install pm2 -g
# 在部署目录下去启动项目:
pm2 start node vendors/server/app.js
# 保存当前进程状态
pm2 save
# 生成开机自启服务
pm2 startup
# 启用开机自启
systemctl enable pm2-root 
# 查看状态列表
pm2 ls

遇到的坑和解决方法(其实按部就班的这样安装,和我之前手动安装遇到的问题很多都没有遇到(毕竟之前的都没有安装成功),这里将本次安装遇到的问题和方法展示)

1、按照前辈提供的node 14.x的版本,在yapi安装过程中安装失败,故而查询是node版本太高,需要降低版本为12.x
问题:部署YApi时,出现报错信息:Accessing non-existent property ‘count’ of module exports inside circular dependency
解决办法:卸载最新版的node v14,重新安装稳定版的node v12

  • 如何卸载nodejs,以下三条命令,看情况使用
# 卸载 nodejs,但是会保留配置文件,方便你以后再次安装 nodejs
sudo apt remove nodejs
# 如果不想保留配置文件,继续执行:
sudo apt purge nodejs
# 还可以移除和 nodejs 一起安装但是现在没有被使用的包
sudo apt autoremove

2、因为node的版本太高,导致安装失败之后,将node的版本降下来之后,重新配置yapi,结果因为上次已创建了yapi数据和数据库里面的数据
问题:提示清除数据库和删除init.lock:
解决方式:
①init.lock文件可以进行全局搜索,然后进行删除;数据库需要进入mongodb去删除用户数据

# 查找init.lock
find / -name init.lock
# 删除init.lock,init.lock一般在部署路径/usr/bin/my-yapi在
rm -r 部署目录/init.lock
# 进入根目录
cd ~
# 进入mongodb数据库
mongo
# 进入yapi数据库
use yapi
# 验证账号和密码,之前在yapi里面创建的用户
db.auth("admin","adminyapi")
# 再执行删除用户的命令 db.dropUser(<user_name>)    删除某个用户,接受字符串参数
db.dropUser("admin")
# 退出mongodb数据库
exit  

②将mongodb.conf的用户密码验证先关闭,并创建数据库yapi的用户

# 进入mongodb安装目录,去编辑mongodb.conf,将auth更为false
vim /usr/local/mongodb/bin/mongodb.conf
# 执行关闭mongodb服务,并重新开启,就可以关闭密码验证进行连接mongodb了
./mongod -f mongodb.conf --shutdown
./mongod -f mongodb.conf --fork
# 再进入mongodb
cd ~
mongo
# 在mongodb的yapi数据库里面创建用户
use yapi
db.createUser({user:"admin", pwd: "adminyapi", roles: [{role: "readWrite", db: "yapi"}]})
# 用户名为admin,密码为adminyapi,针对yapi数据库创建
db.auth('admin','adminyapi')  # 验证是否创建成功
exit

③启动mongodb的数据验证

# 进入mongodb安装目录,去编辑mongodb.conf,将auth更为true
vim /usr/local/mongodb/bin/mongodb.conf
# 执行关闭mongodb服务,并重新开启,就可以密码进行连接mongodb了
./mongod -f mongodb.conf --shutdown
./mongod -f mongodb.conf --fork

3、解决以上问题之后,再次安装yapi,出现邮箱问题了

问题:出现邮箱重复的问题了
解决方式:
1.更换和提示不一样的邮箱地址
2.进入部署目录,进行进行执行编辑

# 进入部署目录
cd /usr/bin/my-yapi
# 编辑信息
vim config.json

如何更改请点击查考(表示我还没有这样用过,可以修改配置==)
在这里插入图片描述
4、部署完yapi之后,需要访问yapi,不知道是不是因为我刚开始安装node的时候是通过压缩包根据固定目录安装的,导致我在找安装的部署目录时,不是在配置yapi时候的 /usr/bin/my-yapi,而是是 /root/my-yapi;也就导致执行的node vendors/server/app.js 位置不对,导致yapi不能启动,故而需要找到针对的部署目录去执行这条命令

# 全局查找my-yapi
find / -name my-yapi
# 进入部署目录执行命令,这里需要注意的是,执行成功之后,还是让访问127.0.0.1:3000,但是使用配置的外网是可以访问的
node vendors/server/app.js

5、到了最后的一步,也就是pm2的使用中遇到的坑
问题:执行了命令pm2 start node vendors/server/app.js并执行了pm2 save,但是使用外网连接(http://ip:3000)还是不能访问,提示“计算机拒绝访问”
解决:杀死pm2.重新生成

# 监听端口,有没有3000的
netstat -ntlp
# 执行ps -ef|grep pm2,查找pm2相应的端口
ps -ef|grep pm2
# 杀死进行 
kill -9 端口号
# 再去部署路径my-yapi下执行,pm2的命令
cd /usr/bin/my-yapi
# 在部署目录下去启动项目:
pm2 start node vendors/server/app.js
# 保存当前进程状态
pm2 save
# 生成开机自启服务
pm2 startup
# 启用开机自启
systemctl enable pm2-root 
# 查看状态列表
pm2 ls

5、再次手动安装时候发现npm无法使用等相应问题,通过重装node来解决查看
解决方法:

sudo apt remove --purge nodejs npm
sudo apt clean
sudo apt autoclean
sudo apt install -f
sudo apt autoremove

sudo apt install curl
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install yarn

感谢以下前辈提供的资料

① https://www.jianshu.com/p/fb81c95adf24(主要是按照当前链接的方式部署安装的)
② https://www.cnblogs.com/forheart/p/13203249.html(提供nodejs 14.x卸载后,安装指定node 12.x版本)
③ https://blog.csdn.net/qq_38839677/article/details/82421917(删除mongodb里数据库里的用户)
④ https://blog.csdn.net/qq_41329287/article/details/114984567(更改yapi的config.json)
⑤ https://blog.csdn.net/lpping90/article/details/109315306(杀死pm2进程,重新开启)
⑥https://blog.csdn.net/weixin_42396621/article/details/95471084(npm使用不ok的情况下)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值