YAPI环境搭建(亲测有效)

环境:

1、node.js

获取地址:

https://pan.baidu.com/s/1s1oUHAw8_6G5MfwcRYSiRA,提取码:10cs

tar -xvf  node-v10.15.2-linux-x64.tar.xz
mv node-v10.15.2-linux-x64 nodejs

确认一下nodejs下bin目录是否有node 和npm文件,如果有执行软连接,如果没有重新下载执行上边步骤;

建立软连接,变为全局

ln -s /opt/nodejs/bin/npm /usr/local/bin/
ln -s /opt/nodejs/bin/node /usr/local/bin/

验证:

node -v 
npm -v

2、mongodb

获取地址:

https://pan.baidu.com/s/1YTPQGZqvl0Hsn1i8i4NRgg,提取码:z1j4

tar -zxvf mongodb-linux-x86_64-3.4.9.tgz

mv mongodb-linux-x86_64-3.4.9 mongodb

mkdir db

mkdir logs

进入到bin目录下,编辑mongodb.conf文件,内容如下:
 

dbpath=/opt/mongodb/db 

logpath=/opt/mongodb/logs/logs

port=27017 

fork=true 

nohttpinterface=true

验证:

执行命令

./mongod -f mongodb.conf

./mongo

db.version()

显示版本号就可以了。

退出后执行命令

./mongo 127.0.0.1:27017/admin

输入 db ,就可以看到当前得数据库是admin

配置开机启动

vim /etc/rc.d/rc.local,添加下面得内容

/opt/mongodb/bin/mongod --config /opt/mongodb/bin/mongodb.conf

配置环境变量

export MONGODB_HOME=/opt/mongodb/bin
export PATH=$MONGODB_HOME:$PATH


 

关闭mongodb服务

使用db.shutdownServer();命令可以关闭到MongoDB服务,但是这个命令的执行要在admin数据库下,所以先切换到admin,再关闭服务,完整运行过程如下:

如果重新进入,就要重新执行命令:

./mongod -f mongodb.conf #启动数据库
./mongod --dbpath=/opt/mongodb/db --logpath=/opt/mongodb/logs/logs --repair #或者以修复模式启动,这样可以看到具体错误

./mongo    #进入数据库

如果遇到下面报错,可以尝试重启服务器:

 

创建用户:

OK,假设我给admin数据库创建一个用户,方式如下:

use admin
db.createUser({user:"root",pwd:"123",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})


user表示用户名,pwd表示密码,role表示角色,db表示这个用户应用在哪个数据库上。用户的角色,有如下几种(参考资料):


Read    允许用户读取指定数据库
readWrite    允许用户读写指定数据库
dbAdmin    允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin    允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin    只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase    只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root    只在admin数据库中可用。超级账号,超级权限
用户创建成功之后,我们关闭掉当前MongoDB服务实例,然后重新启动新的实例,启动方式如下:

mongod -f /opt/mongodb/bin/mongodb.conf --auth


启动成功之后,如果我们直接执行如下命令,会提示没有权限:

show dbs



执行结果如下:

"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"

此时我们需要先进入到admin数据库中,然后授权,操作如下:

use admin
db.auth("root","123")



auth方法执行结果返回1表示认证成功。然后再去执行show dbs就可以看到预期结果了。此时我再在sang库下创建一个只读用户,如下:

use sang
db.createUser({user:"readuser",pwd:"123",roles:[{role:"read",db:"sang"}]})



创建成功之后,再按照上面的流程进入到sang库中,使用readuser用户进行认证,认证成功之后一切我们就可以在sang库中执行查询操作了,步骤如下:

use sang
db.auth("readuser","123")


做完这两步之后再执行查询操作就没有任何问题了,但是此时如果执行插入操作会提示没有权限,那我们可以创建一个有读写功能的用户执行相应的操作,这里就不再赘述。

Docker创建容器

1、docker 版本

docker version

查看docker版本


2、拉取Yapi镜像

docker pull silsuer/yapi

3、运行容器

--name是指定容器名,-dit是指后台运行容器,并返回容器id(或者-it,指在当前窗口以伪终端进入容器,这里如果只用-d,容器启动后就会马上停止),-p是指端口映射(主机端口:容器端口,27017是数据库端口,9090是yapi初始化配置端口,3000是yapi实际运行端口)

docker run --name yapi -dit -p 27017:27017 -p 9090:9090 -p 3000:3000 silsuer/yapi bash

报错信息:

docker: Error response from daemon: driver failed programming external connectivity on endpoint yapi (7f9dbd04615be71bd31f75c44dfc32867c2009cb7dc54fd5d34dc95e27f05bd9): Error starting userland proxy: listen tcp 0.0.0.0:27017: bind: address already in use.

解决:

netstat -tanlp

sudo kill 8622

再次执行运行容器,报错信息:

docker: Error response from daemon: Conflict. The container name "/yapi" is already in use by container "2afc4baca5f5c35948f255f49acea5f2bcd0baee7c873d628d675a28ec593333". You have to remove (or rename) that container to be able to reuse that name.

解决:

docker ps -a

看到之前运行docker容器还没有退出,导致出现容器重名情况。

使用下面命令,删除容器

docker rm 2afc4baca5f5

重新执行命令:

docker run --name yapi -dit -p 27017:27017 -p 9090:9090 -p 3000:3000 silsuer/yapi bash

进入容器

docker attach yapi

进入容器,有两种方式:docker attach yapi (exit退出容器后,容器停止运行)或者docker exec -it yapi bash(exit退出容器后,容器依旧运行)

4、容器中部署安装Yapi

4.1、可视化安装(不建议)

npm install -g yapi-cli --registry https://registry.npm.taobao.org

找到yapi的安装目录:

find / -name yapi

启动:

./yapi server

关闭防火墙,浏览器中访问:http://IP:9090/

4.2、命令安装

mkdir yapi
cd yapi
git clone https://github.com/YMFE/yapi.git vendors
cp vendors/config_example.json ./config.json //复制完成后请修改相关配置,主要配置 MongoDB 数据库,以及 Admin 账号。
cd vendors

然后

npm install --production --registry https://registry.npm.taobao.org

此时报错信息如下:

解决方案:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
vim ~/.profile
source ~/.profile

再次执行命令:

npm install --production --registry https://registry.npm.taobao.org
npm run install-server //安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
node server/app.js //启动服务器后,请访问 IP:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候

猜你喜欢

转载自blog.csdn.net/m0_37664730/article/details/88178074