一、安装好数据库和node环境
这个我使用宝塔管理安装的
二、部署yapi
mkdir yapi cd yapi git clone https://github.com/YMFE/yapi.git vendors --depth=1 //或者下载 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 配置
以上是自动配置,可手动自行修改配置文件
mkdir yapi cd yapi git clone https://github.com/YMFE/yapi.git vendors --depth=1 //或者下载 zip 包解压到 vendors 目录 cp vendors/config_example.json ./config.json //复制完成后请修改相关配置 vi ./config.json
配置文件内容如下:
{ "port": "3011", "adminAccount": "admin@admin.com", "db": { "servername": "127.0.0.1", "DATABASE": "yapi", "port": 27017, "authSource": "" }, "mail": { "enable": true, "host": "smtp.163.com", "port": 465, "from": "***@163.com", "auth": { "user": "***@163.com", "pass": "*****" } } }
修改好后安装依赖
cd vendors npm install --registry https://registry.npm.taobao.org //安装依赖
依赖安装好后运行服务器
npm run dev //启动服务器后,请访问 IP:{config.json配置的端口},初次运行会有个编译的过程,请耐心等候
三、修改后正式发布需要安装打包工具
安装webpack,两种方式安装如下
npm install -g webpack //全局安装 npm install --save-dev webpack //安装到项目目录
安装ykit
npm install ykit -g
如果安装过程报错,出现npm ERR!报错,请使用如下命令
npm install ykit -g --unsafe-perm=true --allow-root
四、打包编写测试好的程序
ykit pack -m
若打包过程中,出现目录权限Permission denied报错,解决方法如下:
把目录权限设置为777即可
打包完成后会提示如下
--------------------- YKIT EMITTED ASSETS --------------------- [ykit] - lib@e2171384d5189892d237.js - 165.16 KB [ykit] - manifest@f2f4bd774d6c221b3d5f.js - 713 Bytes [ykit] - lib2@7f100247a7d4507a47c7.js - 372.60 KB [ykit] - index@af871e94e37d0fc0cbde.css - 521.18 KB [ykit] - lib3@7565deae7ca450147979.js - 735.40 KB [ykit] - index@af871e94e37d0fc0cbde.js - 4992.50 KB Bundling Finishes in 51s.
五、启动服务器
node server/app.js
不过一般情况会使用pm2来管理
1、pm2安装
npm install -g pm2
2、使用pm2来启动yapi
pm2 start server/app.js –-name yapi
3、可使用pm2 list 查看状态
4、如果需要设置自动启动(服务器重启后也需要自动启动),则需要下面两步
pm2 save pm2 startup
命令结果如下所示:
[root@CloudServer vendors]# pm2 save [PM2] Saving current process list... [PM2] Successfully saved in /root/.pm2/dump.pm2 [root@CloudServer vendors]# pm2 startup [PM2] Init System found: systemd Platform systemd Template [Unit] Description=PM2 process manager Documentation=https://pm2.keymetrics.io/ After=network.target [Service] Type=forking User=root LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Environment=PATH=/www/server/nvm/versions/node/v14.16.0/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin Environment=PM2_HOME=/root/.pm2 PIDFile=/root/.pm2/pm2.pid Restart=on-failure ExecStart=/www/server/nvm/versions/node/v14.16.0/lib/node_modules/pm2/bin/pm2 resurrect ExecReload=/www/server/nvm/versions/node/v14.16.0/lib/node_modules/pm2/bin/pm2 reload all ExecStop=/www/server/nvm/versions/node/v14.16.0/lib/node_modules/pm2/bin/pm2 kill [Install] WantedBy=multi-user.target Target path /etc/systemd/system/pm2-root.service Command list [ 'systemctl enable pm2-root' ] [PM2] Writing init configuration in /etc/systemd/system/pm2-root.service [PM2] Making script booting at startup... [PM2] [-] Executing: systemctl enable pm2-root... Created symlink from /etc/systemd/system/multi-user.target.wants/pm2-root.service to /etc/systemd/system/pm2-root.service. [PM2] [v] Command successfully executed. +---------------------------------------+ [PM2] Freeze a process list on reboot via: $ pm2 save [PM2] Remove init script via: $ pm2 unstartup systemd
六、附录(pm2的一些命令)
pm2 start app.js --name my-api # 命名进程 pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目 pm2 start app.js -i 3 # 启动3个进程 pm2 start app.js -x #用fork模式启动 app.js 而不是使用 cluster pm2 start app.js -x -- -a 23 # 用fork模式启动 app.js 并且传递参数 (-a 23) pm2 start app.js --name serverone # 启动一个进程并把它命名为 serverone pm2 stop serverone # 停止 serverone 进程 pm2 start app.json # 启动进程, 在 app.json里设置选项 pm2 start app.js -i max -- -a 23 #在--之后给 app.js 传递参数 pm2 start app.js -i max -e err.log -o out.log # 启动 并 生成一个配置文件,你也可以执行用其他语言编写的app ( fork 模式): pm2 start my-bash-script.sh -x --interpreter bash pm2 start my-python-script.py -x --interpreter python pm2 list # 显示所有进程状态 pm2 monit # 监视所有进程 pm2 logs # 显示所有进程日志 pm2 stop all # 停止所有进程 pm2 restart all # 重启所有进程 pm2 reload all # 0秒停机重载进程 (用于 NETWORKED 进程) pm2 stop 0 # 停止指定的进程 pm2 restart 0 # 重启指定的进程 pm2 startup # 产生 init 脚本 保持进程活着 pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615) pm2 delete 0 # 杀死指定的进程 pm2 delete all # 杀死全部进程
文章评论