搜索
首页运维CentOS有关centos部署yapi的问题记录

前言

这几天终于完成了为期三个月的公司某个demo版的项目,在这期间和公司的后台因为API的事怼过无数次了,'我的接口没问题,是你请求的方式不对吧!'、'一定是你请求的参数不对'......诸如此类问题贯穿这三个月,仅仅因为我们没有一个良好的接口管理习惯,一堆省事的工具没有被利用起来,接口定义很随意基本靠口头传达。于是乎,我想YApi接口管理平台必须先用起来,再者,张鑫旭大大也在为接口管理打call,前端也应该把工具用起来。解放生产力,提高效率!

安装node

因为yapi的安装必须依赖node,centos环境安装node的各种方法google一下,千千万万种。而我还是踩到坑了,不知道为什么我根据wget安装源码的方法,失败了,当然也不是完全失败,是make的时候,等的太久,我直接ctrl+c了。还是用nvm安装吧,尽管我也不知道合不合理。请代码说话:

  • Wget下载安装nvm

       wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

    或者Curl

       curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
  • 下载完成后加入系统环境

       source   ~/.bashrc
  • 验证安装

       command -v nvm
  • 查看远程node版本

       nvm ls-remote
  • 安装所需版本 要求nodejs(7.6+)

       nvm install 10.2.1

安装mongdb

yapi依赖mongodb(2.6+,理论上可配置远程的mlab,此处安装centos的mongdb,前提是确保centos为64位。
同样安装方法也有千千万万种,这里用yum安装

  • 修改yum包管理配置

               vi /etc/yum.repos.d/mongodb-org-3.4.repo   // 会自动新建mongodb-org-3.4.repo文件
  • 复制下面配置信息:

               [mongodb-org-3.4]
               name=MongoDB Repository
               baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
               gpgcheck=0
               enabled=1
  • 安装mongodb

               yum install -y mongodb-org   // 一路yes安装mongodb
  • 修改mongdb配置(公网可访问:127.0.0.1 => 0.0.0.0)

               vi /etc/mongod.conf
  • 启动mongodb

           systemctl start mongod.service  // 启动mongodb

此时如果是阿里云服务器,安全组添加端口12071就能通过公网地址访问,当然此时是不安全的

4d96edebd16cf35864f82f0f2798e5e.png

此时任何一个人都能通过连接你的mongdb数据篡改你的数据,这时候试着加下验证试试,这里方法也有千千万万种,请自行google,例如:

mongo --port 27017

use admin

db.createUser(
  {
    user: "adminUser",
    pwd: "adminPass",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

## 部署yapi
根据官方文档,部署方法有两种,鉴于我前几天在电脑上用第一种方法安装时失败,于是就采用第二种复杂一点的方法

mkdir yapi
cd yapi
git clone https://github.com/YMFE/yapi.git vendors //或者下载 zip 包解压到 vendors 目录
cp vendors/config_example.json ./config.json //复制完成后请修改相关配置
cd vendors
npm install --production --registry https://registry.npm.taobao.org
npm run install-server //安装程序会初始化数据库索引和管理员账号,管理员账号名可在 config.json 配置
node server/app.js //启动服务器后,请访问 127.0.0.1:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候

此时只是暂时成功部署了,还要永久守护这个yapi进程,这里用到pm2

  • 安装pm2

         npm i pm2 -g
  • 切换到yapi的vendors目录 执行pm2 start

         pm2 start server/app.js  --watch

93714fd7155a8c8d5fb607b7321396a.png

正常的话,应该能正常访问到,默认接口是3000

a8b406adfc8b15b9c8f216177dd4ba1.png

总结

至此,已经把yapi的源代码clone了一份到你自己的内网,当然,期间还是会遇到不少的坑,我遇到的主要还是mongdb认证的坑:比如认证设置不成功、config文件配置不正确之类的,甚至pm2启动yapi失败,总之多尝试多动手,自己实在不能解决再去请教大牛。

① mongdb认证获取失败

de9dc8f6fb244cf3087b4ee46c51e64.png

解决: 检查mongdb配置是否正确、认证设置是否成功,yapi的config文件是否配置正确

② pm2启动yapi失败,一直重启

d0398d853ee80b1d2cb9f7619f4d1a0.png

解决:通过pm2 log查看是之前通过npm开启的服务没有结束,导致端口占用,ctrl+c之前的服务就行
前两个问题貌似都不算是坑,无非就是拦路虎

③配置好的邮箱失败

fe5ccc3f56a3099f0548037df55e41d.png

解决:那肯定是邮箱配置不对喽,重来吧!然后就继续采坑
不确定是不是网易邮箱有点问题还是怎么的,换成qq的就行,修改完config.json文件,我以为重npm run install-server就万事大吉了,其实 -->

3f4697d55a2c67ae36695d4de0dfd30.png

应该是mongdb中yapi已经存在这个管理员的信息,如果admin下面没有数据的话就直接删掉这条,如果有点话就修改数据吧。我很懒,直接用mongdb compass把整个yapi都删掉了,删库跑路!

不足之处欢迎拍砖指正!

d1d395a8ce5936a8b7b420925472bec.png

yapi开启https访问

虽然对小白来说https然并卵,我还是想捣鼓一下试着通过https来访问我的yapi,首先证书我是有了,获取证书的方法也有千千万万种,我这里用的阿里云的免费证书,总之有证书的话应该能拿到证书文件如.pem、.key、.pfx之类文件。技术菜的我天真的以为还能开启3000端口的https访问,结果啪啪啪打脸打的很清脆,于是乎把https的端口设定成了8443。大概步骤如下:

  • 获取证书文件(默认有证书并且能拿到.key和.pem文件或者.pfx文件)

    43728a45633599ee828a63068423f3d.png

  • 上传证书(我直接放在app.js同级,根据个人喜好)

    f7b2432a7cbd22da270a985a57ce1e0.png

  • 修改app.js 是基于koa的 不过我没有再引用koa-ssl,直接用的node的https方法的第一种

    // 引入相关的服务和文件
    const fs = require('fs');
    const https = require('https');
    const options = {
        key: fs.readFileSync(__dirname + '/server.key'),
        cert: fs.readFileSync(__dirname + '/server.pem')
      };
    const port = 8443;
    //...
    //开启https端口
    https.createServer(options, app.callback()).listen(port)
  • 成功开启https

    c480af90e948ef1778bfdceb2b976c5.png

  • 同样还是踩了不少坑

    • 文件径不对 not such file
      解决:用__dirname
    • mac verify failure
      解决: 用node https提供的第一种方法引入证书文件

推荐:《centos教程

以上是有关centos部署yapi的问题记录的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:segmentfault。如有侵权,请联系admin@php.cn删除
CentOS替代方案:哪些Linux分布正在接管?CentOS替代方案:哪些Linux分布正在接管?Apr 14, 2025 am 12:11 AM

CentOS的替代方案包括AlmaLinux、RockyLinux和OracleLinux。1.AlmaLinux提供10年支持,与RHEL兼容。2.RockyLinux由CentOS创始人发起,确保透明开发。3.OracleLinux提供稳定性能和10年支持,基本版免费。

Centos的遗产:为什么停产Centos的遗产:为什么停产Apr 13, 2025 am 12:12 AM

CentOS被终止是因为RedHat将其重心转移到CentOSStream,用于加快RHEL的开发周期和推动用户转向RHEL。替代方案包括:1.RockyLinux,2.AlmaLinux,3.OracleLinux。选择替代方案时需考虑兼容性、支持和长期规划。

从CentOS迁移:最好的方法从CentOS迁移:最好的方法Apr 12, 2025 am 12:13 AM

从CentOS迁移的最佳方法是选择RockyLinux、AlmaLinux或UbuntuServer。1)备份数据,2)评估现有系统,3)测试迁移,4)执行迁移,5)验证和优化,确保系统性能最佳。

Centos的中断:讨论Centos的中断:讨论Apr 11, 2025 am 12:09 AM

CentOS已停止维护,转向CentOSStream,不再提供适合生产环境的版本。影响包括系统迁移和企业重新评估Linux策略。替代方案有:1.迁移到RHEL,2.转向Ubuntu或Debian,3.考虑CentOSStream作为测试平台,4.使用AlmaLinux或RockyLinux。建议尽早制定迁移计划,评估现有系统和团队需求。

Ansible:基础架构作为代码的CentOS自动化Ansible:基础架构作为代码的CentOS自动化Apr 10, 2025 am 09:40 AM

使用Ansible可以实现CentOS的自动化管理。具体步骤包括:1)编写playbook来定义任务,如安装和配置Apache;2)通过SSH协议执行playbook,确保系统配置的一致性;3)使用条件判断和循环功能来处理复杂场景;4)优化性能和遵循最佳实践,如使用异步任务和优化inventory文件。

CENTOS面试问题:ACE您的Linux系统管理员面试CENTOS面试问题:ACE您的Linux系统管理员面试Apr 09, 2025 am 12:17 AM

CentOS面试常见问题及解答包括:1.使用yum或dnf命令安装软件包,如sudoyuminstallnginx。2.通过useradd和groupadd命令管理用户和组,如sudouseradd-m-s/bin/bashnewuser。3.使用firewalld配置防火墙,如sudofirewall-cmd--permanent--add-service=http。4.设置自动更新使用yum-cron,如sudoyuminstallyum-cron并配置apply_updates=yes。

CENTOS故障排除:诊断和解决常见问题CENTOS故障排除:诊断和解决常见问题Apr 08, 2025 am 12:09 AM

在CentOS系统中,如何诊断和解决常见问题?首先,检查启动日志解决系统启动失败;其次,检查网络配置文件解决网络问题;最后,使用Yum命令解决软件包管理问题。通过这些步骤,你可以有效地诊断和解决CentOS系统中的常见问题。

CENTOS安全硬化:保护服务器免受入侵者的侵害CENTOS安全硬化:保护服务器免受入侵者的侵害Apr 07, 2025 am 12:05 AM

CentOS服务器安全加固可以通过以下步骤实现:1.保持系统软件更新,使用“sudoyumupdate-y”命令;2.禁用不必要的服务,如“sudosystemctldisablecups&&sudosystemctlstopcups”;3.配置SELinux为强制模式,使用“sudosetenforce1&&sudosed-i's/SELINUX=permissive/SELINUX=enforcing/g'/etc/selinux/config”命令;4.定期

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器