淺談如何把Node項目部署到服務(wù)器上
1. 如何合理選購一臺服務(wù)器
對于服務(wù)器的選擇,我們主要有以下幾種選擇:
1. 阿里云;
2. 騰訊云;
3. 華為云;
4. 亞馬遜云;
國內(nèi)用戶如果沒有特殊需求可以選擇前三種,這里我阿里云舉例,當(dāng)然其他服務(wù)器的配置都是相通的。
1.1. 服務(wù)器位置的選擇;
我們都知道服務(wù)器的不同配置都是有講究的,并且一定程度上關(guān)系到我們網(wǎng)站的用戶體驗,在選擇服務(wù)器地址之前,我們需要清楚的知道自己網(wǎng)站的用戶群體主要集中在哪個區(qū)域:
比如我的用戶在杭州,我們在地域及可用區(qū)選項中可以選擇華東1(杭州),以此類推。
1.2. 服務(wù)器鏡像的選擇;
目前我們常用的服務(wù)器鏡像有:
1. centos;
2. windows Server;
3. Ubuntu;
根據(jù)自己的使用習(xí)慣選擇即可,我一般習(xí)慣選擇 centos, 接下來也會以 centos 來介紹相關(guān)的配置。
1.3. 服務(wù)器系統(tǒng)盤存儲的選擇;
系統(tǒng)存儲的選擇也需要結(jié)合自身網(wǎng)站, 如果網(wǎng)站是內(nèi)容很多的資源型網(wǎng)站(圖片, 視頻等),可以選擇稍微大一點的,比如 100G 以上,一般個人網(wǎng)站或者測試站50G足已,畢竟一份存儲一份錢。
1.4. 服務(wù)器帶寬選擇;
一般為了給用戶一個好的網(wǎng)站體驗,會提高帶寬來降低網(wǎng)站加載時間。但是一味的提高帶寬會大大加大服務(wù)器的費(fèi)用,所以我們一方面需要在對網(wǎng)站自身做好優(yōu)化,另一方面也可以使用對象存儲,這樣我們就能控制一定的帶寬了,比如目前 H5-Dooring 的帶寬在10M左右,一年服務(wù)器費(fèi)用大概 1-2W, 但是對一些測試型個人網(wǎng)站來說,選擇2-5M都是一個合適的范圍。
當(dāng)然大家也可以選擇按流量付費(fèi)。
1.5. 服務(wù)器規(guī)格選擇;
如果你是個人使用對吞吐性能沒有過多要求,可以選擇1核1G低配版的,不過建議個人網(wǎng)站最好選擇1核2G或者2核4G的,說不定你的網(wǎng)站就突然火了。
至于服務(wù)器的其他配置,大家都可以隨意選擇,也可以直接用默認(rèn)的。
2. 如何將域名解析到服務(wù)器上
當(dāng)我們選購好一臺服務(wù)器之后,我們在控制臺可以看到自己服務(wù)器的公網(wǎng)IP,這也是域名解析的關(guān)鍵。域名可以在云服務(wù)平臺內(nèi)直接購買,一般一個域名在20-60¥之間,推薦使用 .com和
.cn的域名,當(dāng)前其他后綴的域名也可以,取決于你對網(wǎng)站的定位。
我們只需要在云服務(wù)的域名管理中添加需要解析的服務(wù)器記錄即可。
上圖的主機(jī)記錄配置中常用的有 www
和 @
,我們選擇任何一個即可,主機(jī)記錄相當(dāng)于域名的前綴。
記錄值 就是我們服務(wù)器的IP,也就是上面提到的公網(wǎng)IP。我們配置好之后點確認(rèn),等待5-10分鐘即可解析完成, 不過一般都在3分鐘內(nèi)。
通過以上方式,我們的域名就成功解析到對應(yīng)的服務(wù)器上了,是不是很簡單? 前提是域名必須備案,至于如何備案,也很簡單,可以按照云廠商指引進(jìn)行操作。
3. 服務(wù)器配套軟件的安裝和環(huán)境配置
有了上面服務(wù)器的配置基礎(chǔ),我們開始配置服務(wù)器了。 作為一名前端程序員, 服務(wù)器上必須要有node。
接下來我們開始安裝它,在安裝之前,我們需要先進(jìn)入服務(wù)器終端:
密鑰對一般在服務(wù)器列表的右側(cè)更多下拉項里,我們一般第一次使用需要重置密鑰對, 在設(shè)置好密鑰對之后, 我們在自己計算機(jī)的終端輸入如下命令:
ssh root@你的服務(wù)器公網(wǎng)IP
之后在終端輸入完密碼之后即可進(jìn)入服務(wù)器。
如果服務(wù)器沒有wget,建議大家可以安裝一下,畢竟后面很多場景都會用到。
yum install wget
是不是神似我們的 npm
,之后我們就可以開心的安裝node
了。
# 安裝nodejs wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz # 解壓 tar xf node-v14.15.4-linux-x64.tar.xz
解壓完成之后我們可以手動進(jìn)入node
的 bin
目錄,測測node
是否可用。但是下載下來的node
的目錄名又臭又長,怎么辦呢? 這里就要學(xué)好Linux了, 我這里給大家介紹一種簡單的重命名文件/目錄名的方法:
mv node-v14.15.4-linux-x64 nodejs
mv
是linux
移動文件的命令,當(dāng)然如果在同一個目錄下,它也可以做重命名功能使用。
最后一步就是配置node
全局環(huán)境了,這里我們也是使用 linux
的命令ln。
ln -s /...你nodejs所在的更目錄/nodejs/bin/node /usr/local/bin/node ln -s /...你nodejs所在的更目錄/nodejs/bin/npm /usr/local/bin/npm
這樣我們通過軟連接就實現(xiàn)在全局環(huán)境下使用node了。
4. 通過命令行上傳自己的網(wǎng)站到服務(wù)器
那么環(huán)境有了之后我們就可以直接上傳我們的網(wǎng)站代碼了,因為我們選擇的是 centos 服務(wù)器,它沒有可視化的界面來操作,而且我的電腦是 mac
的, 這可咋整呢? 不用擔(dān)心,繼續(xù)用命令行。
我們可以使用命令行從本地上傳文件或文件夾到服務(wù)器, 也可以從服務(wù)器下載文件到本地電腦,這些操作無疑多虧了scp
,接下來我將演示如何從本地上傳文件夾到服務(wù)器。
scp -r 本地文件夾路徑 root@你的公網(wǎng)IP:/上傳到的服務(wù)器路徑 # 如 scp -r ./dist root@xxx.xxx.xxx:/website/
其中-r
是用來傳文件夾用的,如果你要上傳的文件包含文件夾, 可以添加這個標(biāo)識。
5. 網(wǎng)站部署和運(yùn)維
網(wǎng)站可以用nginx
代理和做負(fù)載均衡,網(wǎng)上也有很多資料介紹, 這里我?guī)Т蠹医榻B一下PM2。
PM2 是一個守護(hù)進(jìn)程管理器,它將幫助我們管理和保障應(yīng)用程序穩(wěn)定在線。如果你是node的忠實粉絲,那么它將是個不錯的選擇。作為前端工程師,搭建全棧的網(wǎng)站用node
也是一個非常高效的選擇。
5.1. 安裝應(yīng)用
最新的 PM2 版本可以使用 NPM 或 Yarn 安裝:
$ npm install pm2@latest -g # or $ yarn global add pm2
5.2. 啟動應(yīng)用
啟動、守護(hù)和監(jiān)控應(yīng)用程序的最簡單方法是使用以下命令行:
$ pm2 start app.js
或輕松啟動任何其他應(yīng)用程序:
$ pm2 start bashscript.sh $ pm2 start python-app.py --watch $ pm2 start binary-file -- --port 1520
我們可以傳遞給 CLI 的一些選項:
# Specify an app name --name <app_name> # Watch and Restart app when files change --watch # Set memory threshold for app reload --max-memory-restart <200MB> # Specify log file --log <log_path> # Pass extra arguments to the script -- arg1 arg2 arg3 # Delay between automatic restarts --restart-delay <delay in ms> # Prefix logs with time --time # Do not auto restart app --no-autorestart # Specify cron for forced restart --cron <cron_pattern> # Attach to application log --no-daemon
如我們所見,有許多選項可用于使用 PM2 管理我們的應(yīng)用程序。目前H5-Dooring也是采用這種方式部署的,所以如果你有自己的網(wǎng)站, 趕緊參考這個教程部署吧。
到此這篇關(guān)于淺談如何把Node項目部署到服務(wù)器上的文章就介紹到這了,更多相關(guān)Node項目部署到服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node在Controller層進(jìn)行數(shù)據(jù)校驗的過程詳解
這篇文章主要給大家介紹了關(guān)于Node在Controller層進(jìn)行數(shù)據(jù)校驗的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Nodejs學(xué)習(xí)筆記之Global Objects全局對象
本文是NodeJS學(xué)習(xí)筆記系列文章的第二篇,從這篇開始我們就根據(jù)官方文檔來逐個學(xué)習(xí)下NodeJS的各個模塊,首先我們來學(xué)習(xí)下Global2015-01-01node使用promise替代回調(diào)函數(shù)
這篇文章主要介紹了node使用promise替代回調(diào)函數(shù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05