最近买了一个阿里云ECS云服务器Ubuntu20.04,想要搭建一个自己的Yapi接口管理工具,然后自己看网上的搭建Yapi的教程,发现很多情况下都不经如意,都导致不能运行,最后将ubuntu20.04更换为ubuntu18.04,并安装一个前辈们的教程安装成功,以下只是介绍配置安装的过程中的过程以及遇到的问题和解决方式。
因为YApi是基于node开发,数据存储在mongodb数据库,因此在安装之前需要在服务器安装node和mondodb。(其实我不知道,复制的前辈的话)
apt-get install lrzsz
tar -xvf mongodb-linux-x86_64-ubuntu2004-4.4.5
mv mongodb-linux-x86_64-ubuntu2004-4.4.5/ mongodb
mv mongodb /usr/local
sudo vim /etc/profile
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
# 进入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、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目录
cd /usr/local/mongodb/bin
# 进入 mongodb.conf,编辑方式上面已说过,此处不再赘述
vim mongodb.conf
# 查看编辑的结果
cat mongodb.conf
# 关闭mongodb服务,必需要先关闭
./mongod -f mongodb.conf --shutdown
# 更新mongodb的配置
./mongod -f mongodb.conf --fork
tar -xvf node-v14.16.1-linux-x64.tar.xz
mv node-v14.16.1-linux-x64 nodejs
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
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
# 进入根目录
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
# 全局查询node
find / -name node
# 全局查询pm2
find / -name pm2
如果查询到一下pm2在node的目录下就不需要创建软连接(自我感觉是这样的哈,不对就望指正)
npm install -g yapi-cli --registry https://registry.npm.taobao.org
ln -s /usr/local/nodejs/bin/yapi /usr/local/bin
9090
ip
:9090开始安装node vendors/server/app.js
” 指令启动服务器, 然后在浏览器打开 http://127.0.0.1:3000 访问# 进入部署目录
cd /usr/bin/yapi
# 执行上述命令
node vendors/server/app.js
ip
:3000进行访问即可进行注册登陆使用了,使用上述的管理员账号进行登录哈注意事项:服务器的安全组记得开端口9090、3000、27017三个
# 下载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
sudo apt remove nodejs
# 如果不想保留配置文件,继续执行:
sudo apt purge nodejs
# 还可以移除和 nodejs 一起安装但是现在没有被使用的包
sudo apt autoremove
2、因为node的版本太高,导致安装失败之后,将node的版本降下来之后,重新配置yapi,结果因为上次已创建了yapi数据和数据库里面的数据
问题:
解决方式:
①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() 删除某个用户,接受字符串参数
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的情况下)