1. 程式人生 > >Linux服務部署Yapi專案(安裝Node Mongdb Git Nginx等)

Linux服務部署Yapi專案(安裝Node Mongdb Git Nginx等)

Linux服務部署Yapi

一,介紹與需求

 1,我的安裝環境:CentOS7+Node10.13.0+MongoDB4.0.10。

 2,首先安裝wget,用於下載node等其他工具

1 yum install -y wget

 編譯依賴 gcc 環境

1 yum install gcc-c++

二,Node安裝配置

第一步:下載Node

1 wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz

第二步:解壓下載的Node包

1 xz -d node-v10.13.0-linux-x64.tar.xz
2 tar -xf node-v10.13.0-linux-x64.tar

第三步:配置node和npm

注意:node所在目錄,我的node目錄是~/node-v10.13.0-linux-x64 即在:登入的root目錄下

1 ln -s ~/node-v10.13.0-linux-x64/bin/node /usr/bin/node
2 ln -s ~/node-v10.13.0-linux-x64/bin/npm /usr/bin/npm

第四步:檢測是否成功

輸入node -v 和 npm -v,如果看到版本號,即表示成功 如下圖所示:

三,Mongdb安裝配置

 第一步:下載Mongodb

1 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資料存放資料夾和日誌記錄資料夾

1 mkdir -p  /data/db
2 mkdir -p /logs

第五步:建立MongoDB執行時使用的配置檔案

1,進入bin目錄下:cd  /usr/local/mongodb/bin

2,建立mongodb.conf配置檔案:vim mongodb.conf

會提示是new file,直接輸入下面內容:

1 dbpath = /data/db #資料檔案存放目錄
2 logpath = /logs/mongodb.log #日誌檔案存放目錄
3 port = 27017 #埠
4 fork = true #以守護程式的方式啟用,即在後臺執行
5 noauth = true # 不進行安全驗證
6 #auth=true #需要認證。如果放開註釋,就必須建立MongoDB的賬號,使用賬號與密碼才可遠端訪問,第一次安裝建議註釋
7 bind_ip=0.0.0.0 #允許遠端訪問,或者直接註釋,127.0.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
1 pkill mongod

直接關掉程序

檢視pid:ps -ef | grep mongo   結果的第二列就是pid

kill  -9  pid 強制殺死 不建議使用 可能會導致資料丟失

建立Mongodb賬號

進入bin目錄下: cd  /usr/local/mongodb/bin

執行mongo命令:mongo

四,Git安裝配置

  第一步:下載Git

1 wget https://github.com/git/git/archive/v2.14.1.zip

 第二步:安裝依賴

1 yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

 第三步:解壓

1 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

 第五步:驗證是否安裝完成

1 git --version

看到版本號,即表示安裝成功

五,Yapi部署

 第一步:安裝

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

 第二步:配置yapi

1 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也需要此庫。命令:

1 yum install -y pcre pcre-devel

2,zlib 安裝

zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。

1 yum install -y zlib zlib-devel

3,OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程式供測試或其它目的使用。
nginx 不僅支援 http 協議,還支援 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。

yum install -y openssl openssl-devel

 第二步:下載Nginx

1 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,使用預設配置

1 ./configure

2.自定義配置(不推薦)

 1 ./configure \
 2 --prefix=/usr/local/nginx \
 3 --conf-path=/usr/local/nginx/conf/nginx.conf \
 4 --pid-path=/usr/local/nginx/conf/nginx.pid \
 5 --lock-path=/var/lock/nginx.lock \
 6 --error-log-path=/var/log/nginx/error.log \
 7 --http-log-path=/var/log/nginx/access.log \
 8 --with-http_gzip_static_module \
 9 --http-client-body-temp-path=/var/temp/nginx/client \
10 --http-proxy-temp-path=/var/temp/nginx/proxy \
11 --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
12 --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
13 --http-scgi-temp-path=/var/temp/nginx/scgi

注意:將臨時檔案目錄指定為/var/temp/nginx,需要在/var下建立temp及nginx目錄

 第五步:編譯安裝

1 make
2 make install

 第六步:檢視安裝目錄

1 whereis nginx

 第七步:配置反向代理

  修改配置檔案nginx.config

1 cd /usr/local/nginx/conf
2 vim nginx.conf

在配置檔案中新增反向代理,YApi頁面使用websocket, 所以,nginx配置需要支援ws:

 1 upstream yapi {
 2   server 127.0.0.1:3000 weight=5;
 3 }
 4 
 5 server {
 6     listen       80;
 7     server_name  localhost www.yapi.top;
 8     #charset koi8-r;
 9     #access_log  logs/host.access.log  main;
10 
11     location / {
12       proxy_pass  http://yapi;
13       proxy_set_header Host $host;
14       proxy_set_header  X-Real-IP        $remote_addr;
15       proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
16       proxy_set_header X-NginX-Proxy true;
17       proxy_set_header Connection "upgrade";
18       proxy_set_header Upgrade $http_upgrade;
19     }
20 }

 第八步:啟動Nginx

1 cd /usr/local/nginx/sbin/
2 ./nginx 

效果如下:

其他常用命令與介紹

./nginx -s quit:此方式停止步驟是待nginx程序處理任務完畢進行停止。
./nginx -s stop:此方式相當於先查出nginx程序id再使用kill命令強制殺掉程序。

查詢nginx程序:

1 ps aux|grep nginx

1.先停止再啟動(推薦):
對 nginx 進行重啟相當於先停止再啟動,即先執行停止命令再執行啟動命令。如下:

1 ./nginx -s quit
2 ./nginx

2.重新載入配置檔案:
當 ngin x的配置檔案 nginx.conf 修改後,要想讓配置生效需要重啟 nginx,使用-s reload不用先停止 ngin x再啟動 nginx 即可將配置資訊在 nginx 中生效,如下:

1 ./nginx -s reload

3.開機自啟動

即在rc.local增加啟動程式碼就可以了。

1 vim /etc/rc.local

增加一行 /usr/local/nginx/sbin/nginx
設定執行許可權:

1 chmod 755 rc.local

七,遇到的問題

 7.1,問題:使用Xshell啟動服務,當關閉Xshell,服務也隨之關閉

解決辦法:使用pm2部署

第一步:安裝pm2

1 npm install -g pm2

第二步:配置連線pm2

1 ln -s ~/node-v10.13.0-linux-x64/bin/pm2 /usr/bin/pm2

第三步:在專案新增配置檔案processes.json

processes.json檔案可自定義

新增如下內容

 1 {
 2   "apps" : [{
 3     "name" : "YingQi",
 4     "script": "./server/app.js",
 5     "cwd": "./",
 6     "watch":[
 7         "server",
 8         "static",
 9         "test",
10         "exts",
11         "common"
12     ]
13     }]
14 }

第四步:在專案目錄下執行開啟程序即可

1 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 

&n