阿里雲輕量應用服務器部署Node項目手記

本地和服務器環境

本地:Windows10 64位node

服務器:阿里雲輕量應用服務器CentOS 7.3linux

使用的鏈接工具:
putty
mobaxterm
固然還有Xshell這幾個中任選一個就好啦。mongodb

鏈接工具使用方法:
建立session>ssh填入服務器IP地址和用戶名(root),點擊確認而後輸入密碼便可。
(這個是mobaxterm的使用方法,其餘的也都一個套路。)shell

clipboard.png

Node環境搭建

使用wget命令下載Node包數據庫

wget https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x64.tar.xz

解壓文件npm

tar xvf node-v8.10.0-linux-x64.tar.xz

建立軟鏈接,主要是爲了命令能夠全局有效vim

ln -s /root/node-v8.10.0-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v8.10.0-linux-x64/bin/npm /usr/local/bin/npm

查看是否成功windows

node -v
npm -v

備註 :固然也能夠採用其餘的方式搭建node運行環境,例如使用NVM下載,具體的我就不列出了。瀏覽器

執行測試項目

新建項目文件example.js。服務器

cd ~
touch example.js

使用vim編輯器打開項目文件example.js。

yum install vim
vim example.js

輸入"i",進入編輯模式,將如下項目文件內容粘貼到文件中。使用"Esc"按鈕,退出編輯模式,輸入":wq",回車,保存文件內容並退出(這裏的0.0.0.0至關於windows的127.0.0.1)

const http = require('http');
const hostname = '0.0.0.0';
const port = 80;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

運行項目

node ~/example.js

//也能夠用下面的代碼後臺運行
node ~/example.js &//後臺運行
netstat -tpln//查看端口運行狀況

在瀏覽器打開http://IP:80
若是看到Hello World,恭喜部署成功

這裏有幾個須要注意的

若是你用後臺運行之後,這個端口會被佔用,如何關閉

netstat -tpln//查看端口pid
kill -9 pid

備註 : 此時防火牆是關閉的。(not running

當我嘗試打開防火牆,將端口添加到例外,並在端口(3000)上運行時,使用公網IP出現了訪問不了的狀況,不知道有哪位大神能夠大概說明一下緣由?

clipboard.png

能夠看到端口已經添加到例外了:
clipboard.png

Firewalls經常使用防火牆命令

  • 1.查看防火牆是否在運行  
firewall-cmd --state

 

  • 2.查看都有哪些端口添加到例外
firewall-cmd --permanent --list-port   
permanent 永久配置

 

  • 3.添加端口到例外
firewall-cmd --permanent --zone=public --add-port=3000/tcp
  • 4.查看永久例外的端口列表
[root@localhost ~]# firewall-cmd --permanent --list-port
// 80/tcp 3000/tcp
  • 5.刪除端口例外
firewall-cmd --permanent --remove-port=80/tcp
  • 6.查看端口列表
[root@localhost ~]# firewall-cmd --permanent --list-port
// 3000/tcp
  • 7.中止firewald防火牆
systemctl stop firewalld
  • 8.啓動firewalld防火牆
systemctl start firewalld

持續運行

前面的全部完成之後,如何讓這個node進程一直活着呢?

全局安裝cnpm,能夠大大的提高下載速度

npm install -g cnpm --registry=https://registry.npm.taobao.org

安裝pm2

cnpm install -g pm2

pm2使用

pm2 start example.js  //啓動服務
pm2 list //查看啓動的應用  
pm2 show example.js //查看詳細信息  
pm2 logs //查看當前信息  
pm2 stop example.js //中止example  
pm2 delete example.js //刪除example

Linux平臺安裝MongoDB

MongoDB 提供了 linux 各發行版本 64 位的安裝包,你能夠在官網下載安裝包。
下載地址:https://www.mongodb.com/downl...

下載安裝包,並解壓:

// 下載
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon-3.6.3.tgz
// 解壓
tar -zxvf mongodb-linux-x86_64-amazon-3.6.3.tgz
// 將解壓的包添加到指定目錄
mv mongodb-linux-x86_64-amazon-3.6.3/ /usr/local/mongodb

添加到 PATH 路徑中:

MongoDB 的可執行文件位於 bin 目錄下,因此能夠將其添加到 PATH 路徑中。

export PATH=<mongodb-install-directory>/bin:$PATH

<mongodb-install-directory> 爲你 MongoDB 的安裝路徑。如本文的 /usr/local/mongodb 。

建立數據庫目錄

MongoDB的數據存儲在data目錄的db目錄下,可是這個目錄在安裝過程不會自動建立,因此你須要手動建立data目錄,並在data目錄中建立db目錄。
如下實例中咱們將data目錄建立於根目錄下(/)。
注意:/data/db 是 MongoDB 默認的啓動的數據庫路徑(--dbpath)。
mkdir -p /data/db

命令行中運行 MongoDB 服務

你能夠再命令行中執行mongo安裝目錄中的bin目錄執行mongod命令來啓動mongdb服務。
注意:若是你的數據庫目錄不是/data/db,能夠經過 --dbpath 來指定。

MongoDB後臺管理 Shell

若是你須要進入MongoDB後臺管理,你須要先打開mongodb裝目錄的下的bin目錄,而後執行mongo命令文件。
MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操做和管理的交互式環境。

MongoDB經常使用的一些命令

MongoDB是一個基於分佈文件存儲的數據庫,是一個介於關係數據庫和非關係數據庫之間的產品。

show dbs  // 顯示全部數據庫的列表
use local // 鏈接到一個指定的數據庫,不存在則建立

登錄數據庫:

使用用戶名和密碼鏈接登陸到指定數據庫:

mongodb://admin:123456@localhost/test

切換數據庫:

use local   // 切換到該數據庫下
show tables  //查看全部的集合(數據表)
db.site.drop() // 刪除site這個集合(數據表)

建立集合:

db.createCollection(name,options);
// eg: 建立固定大小的集合
db.createCollection('mycol',{
    capped:true,
    autoIndexId:true, // 自動在_id字段建立索引
    size:6142800, // 整個集合大小(kB)
    max:10000  //文檔最大個數(數據條數)
});    

當你插入文檔時,MongoDB會自動建立集合:
db.mycol2.inset({"name":"bjw"});

更新文檔:

db.collection.update({
    <query>, // 查詢條件
    <update>, // 更新的對象
    { upsert:<boolean>, // 不存在是否插入,默認false,true爲插入
      multi:<boolean>, // 默認false,只更新找到的第一條數據
      writeConcern:<document>
    }    
});

// eg:
db.col.update(
    {"name":"admin"},
    {$set:{"passowrd":"123"}},
    {multi:true} // 更新多條數據
);

刪除文檔:

在執行remove函數以前,先執行find()命令來判斷執行的條件是否正確。(習慣問題)

db.collection.remove(
        <query>, // 條件 
        <justOne> // justOne:true 只刪除找到的第一個文檔
);

查詢文檔:

db.collection.find();
db.col.find().pretty(); // 以格式化的方式顯示全部文檔

db.col.find(
    {"likes":{$lt:50}}
).pretty();     // 找到like數小於50的全部文檔

gt : greater than
le : less than
{$lte:50} ==> 小於等於50
{$gt:50} ==> 大於50
{$gte:50} ==> 大於等於50

三個方法:

  • limit() : 限制數據的條數
  • skip(): 跳過指定數量的數據

利用這兩個方法能夠實現分頁。
這個方法只適合小數據的分頁,若是是百萬級效率會很是低。

  • sort(): 根據某個字段排序

1:升序
-1:降序

db.col.find().sort({_id:-1}); // 按照插入數據時間的降序排列

申請域名

填寫主辦單位信息 ==> 填寫網站信息 ==>上傳資料 ==> 辦理拍照 ==> 提交管局 ==> 備案完成

相關文章
相關標籤/搜索