部署nodejs项目到服务器的一些总结
安裝nodejs
首先在服務器上安裝nodejs并配置環境,這個可以參考官方的文檔,就不細說了
拷貝項目到服務器上
這里其實可以通過git直接clone在服務器上。當然正常發版一般是將代碼打包上傳到服務器上部署,可以通過pcsp傳送文件到服務器上:
(1)確保服務器(linux)已經準備好,開通了相應接口。(具體做法直接百度)
(2)將項目打包壓縮gz文件(windows下可以使用7-zip,先壓縮成tar,再壓縮成gz)
(3)打開電腦終端,進入pscp的目錄,輸入命令:
pscp [項目壓縮包的路徑] [username]@192.168.1.1:/home/[username]然后輸入服務器的用戶密碼,即可將壓縮包傳送到服務器的/home/[username]下。
注意:用戶一定要有該文件夾的寫權限,否則無法傳送。
(4)解壓到指定目錄即可。
部署項目
我們使用pm2來進行項目部署,通過終端登上服務器,安裝pm2。
npm install -g pm2然后進入項目目錄,通過下面的命令進行部署:
pm2 start bin/wwwnodejs的入口js文件默認是bin/www,所以我們啟動這個文件。
啟動完成后就可以通過ip和端口訪問這個服務了。如果我們為這個端口綁定了域名,也可以直接通過域名進行訪問。
防火墻
如果在外網無法訪問這個接口,那么很可能是防火墻引起的。我們需要關閉防火墻或將這個端口加入白名單。
下面是防火墻的一些常用指令:
啟動: systemctl start firewalld
關閉: systemctl stop firewalld
查看狀態: systemctl status firewalld
開機禁用 : systemctl disable firewalld
開機啟用 : systemctl enable firewalld
下面是端口相關的一些指令:
添加: firewall-cmd --zone=public --add-port=80/tcp --permanent
(–permanent永久生效,沒有此參數重啟后失效)
重新載入: firewall-cmd --reload
查看: firewall-cmd --zone= public --query-port=80/tcp
刪除: firewall-cmd --zone= public --remove-port=80/tcp --permanent
pm2命令
下面是一些常用的pm2命令:
安裝:npm install -g pm2
啟動并命名進程:pm2 start bin/www --name <my-api>
啟動命名進程,設置cpu數為x:pm2 start bin/www -i x --name <my-api>
啟動程序:pm2 start <app_name|id|all>
列舉進程:pm2 list
退出程序:pm2 stop <app_name|id|all>
重起應用:pm2 restart <app_name|id|all>
程序信息:pm2 describe id|all
監控:pm2 monit
實時集中log處理: pm2 logs
查看錯誤日志: pm2 logs <app_name|id>
API:pm2 web (端口:9615 )
日志
如果啟動失敗或服務異常退出,可以通過日志進行排查。
pm2的錯誤日志位于/root/.pm2/logs/目錄下,日志文件以進程名命名。
在終端執行pm2 logs,可以實時的看到nodejs的console信息了。
多環境
可以使用json配置來啟動項目,這樣就可以啟動不同的環境(開發/生產)
pm2 start xxx.json可以在nodejs項目下配置不同環境的配置文件,尤其是使開發和生產環境使用不用的端口和名稱
配置文件的簡單示例:
dev.json
{"apps": [{"name": "custom-dev","script": "./bin/www","env": {"PORT": "10008",}}] }release.json
{"apps": [{"name": "custom","script": "./bin/www","env": {"PORT": "8000",}}] }在nodejs默認生成的入口文件bin/www中,端口會默認獲取進程env的配置,如下
var port = normalizePort(process.env.PORT || '8000');所以通過上面的方式進行啟動,不同的環境就會使用不同的端口。
調試
有時我們需要在服務端進行簡單的調試,雖然我們可以用pm2 logs查看實時console信息,但是如果服務器上同時運行多個項目,那么就會有很多無效信息。我們可以直接使用node命令來啟動
node ./bin/www但是這樣啟動的話會直接使用我們在www里設置好的接口,而這個接口很可能是生產環境的接口,所以我們要避免使用這個接口,加上端口即可,如下:
PORT=1234 node ./bin/www這樣就是以1234接口啟動了
總結
以上是生活随笔為你收集整理的部署nodejs项目到服务器的一些总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongo占用内存过大解决方案
- 下一篇: 解决Webview加载不完全导致部分js