如何啟動node伺服器
1. linux如何後台運行node服務
在你的任意目錄輸入命令: npm install pm2 -g
1.找到全局環境PATH路徑
輸入命令: echo $PATH
回車後: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
你的路徑和我的可能不一樣,但沒關系,你可以選擇任何一個以:隔開的路徑做為系統環境路徑,我通常會選 /usr/local/bin
2:找到pm2的安裝路徑
在上面輸入 npm install pm2 -g 全局安裝時
/usr/sbin/nodejs/bin/pm2 -> /usr/sbin/nodejs/lib/node_moles/pm2/bin/pm2
/usr/sbin/nodejs/bin/pm2 是安裝路徑(你的可能和我的不一樣)
3.好了都找到了,
就重要的一步要開始了,睜大你的雙眼。
命令為: ln -s /usr/sbin/nodejs/bin/pm2 /usr/local/bin/ (注意空格)
格式: ln -s 空格 pm2安裝路徑 空格 系統環境路徑
OK,搞定,接下來驗證一把…
[root@iZmwyb7v60px1zZ ~]# pm2 list
回車...
$ pm2 start app.js # 啟動app.js應用程序
$ pm2 start app.js –name=」api」 # 啟動應用程序並命名為 「api」
$ pm2 start app.js –watch # 當文件變化時自動重啟應用
$ pm2 start script.sh # 啟動 bash 腳本
$ pm2 list # 列表 PM2 啟動的所有的應用程序
$ pm2 monit # 顯示每個應用程序的CPU和內存佔用情況
$ pm2 show [app-name] # 顯示應用程序的所有信息
$ pm2 logs # 顯示所有應用程序的日誌
$ pm2 logs [app-name] # 顯示指定應用程序的日誌
$ pm2 stop all # 停止所有的應用程序
$ pm2 stop 0 # 停止 id為 0的指定應用程序
$ pm2 restart all # 重啟所有應用
$ pm2 reload all # 重啟 cluster mode下的所有應用
$ pm2 gracefulReload all # Graceful reload all apps in cluster mode
$ pm2 delete all # 關閉並刪除所有應用
$ pm2 delete 0 # 刪除指定應用 id 0
$ pm2 scale api 10 # 把名字叫api的應用擴展到10個實例
$ pm2 reset [app-name] # 重置重啟數量
$ pm2 startup # 創建開機自啟動命令
$ pm2 save # 保存當前應用列表
$ pm2 resurrect # 重新載入保存的應用列表
$ pm2 update # Save processes, kill PM2 and restore processes
$ pm2 generate # Generate a sample json configuration file
2. 如何用命令行開啟nodejs搭建web伺服器
首先,需要安裝nodejs,這個可以去官網下載,目前我本地安裝的v0.12版本。
安裝完成後可以通過命令行測試安裝是否成功,輸入:node -v,應該會顯示當前安裝node版本號。
本文中用到的模塊,都是nodejs核心模塊,不需要從外部下載,如果有需要,可以使用以下命令安裝:npm install xxx。
開始
下一步,新建js文件,可以命名為server.js,代碼如下:
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三個參數,用來接收目錄,可為空,相對當前server.js文件的目錄名稱
// 比如使用命令 node server debug,意思就是debug文件夾與server.js文件同級
// 且你想以debug文件夾啟動web服務
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
3. 無法連接到本地伺服器中用Nodejs問題,怎麼解決
搭建nodejs伺服器步驟:
1.安裝nodejs服務(從官網下載安裝),node相當於apache伺服器
2.在自己定義的目錄下新建伺服器文件如 server.js
例如,我在E:\PhpProject\html5\websocket下創建了server.js文件
var http = require('http');//引入http模塊//開啟服務,監聽8888埠//埠號最好為6000以上var server = http.createServer(function(req,res){
/*
req用來接受客戶端數據
res用來向客戶端發送伺服器數據
*/
console.log('有客戶端連接');//創建連接成功顯示在後台
//一參是http請求狀態,200連接成功
//連接成功後向客戶端寫入頭信息
res.writeHeader(200,{ 'content-type' : 'text/html;charset="utf-8"'
});
res.write('這是正文部分');//顯示給客戶端
res.end();
}).listen(8888);
console.log('伺服器開啟成功');
3.在cmd控制台中cd切換進server.js所在的目錄,然後執行node server.js命令
當控制台顯示」伺服器開啟成功」則說明node伺服器已經建立
4.在瀏覽器中訪問伺服器
在瀏覽器中輸入
localhost:8888 , 瀏覽器顯示「這是正文部分」。
查看cmd控制台,顯示 「有客戶端連接」
可在多個瀏覽器窗口中進行以上操作,每個瀏覽器窗口均會對應一次「有客戶端連接」
以上步驟完成,node服務搭建完畢。下面是如何通過搭建的node服務訪問本地站點的 text/html文本文件
訪問本地站點文件
1.在自定義的目錄下創建node服務文件server2.js
var http = require('http');var fs = require('fs');//引入文件讀取模塊var documentRoot = 'E:/PhpProject/html5/websocket/www';//需要訪問的文件的存放目錄var server= http.createServer(function(req,res){
var url = req.url;
//客戶端輸入的url,例如如果輸入localhost:8888/index.html
//那麼這里的url == /index.html
var file = documentRoot + url;
console.log(url); //E:/PhpProject/html5/websocket/www/index.html
fs.readFile( file , function(err,data){
/*
一參為文件路徑
二參為回調函數
回調函數的一參為讀取錯誤返回的信息,返回空就沒有錯誤
二參為讀取成功返回的文本內容
*/
if(err){
res.writeHeader(404,{ 'content-type' : 'text/html;charset="utf-8"'
});
res.write('<h1>404錯誤</h1><p>你要找的頁面不存在</p>');
res.end();
}else{
res.writeHeader(200,{ 'content-type' : 'text/html;charset="utf-8"'
});
res.write(data);//將index.html顯示在客戶端
res.end();
}
});
}).listen(8888);
console.log('伺服器開啟成功');
2.創建index.html文件
如果要訪問index.html文件,當然你得先有這個文件,不然伺服器讀取失敗,返回40412
3.在cmd控制台cd切換到 server2.js的目錄下執行node server2.js命令
開啟伺服器
4.在瀏覽器輸入localhost:8888/index.html訪問 該文件
4. 如何創建簡易node環境並使用
一、首先要安裝node, 然後打開cmd命令窗口檢測node是否安好:
查看cmd控制台,顯示 「有客戶端連接」
可在多個瀏覽器窗口中進行以上操作,每個瀏覽器窗口均會對應一次「有客戶端連接」
5. 怎麼連接nodejs伺服器
前面已經學習了WebSocket API,包括事件、方法和屬性。詳情:WebSocket(二)--APIWebSocket是基於事件驅動,支持全雙工通信。下面通過三個簡單例子體驗一下。
簡單開始
1.安裝node。/
2.安裝ws模塊
ws:是nodejs的一個WebSocket庫,可以用來創建服務。
3.server.js
在項目裡面新建一個server.js,創建服務,指定8181埠,將收到的消息log出來。
//建立連接
var ws = new WebSocket("ws://localhost:8181"); var nickname = "";
ws.onopen = function (e) {
console.log('Connection to server opened');
} //顯示
function appendLog(type, nickname, message) { if (typeof message == "undefined") return; var messages = document.getElementById('messages'); var messageElem = document.createElement("li"); var preface_label; if (type === 'notification') {
preface_label = "<span class="label label-info">*</span>";
} else if (type == 'nick_update') {
preface_label = "<span class="label label-warning">*</span>";
} else {
preface_label = "<span class="label label-success">"
+ nickname + "</span>";
} var message_text = "<h2>" + preface_label + " "
+ message + "</h2>";
messageElem.innerHTML = message_text;
messages.appendChild(messageElem);
} //收到消息處理
ws.onmessage = function (e) { var data = JSON.parse(e.data);
nickname = data.nickname;
appendLog(data.type, data.nickname, data.message);
console.log("ID: [%s] = %s", data.id, data.message);
}
ws.onclose = function (e) {
appendLog("Connection closed");
console.log("Connection closed");
} //發送消息
function sendMessage() { var messageField = document.getElementById('message'); if (ws.readyState === WebSocket.OPEN) {
ws.send(messageField.value);
}
messageField.value = '';
messageField.focus();
} //修改名稱
function changName() { var name = $("#name").val(); if (ws.readyState === WebSocket.OPEN) {
ws.send("/nick " + name);
}
}
運行結果:
頁面關閉之後,連接馬上斷開。
這種實時響應的體驗簡直不能太爽,代碼也清爽了,前端體驗也更好,客戶端不用一直發請求,服務端不用等著被輪詢。
小結:上面例子的代碼都很好理解,接下來學習WebSocket協議。