Linux服务部署Yapi项目(安装Node Mongdb Git Nginx等)
Linux服务部署Yapi
一,介绍与需求
1,我的安装环境:CentOS7+Node10.13.0+MongoDB4.0.10。
2,首先安装wget,用于下载node等其他工具
yum install -y wget
编译依赖 gcc 环境
yum install gcc-c++
二,Node安装配置
第一步:下载Node
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz
第二步:解压下载的Node包
xz -d node-v10.13.0-linux-x64.tar.xz
tar -xf node-v10.13.0-linux-x64.tar
第三步:配置node和npm
注意:node所在目录,我的node目录是~/node-v10.13.0-linux-x64 即在:登录的root目录下
ln -s ~/node-v10.13.0-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v10.13.0-linux-x64/bin/npm /usr/bin/npm
第四步:检测是否成功
输入node -v 和 npm -v,如果看到版本号,即表示成功 如下图所示:

三,Mongdb安装配置
第一步:下载Mongodb
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.10.tgz # 下载
第二步:解压并拷贝到指定目录
tar -zxvf mongodb-linux-x86_64-4.0.10.tgz # 解压
mv mongodb-linux-x86_64-4.0.10/ /usr/local/mongodb # 将解压包拷贝到指定目录
第三步:配置系统环境变量
vim /etc/profile
会提示文件已存在,输入“e”,回车,然后键盘按下“i” ,进入编辑模式即可。在文件的最后加上:
#mongodb
export PATH=$PATH:/usr/local/mongodb/bin

第四步:创建MongoDB数据存放文件夹和日志记录文件夹
mkdir -p /data/db
mkdir -p /logs
第五步:创建MongoDB运行时使用的配置文件
1,进入bin目录下:cd /usr/local/mongodb/bin
2,创建mongodb.conf配置文件:vim mongodb.conf
会提示是new file,直接输入下面内容:
dbpath = /data/db #数据文件存放目录
logpath = /logs/mongodb.log #日志文件存放目录
port = #端口
fork = true #以守护程序的方式启用,即在后台运行
noauth = true # 不进行安全验证
#auth=true #需要认证。如果放开注释,就必须创建MongoDB的账号,使用账号与密码才可远程访问,第一次安装建议注释
bind_ip=0.0.0.0 #允许远程访问,或者直接注释,127.0..1是只允许本地访问

最后“Esc”,按下“:”,输入“wq”保存退出vim编辑模式即可。注意:注释符号#和数据之间必须是一个空格。
第六步:启动MongoDB服务
1,进入bin目录下:cd /usr/local/mongodb/bin
2,加载配置文件方式启动:./mongod -f mongodb.conf

即:MongoDB在Linux上的安装完毕
第七步:检测是否启动成功
查看端口映射检查是否启动成功:netstat -nltp|grep mongod

如出现以上信息,则表示启动成功
其他常用命令
1,关闭服务
./mongod --shutdown
pkill mongod
直接关掉进程
查看pid:ps -ef | grep mongo 结果的第二列就是pid
kill -9 pid 强制杀死 不建议使用 可能会导致数据丢失
创建Mongodb账号
进入bin目录下: cd /usr/local/mongodb/bin
运行mongo命令:mongo
四,Git安装配置
第一步:下载Git
wget https://github.com/git/git/archive/v2.14.1.zip
第二步:安装依赖
yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
第三步:解压
unzip v2.14.1.zip
第四步:将git安装到/usr/local/git上
先进入git-2.14.1文件夹, 编译,安装
cd git-2.14.1
make prefix=/usr/local all
make prefix=/usr/local install
第五步:验证是否安装完成
git --version
看到版本号,即表示安装成功
五,Yapi部署
第一步:安装
npm install -g yapi-cli --registry https://registry.npm.taobao.org
第二步:配置yapi
ln -s ~/node-v10.13.0-linux-x64/bin/yapi /usr/bin/yapi
第三步:启动配置
如果不进行第二步,配置,可能会找不到yapi
yapi server

第四步:打开浏览器界面化配置部署

出现如下信息,则表示部署成功

第五步:启动服务器
node vendors/server/app.js
出现如下信息,则表示启动成功

在浏览器输入:http://127.0.0.1:3000/ 界面如下:

六,Nginx安装配置反向代理
第一步:安装所需环境
1,PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
2,zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
3,OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
第二步:下载Nginx
wget -c https://nginx.org/download/nginx-1.15.8.tar.gz
第三步:解压
tar -zxvf nginx-1.15.8.tar.gz
cd nginx-1.15.8
第四步:配置
1,使用默认配置
./configure
2.自定义配置(不推荐)
./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
第五步:编译安装
make
make install
第六步:查看安装目录
whereis nginx

第七步:配置反向代理
修改配置文件nginx.config
cd /usr/local/nginx/conf
vim nginx.conf

在配置文件中添加反向代理,YApi页面使用websocket, 所以,nginx配置需要支持ws:
upstream yapi {
server 127.0.0.1:3000 weight=5;
}
server {
listen 80;
server_name localhost www.yapi.top;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://yapi;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
}
}
第八步:启动Nginx
cd /usr/local/nginx/sbin/
./nginx
效果如下:

其他常用命令与介绍
./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
查询nginx进程:
ps aux|grep nginx
1.先停止再启动(推荐):
对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:
./nginx -s quit
./nginx
2.重新加载配置文件:
当 ngin x的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 ngin x再启动 nginx 即可将配置信息在 nginx 中生效,如下:
./nginx -s reload
3.开机自启动
即在rc.local增加启动代码就可以了。
vim /etc/rc.local
增加一行 /usr/local/nginx/sbin/nginx
设置执行权限:
chmod 755 rc.local
七,遇到的问题
7.1,问题:使用Xshell启动服务,当关闭Xshell,服务也随之关闭
解决办法:使用pm2部署
第一步:安装pm2
npm install -g pm2
第二步:配置连接pm2
ln -s ~/node-v10.13.0-linux-x64/bin/pm2 /usr/bin/pm2
第三步:在项目添加配置文件processes.json
processes.json文件可自定义
添加如下内容
{
"apps" : [{
"name" : "YingQi",
"script": "./server/app.js",
"cwd": "./",
"watch":[
"server",
"static",
"test",
"exts",
"common"
]
}]
}
第四步:在项目目录下运行开启进程即可
pm2 start processes.json
出现如下信息,则表示开启成功

这样问题就基本解决啦!
其他常用pm2命令
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 start app.js -i 4 #后台运行pm2,启动4个app.js
# 也可以把'max' 参数传递给 start
# 正确的进程数目依赖于Cpu的核心数目
pm2 start app.js --name my-api # 命名进程
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
Linux服务部署Yapi项目(安装Node Mongdb Git Nginx等)的更多相关文章
- linux 上部署 YApi 可视化接口管理平台
linux 上部署 YApi 可视化接口管理平台: YApi 是一个高效.易用.功能强大的可视化接口管理平台,官方地址 : http://yapi.demo.qunar.com/ 环境要求 nodej ...
- linux下部署php项目-Apache、php、mysql关联
linux下部署php项目环境可以分为两种,一种使用Apache,php,mysql的压缩包安装,一种用yum命令进行安装. 使用三种软件的压缩包进行安装,需要手动配置三者之间的关系.apache和p ...
- Linux 下部署Django项目
Linux 下部署Django项目 说明:本文所使用的环境为CentOS 6+Python2.7+Django1.11 安装Django.Nginx和uWSGI 1.确定已经安装了2.7版本的Py ...
- Linux系统部署JavaWeb项目(超详细tomcat,nginx,mysql)
转载自:Linux系统部署JavaWeb项目(超详细tomcat,nginx,mysql) 我的系统是阿里云的,香港的系统,本人选择的是系统镜像:CentOS 7.3 64位. 具体步骤: 配置Jav ...
- 6.linux下部署 web 项目
安装java 1.下载 linux 环境的jdk 2.上传该压缩包到 linux 系统中并且解压 tar -zxvf 压缩包名 3.配置环境变量并且刷新配置 export JAVA_HOME=/ali ...
- 在Linux上部署Web项目
You believe it or not there is a feeling, lifetime all not lost to time. 在Linux上部署Web项目 这个是普通的web项目, ...
- 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置
第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本 uwsgi- ...
- linux服务器部署nodejs项目
一.安装nodejs 1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn/download/ 通 ...
- 基于阿里云服务器Linux系统部署JavaWeb项目
前段时间刚完成一个JavaWeb项目,想着怎么部署到服务器上,边学边做,花了点时间终于成功部署了,这里总结记录一下过程中所遇到的问题及解决方法.之所以选择阿里云,考虑到它是使用用户最多也是最广泛的云服 ...
随机推荐
- 我以为我对Mysql索引很了解,直到我遇到了阿里的面试官
GitHub 4.8k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 4.8k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 4.8k Star 的 ...
- hihoCoder 1308:搜索二·骑士问题(BFS预处理)
题目链接 题意 中文题意. 思路 对于每一个骑士,可以先预处理出到达地图上某个点的需要走的步数,然后最后暴力枚举地图上每一个点,让三个骑士走过的距离之和最小即可. #include <bits/ ...
- Codeforces 776C:Molly's Chemicals(思维)
http://codeforces.com/problemset/problem/776/C 题意:给出一个有n个数的序列,还有一个k,问在这个序列中有多少个子序列使得sum[l, r] = k^0, ...
- HDU 5775:Bubble Sort(树状数组)
http://acm.hdu.edu.cn/showproblem.php?pid=5775 Bubble Sort Problem Description P is a permutation ...
- django基础知识之ORM简介:
ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...
- c++2的幂次方
c++2的幂次方 题目描述 任何一个正整数都可以用2的幂次方表示. 同时约定用括号来表示方次,即a的b次,可以表示为a(b). 由此可知,137可以表示为: 2(7)+2(3)+2(0) 进一步: ...
- [Python学习]错误篇一
REFERENCE:<Head First Python> ID:我的第一篇[Python学习] BIRTHDAY:2019.7.6 EXPERIENCE_SHARING:两个程序错误类型 ...
- java中动态代理的使用
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代 ...
- 基于 MySQL Binlog 的 Elasticsearch 数据同步实践 原
一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数据可以 ...
- cogs426血帆海盗(网络流打法)
这道题基本上来就能看的出来是网络流但难点在于它的结果貌似与最大流,最小割都没啥关系,我猜不少萌新像我一样想暴力枚举边(要是考试我就真这么做了),但很明显,出题人没打算让你这么水过,100000的数据不 ...