這篇文章將為大家詳細(xì)講解有關(guān)Ubuntu中怎么利用pm2和Nginx部署一個(gè)Node.js應(yīng)用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
我們擁有十載網(wǎng)頁設(shè)計(jì)和網(wǎng)站建設(shè)經(jīng)驗(yàn),從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計(jì)師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信開發(fā)、微信小程序、成都做手機(jī)網(wǎng)站、HTML5建站、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計(jì)或者設(shè)計(jì)方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計(jì)服務(wù)并滿足您的需求。
***步 - 安裝 Node.js LTS
在這篇指南中,我們會(huì)從零開始我們的實(shí)驗(yàn)。首先,我們需要在服務(wù)器上安裝 Node.js。我會(huì)使用 Nodejs LTS 6.x 版本,它能從 nodesource 倉(cāng)庫(kù)中安裝。
從 Ubuntu 倉(cāng)庫(kù)安裝 python-software-properties 軟件包并添加 “nodesource” Nodejs 倉(cāng)庫(kù)。
sudo apt-get install -y python-software-properties curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
安裝***版本的 Nodejs LTS:
sudo apt-get install -y nodejs
安裝完成后,查看 node 和 npm 版本。
node -v npm -v
檢查 node.js 版本
第二步 - 生成 Express 示例 App
我會(huì)使用 express-generator 軟件包生成的簡(jiǎn)單 web 應(yīng)用框架進(jìn)行示例安裝。express-generator 可以使用 npm 命令安裝。
用 npm安裝 express-generator:
npm install express-generator -g
-g : 在系統(tǒng)內(nèi)部安裝軟件包。
我會(huì)以普通用戶運(yùn)行應(yīng)用程序,而不是 root 或者超級(jí)用戶。我們首先需要?jiǎng)?chuàng)建一個(gè)新的用戶。
創(chuàng)建一個(gè)名為 yume 的用戶:
useradd -m -s /bin/bash yume passwd yume
使用 su 命令登錄到新用戶:
su - yume
下一步,用 express 命令生成一個(gè)新的簡(jiǎn)單 web 應(yīng)用程序:
express hakase-app
命令會(huì)創(chuàng)建新項(xiàng)目目錄 hakase-app。
用 express-generator 生成應(yīng)用框架
進(jìn)入到項(xiàng)目目錄并安裝應(yīng)用需要的所有依賴。
cd hakase-app npm install
然后用下面的命令測(cè)試并啟動(dòng)一個(gè)新的簡(jiǎn)單應(yīng)用程序:
DEBUG=myapp:* npm start
默認(rèn)情況下,我們的 express 應(yīng)用會(huì)運(yùn)行在 3000 端口?,F(xiàn)在訪問服務(wù)器的 IP 地址:192.168.33.10:3000 :
express nodejs 運(yùn)行在 3000 端口
這個(gè)簡(jiǎn)單 web 應(yīng)用框架現(xiàn)在以 'yume' 用戶運(yùn)行在 3000 端口。
第三步 - 安裝 pm2
pm2 是一個(gè) node 軟件包,可以使用 npm 命令安裝。(用 root 權(quán)限,如果你仍然以 yume 用戶登錄,那么運(yùn)行命令 exit 再次成為 root 用戶):
npm install pm2 -g
現(xiàn)在我們可以為我們的 web 應(yīng)用使用 pm2 了。
進(jìn)入應(yīng)用目錄 hakase-app:
su - yume cd ~/hakase-app/
這里你可以看到一個(gè)名為 package.json 的文件,用 cat 命令顯示它的內(nèi)容。
cat package.json
配置 express nodejs 服務(wù)
你可以看到 start 行有一個(gè) nodejs 用于啟動(dòng) express 應(yīng)用的命令。我們會(huì)和 pm2 進(jìn)程管理器一起使用這個(gè)命令。
像下面這樣使用 pm2 命令運(yùn)行 express 應(yīng)用:
pm2 start ./bin/www
現(xiàn)在你可以看到像下面這樣的結(jié)果:
使用 pm2 運(yùn)行 nodejs app
我們的 express 應(yīng)用正在 pm2 中運(yùn)行,名稱為 www,id 為 0。你可以用 show 選項(xiàng) show nodeid|name 獲取更多 pm2 下運(yùn)行的應(yīng)用的信息。
pm2 show www
pm2 服務(wù)狀態(tài)
如果你想看我們應(yīng)用的日志,你可以使用 logs 選項(xiàng)。它包括訪問和錯(cuò)誤日志,你還可以看到應(yīng)用程序的 HTTP 狀態(tài)。
pm2 logs www
pm2 服務(wù)日志
你可以看到我們的程序正在運(yùn)行?,F(xiàn)在,讓我們來讓它開機(jī)自啟動(dòng)。
pm2 startup systemd
systemd: Ubuntu 16 使用的是 systemd。
你會(huì)看到要用 root 用戶運(yùn)行命令的信息。使用 exit 命令回到 root 用戶然后運(yùn)行命令。
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u yume --hp /home/yume
它會(huì)為啟動(dòng)應(yīng)用程序生成 systemd 配置文件。當(dāng)你重啟服務(wù)器的時(shí)候,應(yīng)用程序就會(huì)自動(dòng)運(yùn)行。
pm2 添加服務(wù)到開機(jī)自啟動(dòng)
第四步 - 安裝和配置 Nginx 作為反向代理
在這篇指南中,我們會(huì)使用 Nginx 作為 node 應(yīng)用的反向代理。Ubuntu 倉(cāng)庫(kù)中有 Nginx,用 apt 命令安裝它:
sudo apt-get install -y nginx
下一步,進(jìn)入到 sites-available 目錄并創(chuàng)建新的虛擬主機(jī)配置文件。
cd /etc/nginx/sites-available/ vim hakase-app
粘貼下面的配置:
upstream hakase-app { # Nodejs app upstream server 127.0.0.1:3000; keepalive 64; } # Server on port 80 server { listen 80; server_name hakase-node.co; root /home/yume/hakase-app; location / { # Proxy_pass configuration proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://hakase-app/; proxy_redirect off; proxy_read_timeout 240s; } }
保存文件并退出 vim。
在配置中:
node 應(yīng)用使用域名 hakase-node.co 運(yùn)行。
所有來自 nginx 的流量都會(huì)被轉(zhuǎn)發(fā)到運(yùn)行在 3000 端口的 node app。
測(cè)試 Nginx 配置確保沒有錯(cuò)誤。
nginx -t
啟用 Nginx 并使其開機(jī)自啟動(dòng)。
systemctl start nginx systemctl enable nginx
第五步 - 測(cè)試
打開你的 web 瀏覽器并訪問域名(我的是):http://hakase-app.co 。
你可以看到 express 應(yīng)用正在 Nginx web 服務(wù)器中運(yùn)行。
Nodejs app 在 pm2 和 Nginx 中運(yùn)行
下一步,重啟你的服務(wù)器,確保你的 node app 能開機(jī)自啟動(dòng):
pm2 save sudo reboot
如果你再次登錄到了你的服務(wù)器,檢查 node app 進(jìn)程。以 yume 用戶運(yùn)行下面的命令。
su - yume pm2 status www
關(guān)于Ubuntu中怎么利用pm2和Nginx部署一個(gè)Node.js應(yīng)用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。