Ⅰ nodejs如何部署到伺服器上
有幾種部署方式,由項目復雜度而定。
最簡單的。
簡單的小網站可以直接使用Node.js作為web伺服器,不做前後端分離,使用後端模板填充數據,代表框架express。
如果要做負載均衡或者響應多端請求,那麼採用前後端分離。前端代碼可以放在CDN或nginx這類靜態伺服器上,前端向Node.js服務端發送rest請求。代表框架koa。
如果業務更加復雜,有較多的CPU密集型任務需要執行,那麼Node.js後面再接一層伺服器(java、Python)來處理。
另外由於Node.js是單線程進程,一旦出錯就會崩潰,導致服務端無法訪問。所以部署Node.js的時候需要使用
PM2
,這樣可以在Node.js程序崩潰之後及時重啟,當然還有其它好處,比如灰度部署、負載均衡等。Ⅱ 啟動node服務
ctrl+c後可以重啟服務不node1、在命令控制台按Ctrl+C,終止當前所運吵滲租行的代碼
2、然後繼續nodefilename.js,即可重啟node.js
自動重啟Node服務
NodeSupervisor原本是用於伺服器上Node.js應用崩潰的時候,自動重新啟動。當然它也可以喊雹監控你的項目的js文件變化,自動重啟來方升兆便調試。
安裝sudonpminstallsupervisor-g,或者使用sudocnpminstallsupervisor-g。
使用方法:
1、關掉之前開啟的node服務。
2、然後在項目路徑下使用命令:supervisoryourApp.js來開啟Supervisor。它會開啟node服務,並不停的檢測文件變化,當JS文件內容修改後,自動重啟服務,很方便。
如何用命令行開啟nodejs搭建web伺服器?首先,需要安裝nodejs,這個可以去官網下載,目前我本地安裝的v0.12版本。
安裝完成後可以通過命令行測試安裝是否成功,輸入:node-v,應該會顯示當前安裝node版本號。
本文中用到的模塊,都是nodejs核心模塊,不需要從外部下載,如果有需要,可以使用以下命令安裝:npminstallxxx。
開始
下一步,新建js文件,可以命名為server.js,代碼如下:
varhttp=require('http');
varurl=require('url');
varpath=require('path');
varfs=require('fs');
vardir,arg=process.argv[2]||''//命蘆裂襲令行第三個參數,用來接收目錄,可為空,相對當前server.js文件的目錄名稱
//比如使用命令nodeserverdebug,意思就是debug文件夾與server.js文件同級
//且你想以debug文件夾啟動web服務
http.createServer(function(req,res){
varpathname=__dirname+url.parse(req.url).pathname;
[linux運維]?1、下載最新node.js二進制源碼安裝包(29MB),V8.2.1更新於2017年7月20日?
wget?-c?
wget是一個Linux下載文件的工具,centos自帶。
wget?-c?是斷點續傳下載方式,後面的URL就是提供下載文件的地址
默認獲取的文件地址在/root目錄下,命令pwd顯示當前目錄源帶.
??2、安裝必要的編譯軟體?吖米yum?install?gcc?gcc-c++?yum?=?Yellow?dog?Updater,?Modified。改良黃狗更新器,centos自帶智能包管理器。?中途詢問,輸入y:在線下載安裝?d:只下載不安裝?N:不下載不安裝
Is?this?ok?[y/d/N]?:y
??3、解壓源碼tar?-zxvf?node-v8.2.1.tar.gz當前目錄/root/就會多一個node-v8.2.1的文件夾-z:透過gzip的支持進行壓縮/解壓縮:此時文件名最好為*.tar.gz-x:解壓縮的功能-v:在壓縮/解壓縮的過程中,將正在處理文件名顯示出來
f?filename:-f後面要立刻接被處理的文件名.
??4、編譯node源碼包?1)進入到node源碼包解壓目錄?cd?node-v8.2.1指定NodeJS安裝位置./configure?--prefix=/usr/local/node?不指定prefix,則可執行文件默認放在/usr?/local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc。其它的資源文件放在/usr?/local/share。你要卸載這個程序,要麼在原來的make目錄下用一次make?uninstall(前提是make文件指定過uninstall),要麼去上述目錄裡面把相關的文件一個個手工刪掉。?執行安裝文件,足足等了40多分鍾
make??make?install
??4、添加環境變數???創建並打開新文件?不存在node.sh文件?[root@localhost?node-v8.1.3]#?vim?/etc/profile.d/node.sh??輸入node安裝位置的bin目錄所在位置?export?PATH=$PATH:/usr/local/node/binESC?輸入:wq?提示:?命令輸入錯了vim-bash:?rt:?command?not?found-bash:?vim:?command?not?found[解決]i.?那麼如何安裝?vim?呢?輸入rpm?-qa|grep?vim?命令,?陪兄如果?vim?已經正確安裝,會返回下面的三行代碼:root@server1?[~]#?rpm?-qa|grep?vimvim-enhanced-7.0.109-7.el5vim-minimal-7.0.109-7.el5vim-common-7.0.109-7.el5?如果少了其中的某一條,比如?vim-enhanced?的,就用命令?yum?-y?install?vim-enhanced?來安裝:yum?-y?install?vim-enhanced?如果上面的三條一條都沒有返回,?可以直接用?yum?-y?install?vim*?命令yum?-y?install?vim*
??使用su?root?source?/etc/profile.d/node.sh?=.?/etc/profile.d/node.sh?[不間斷運行nodejs服務]?npm?install?forever?-g?forever?start?app.js
node實現自啟動服務對於nodeapp.js啟動服務的話,遇到不可預測的錯誤時,服務停止後會影響網站或者系統手者的正常運行,,服務的自啟動就顯得襪薯棚非常的重要。
npminstall-gnodemon
安裝結束後的使用方告則法
nodemonapp.js
服務啟動成功。
linux如何後台運行node服務?
在你的任意目錄輸入命令:npminstallpm2-g
1.找到全局環境PATH路徑
輸入命令:echo$PATH
回車後:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
你的路徑和我的可能不一樣,但沒關系,你可以選擇任何一個以:隔開的路徑做為系統環境路徑,我通常會選/usr/local/bin
2:找到pm2的安裝路徑
在上面輸入npminstallpm2-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~]#pm2list
回車...
$pm2startapp.js#啟動app.js應用程序
$pm2startapp.js–name=」api」#啟動應用程序並命名為「api」
$pm2startapp.js–watch#當文件變化時自動重啟應用
$pm2startscript.sh#啟動好銷bash腳本
$pm2list#列表PM2啟斗做動的所有的應用程序
$pm2monit#顯示每個應用程序的CPU和內存佔用情況
$pm2show[app-name]#顯示應用程序的所有信息
$pm2logs#顯示所有應用程序的日誌
$pm2logs[app-name]#顯示指定應用程序的日誌
$pm2stopall#停止所有的應用程序
$pm2stop0#停止id為0的指定應用程序
$pm2restartall#重啟所有應用
$pm2reloadall#重啟clustermode下的所有應用
$pm2gracefulReloadall#
$pm2deleteall#關閉並刪除所有應用
$pm2delete0#刪除指定應用id0
$pm2scaleapi10#把名字叫api的應用擴展到10個實例
$pm2reset[app-name]#重置重啟數量
$pm2startup#創建開機自啟動命令
$pm2save#保存當前應用列表
$pm2resurrect#重新載入保存的應用列表
$pm2update#Saveprocesses,killPM2andrestoreprocesses
$pm2generate#
node本地服務啟動報Error:listenEADDRINUSE,80埠被佔用解決方法1.第一步,根據埠號歲吵查找對應的進程號
netstat-ano|findstr80//列出進程極其佔用的埠,且包含80
2.第二步,據進程號尋找進程名稱
tasklist|findstr8156
3.找到是node.exe佔用巧雀廳後,殺孝隱死進程
taskkill/f/imnode.exe
node是怎麼啟服務下面是以express框胡穗衫架為例,啟動node服務的三種方法(已測試),使用族基express安裝的文件如下:
一、使用node命令啟動
nodeserver/bin/www1
二、使用webStorm啟動
1,打開webStorm,點褲腔擊運行(run)下的編輯配置(EditConfiguration)
2,添加新的配置
3,命名並選擇要執行的文件
選擇要執行bin/www文件
4,啟動node服務
三、pm2啟動
1安裝pm2
cnpmi-gpm21
是否安裝成功,可檢查版本pm2-v
2啟動服務
pm2startserver/bin/www1
pm2是一個帶有負載均衡功能的Node應用的進程管理器,pm2啟動後,我們不需要另開一個窗口或停掉服務,便可以進行後續操作?
pm2可以通過配置,啟動多個node服務,pm2list可以查看當前啟動的所有node服務
Ⅲ nodejs的優勢
NodeJs的優勢:
現在的很多的伺服器端的語言(PHP,JAVA,ASP.net),有什麼問題呢,現在的伺服器端的語言在用戶訪問伺服器時,為每個用戶鏈接創建了一個線程,但每個線程大約要耗費2M的內存,如果一個8G內存的伺服器,也就能鏈接4000個左右的用戶,如果用戶的鏈接數較大,就必須增加伺服器的數量,而且現在用戶的鏈接方式有很多(如app,網頁同時訪問),這就又涉及到伺服器共享的問題,所以伺服器怎麼支持最大的同時鏈接用戶量就成了一個問題;
NodeJS修改了客戶端到伺服器端的鏈接方法,解決了這個問題,他不在為每個客戶端創建一個新的線程,而是為每個客戶端鏈接出發一個NodeJs內部進行處理的事件,所以NodeJS具備同時處理多達幾萬個用戶的客戶端鏈接的能力;
NodeJS適合開發的應用程序:
當應用程序需要處理大量並發的輸入/輸出,而在向客戶端發出響應之前,應用程序內部並不需要進行非常復雜的處理的時候,我們應該考慮使用NodeJs來進行應用程序的開發,例如:
1、聊天伺服器:如果聊天的人很多,用戶的與伺服器之間的並發鏈接量很大,但是伺服器端的數據處理並不復雜;
2、綜合類服務網站和電子商務網站的伺服器:在這類網站中的伺服器端,往往可能每秒存內可以接受多達上千條的數據並且需要將這些數據寫入資料庫中,NodeJs可以通過其隊列機制將這些數據迅速寫入緩存區中,然後再通過每一個單獨的處理從緩存區中取出這些數據並將其寫入資料庫中,如果是其他的伺服器(如Apache伺服器或Tomcat伺服器)的話,由於這些伺服器採用的是阻塞型I/O機制,因此每條數據寫入到資料庫中都要等待一段時間(等上一條寫完,才能寫下一條),但是NodeJs使用的是非阻塞的I/O機制,因此可以實現這些數據到資料庫中的寫入,而不必再為每條數據的寫入而等待一段時間;
總結:
一個規模稍微大點的系統都不是一種開發語言可以搞定的,往往是幾種混雜一起,比如c、c++做伺服器端開發,java做業務邏輯,php等做前端展示,此外還需要消息中間件等等。
nodejs可以很快地在伺服器端做原型(原來只有c系和java等能做的事情,性能還很高),而且代碼量相對會少很多;另一點是它的語法優勢,js閉包等。但它不太適合做cpu密集型處理的工作,只能繞著彎去解決,據說這次QCon會有人分享這方面的研究成果,可以關注下。
每種語言都有它適合的領域,沒必要強求一門語言可以解決所有事情,擁有其它語言的特性,只有不斷的tradeoff把系統做出來才是目標。這些都是叢書上看到總結的,還望指正
Ⅳ nodejs怎麼部署到騰訊雲伺服器上
先安裝一個nodejs。
看你伺服器操作系統了。
Ⅳ nodejs怎麼監控內存和cpu使用情況
const os = require('os');
console.log('你的內存/M:'+os.totalmem()/1024/1024);
console.log('你的剩餘內存/M:'+os.freemem()/1024/1024);
CPU使用率正內在研究容。
Ⅵ 伺服器部署nodejs的幾種方法
由於自身特性的原因。node程序必須保持開啟才能訪問網站,而當我們關閉時這些進程都會被停止。有以下3種方法可以避免這個問題。
screen
Screen,虛擬終端管理器。可以在後台管理終端界面,防止SSH斷開以後任務停止運行。
安裝方法:
sudo apt-get screen(以ubuntu為例)
使用方法:
使用screen -S [任意id]命令進入一個名為id的終端,此時便可以隨意執行操作
例如執行sudo apt-get upgrade,或者其它消耗時間比較長的工作,像編譯內核等等。
按ctrl+a後再按d保存虛擬終端,系統提示deatached即為保存成功
接下來可以斷開SSH終端,虛擬終端仍會執行。
訪問已經創建好的終端
screen -ls列出已經創建的正在後台運行的終端
screen -r xxx進入終端
例如 screen -r terminal1
徹底退出
screen -r進入終端後執行exit即可完全退出
PM2
pm2 是一個帶有負載均衡功能的Node應用的進程管理器.當你要把你的獨立代碼利用全部的伺服器上的所有CPU,並保證進程永遠都活著
安裝方法
npm install -g pm2
使用方法
啟動應用pm2 start -watch app.js
重啟應用pm2 restart app.js
顯示進程列表pm2 list
停止某應用pm2 stop app_name|app_id
停止所有應用pm2 stop all
小白方案
個人目前用的是寶塔Linux面板,可以說是把Linux的各種操作都已比較簡單的形式展現出來了,不需要什麼Linux知識就能掌握寶塔官網了解一下