在CentOS 7(騰訊云)部署node+mongodb項(xiàng)目全過(guò)程(下)

由于寫(xiě)得有點(diǎn)長(zhǎng),這是上篇鏈接:在CentOS 7(騰訊云)部署node+mongodb服務(wù)器全過(guò)程(上)

一、新建數(shù)據(jù)庫(kù)并導(dǎo)入我們開(kāi)發(fā)環(huán)境(自己電腦上)的全部數(shù)據(jù)

上一篇我們已經(jīng)把mongoDB安裝運(yùn)行起來(lái)了,現(xiàn)在需要在云服務(wù)器新建項(xiàng)目連接用到的數(shù)據(jù)庫(kù),并導(dǎo)入我們的數(shù)據(jù)。注意:這里預(yù)設(shè)我們已經(jīng)建好了數(shù)據(jù)庫(kù)animal、animal的管理用戶(hù)apple 和 密碼123456。
(1)導(dǎo)出集合(mongoexport指令)

# 導(dǎo)出為 json 文件
mongoexport -d animal -c artworks -u aizawasayo -p 123456 -o ~/MongoDB_data/artworks.json

# 可以直接cd到當(dāng)前要導(dǎo)出的目錄下,然后-o 文件名.json
cd MongoDB_data
# aizawasayo@VivdeMBP ~/MongoDB_data
mongoexport -d animal -c clothings -u aizawasayo -p 123456 -o clothings.json

# 導(dǎo)出成功信息
2020-11-27T10:22:02.922+0800    connected to: mongodb://localhost/
2020-11-27T10:22:02.972+0800    exported 1010 records

常用參數(shù)名及縮寫(xiě)對(duì)應(yīng)

主機(jī)名:--host | -h 默認(rèn)localhost,也可以是ip或域名
端口名:--port 默認(rèn)27017
數(shù)據(jù)庫(kù)名:--db | -d
集合名:--collection | -c
如果需要訪(fǎng)問(wèn)權(quán)限:
權(quán)限用戶(hù)名:--username | -u
權(quán)限用戶(hù)密碼:--password|-p
指定導(dǎo)出的存放路徑和文件名 --out|-o
指定導(dǎo)出的字段:--fields|-f
主從數(shù)據(jù)庫(kù)名: authenticationDatabase
導(dǎo)出格式:--type 默認(rèn)值是json

# 使用完整參數(shù)名的官方示例
mongoexport --host=mongodb1.example.net --port=27017 --username=someUser --authenticationDatabase=admin --collection=contacts --db=marketing --out=mdb1-examplenet.json

如果指定csv格式,則還必須使用--fields--fieldFile選項(xiàng)來(lái)聲明要從集合中導(dǎo)出的字段。
比如我們要導(dǎo)出集合中的name和address字段

用fields指定這些字段,用,分隔:--fields=name,address

# 官方示例
mongoexport --db=users --collection=contacts --type=csv --fields=name,address --out=/opt/backups/contacts.csv

或者編輯一個(gè)文件fields.txt
內(nèi)容如下:

name
address

然后導(dǎo)出時(shí)用fieldFile指定這個(gè)txt文件路徑:--fieldFile=fields.txt

(2)導(dǎo)入集合(mongoimport指令)
當(dāng)然需要先把我們導(dǎo)出的數(shù)據(jù)文件傳到云服務(wù)器:
CentOS一般都已自帶了openssh-clients,這個(gè)包幫助支持ssh連接,如果沒(méi)有可以用yum安裝一下:yum install openssh-clients

之后我們就可以在本地終端上傳了:
示例scp /local/file user@remote:/file
參數(shù)對(duì)照
[本地文件名][用戶(hù)名]@[公網(wǎng)ip地址:][服務(wù)器中的文件目錄](méi)

如果服務(wù)器用的不是默認(rèn)端口:scp -P 1021 dist.zip root@188.131.142.151:/root/code 注意P要大寫(xiě)

如果要從服務(wù)器下載到本地,把本地和服務(wù)器參數(shù)的位置反一反即可。在本地終端scp user@remote:/file /local/code
scp -P 1021 root@188.131.142.151:/etc/nginx/nginx.conf /Users/xxx/code

注意:以上是進(jìn)入到文件所在目錄的情況,不然需要輸入路徑前綴

Mac終端上傳截圖

驗(yàn)證是否收到,傳輸成功了。一個(gè)一個(gè)傳有點(diǎn)傻(好在文件不多),當(dāng)時(shí)忘了可以壓縮一下傳到服務(wù)器再解壓?? 解壓命令:unzip xxx.zip

服務(wù)器截圖

現(xiàn)在就能把數(shù)據(jù)導(dǎo)入我們服務(wù)器上的數(shù)據(jù)庫(kù)了,參數(shù)方面都和導(dǎo)出mongoexport操作差不多,file就是要導(dǎo)入的集合文件的路徑

# 官方示例
mongoimport --host=mongodb1.example.net --port=27016 --username=user --collection=contacts --db=marketing --file=/opt/backups/mdb1-examplenet.json

為了安全數(shù)據(jù)庫(kù)登錄我們都開(kāi)啟了驗(yàn)證,如果忘了數(shù)據(jù)庫(kù)的賬號(hào)密碼可以用mongo shelldb.system.users.find().pretty()查詢(xún)下,我圖方便導(dǎo)入都是用超級(jí)管理員驗(yàn)證。

# 需要驗(yàn)證
mongoimport --port 27016 -u root -p root -c islanders -d animal --authenticationDatabase admin --file /root/data/islanders.json

另外我自己比較喜歡用簡(jiǎn)寫(xiě)的參數(shù),方便好記。參數(shù)后面的=號(hào)也可以省略為空格,有=呢邏輯比較清晰,看個(gè)人習(xí)慣吧。

導(dǎo)入成功了

不放心可以用show collectionsdb.集合名.find()查下對(duì)不對(duì)

二、利用git結(jié)合碼云或者GitHub把我們的項(xiàng)目放在云服務(wù)器

也可以通過(guò)FileZilla等連接服務(wù)器上傳文件的軟件,我自己是本地上傳到碼云再clone和pull,用軟件上傳的方式還沒(méi)研究使用過(guò)。

首先在遠(yuǎn)程機(jī)上安裝git,不要求最新版的話(huà)用yum安裝就可以,不影響使用
yum install git
先在遠(yuǎn)程機(jī)生成SSH公鑰,然后cat ~/.ssh/id_rsa.pub查看并復(fù)制(以ssh-rsa 開(kāi)頭,以賬號(hào)的注冊(cè)郵箱結(jié)尾的)。將它添加到碼云,添加地址: https://gitee.com/profile/sshkeys
然后直接在遠(yuǎn)程機(jī)cd你放代碼的目錄,比如我是~/code,git clone 你上傳到碼云或者GitHub上的項(xiàng)目的地址就可以了。這邊后面更新pull push什么的就不贅述了。

三、設(shè)置云服務(wù)器安全組規(guī)則


具體配置及步驟可以參考官方指南:騰訊云-云服務(wù)器-操作指南-安全組應(yīng)用案例

四、使用pm2讓nodeJS項(xiàng)目永久運(yùn)行在服務(wù)器上

  1. 首先全局安裝pm2
    npm i pm2 -g
  2. 再查看項(xiàng)目package.json文件里的運(yùn)行腳本
"scripts": {
    "start": "npm run prod",
    "server": "babel-node ./src/bin/www",
    "server:prod": "node ./dist/bin/www",
    "dev": "NODE_ENV=development npm-run-all server",
    "clean": "rimraf dist",
    "build": "babel ./src --out-dir dist",
    "prod": "NODE_ENV=production npm-run-all clean build server:prod",
    "watch": "nodemon"
},

你可以直接運(yùn)行一個(gè)node腳本,比如pm2 start ./dist/bin/www
也可以通過(guò)package.json自己定義的scripts腳本里的node指令來(lái)執(zhí)行:
比如本地是通過(guò)npm run dev運(yùn)行的,就可以寫(xiě)成:pm2 start npm -- run dev推薦,此乃萬(wàn)能方法

運(yùn)行成功的界面

一些常用指令:

# 查看所用已啟動(dòng)項(xiàng)目:
pm2 list
# 重啟:
pm2 restart XXX
# 停止:
pm2 stop XXX
# 刪除
pm2 delete XXX

為了區(qū)分托管的項(xiàng)目,也便于我們記憶和執(zhí)行操作,還可以用--name給項(xiàng)目自定義別名,如:
pm2 start npm --name xxx -- run start 這個(gè)xxx是你自定義的名字

運(yùn)行中的項(xiàng)目擁有了姓名

這樣運(yùn)行起來(lái)就能準(zhǔn)確地知道這是哪個(gè)項(xiàng)目了。

之后管理這個(gè)項(xiàng)目的運(yùn)行就可以很方便
啟動(dòng)項(xiàng)目 pm2 start animal_api
停止項(xiàng)目 pm2 stop animal_api
其他還有很多指令,但一般部署服務(wù)這幾個(gè)也夠用了??梢栽诿钚泄ぞ咻斎耄?code>pm2,控制臺(tái)會(huì)給出所有指令及對(duì)應(yīng)說(shuō)明。

現(xiàn)在就可以愉快地通過(guò)公網(wǎng)地址加上我們項(xiàng)目的端口號(hào)訪(fǎng)問(wèn)啦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容