詳解Nodejs 部署到阿里云全過程
整個(gè)部署過程學(xué)到了不少東西,記錄一下。
1. 到阿里云購(gòu)買云服務(wù)器 ECS 。
https://www.aliyun.com/product/ecs
如果是在校學(xué)生,在淘寶有實(shí)名認(rèn)證,且在學(xué)信網(wǎng)有注冊(cè),可以試試搶學(xué)生的首月優(yōu)惠套餐。
https://www.aliyun.com/act/aliyun/campus.html
作為一個(gè)不熟悉服務(wù)器配置的菜鳥。選了最便宜的套餐:
CPU: 1核 / 內(nèi)存: 1024 MB / 帶寬:1Mbps / 操作系統(tǒng): CentOS 7.0
購(gòu)買環(huán)節(jié)會(huì)設(shè)置 ssh 登陸密碼,記下密碼。
在最后的付費(fèi)環(huán)節(jié),使用推薦碼可以享受9折。我的推薦碼 no4qx1
登陸到阿里云,查看購(gòu)買的實(shí)例。
注意公網(wǎng) IP,下一步會(huì)用到

2. 登陸服務(wù)器
打開 Terminal, 輸入 ssh root@公網(wǎng)IP 登陸服務(wù)器。首次登陸會(huì)詢問公鑰,yes 即可。關(guān)于 ssh 登陸,具體可以看
//www.fzitv.net/article/115461.htm 這篇文章。
登陸服務(wù)器后。這里對(duì)于我這個(gè) Linux 菜鳥有個(gè)大坑………就是 Linux 系統(tǒng)常見的目錄結(jié)構(gòu)和文件放置區(qū)域。
使用 root 用戶身份登陸后,會(huì)直接進(jìn)入到下圖 紅色箭頭標(biāo)出的 root 目錄下。先 cd .. 跳轉(zhuǎn)到上一層, 再 ls -a ,就可以看到類似下圖的目錄結(jié)構(gòu)了。

3.安裝 node 和 mongodb
node -- 編譯后二進(jìn)制文件應(yīng)在/usr/local/bin/node 下
mongodb -- 安裝在/usr/local/mongodb 下
下面就一步一步來,首先升級(jí)CentOS
yum -y update
升級(jí)后,跳轉(zhuǎn)到 /usr/local/src , 這個(gè)文件夾通常用來存放軟件源代碼
cd /usr/local/src
下載 nodejs 代碼,也可以使用scp命令直接上傳,因?yàn)橄螺d實(shí)在太慢了。
wget http://nodejs.org/dist/v0.12.5/node-v0.12.5.tar.gz
解壓
tar -xzvf node-v0.12.5.tar.gz
進(jìn)入解壓后的文件夾
cd node-v0.12.5
執(zhí)行配置腳本來進(jìn)行編譯預(yù)處理
./configure
編譯源代碼
make
當(dāng)編譯完成后,需要使之在系統(tǒng)范圍內(nèi)可用, 編譯后的二進(jìn)制文件將被放置到系統(tǒng)路徑,默認(rèn)情況下,Node二進(jìn)制文件應(yīng)該放在/user/local/bin/node文件夾下
make install
安裝 express 和 forever,這兩個(gè)模塊都推薦 global 安裝
npm -g install express forever
建立超級(jí)鏈接, 不然 sudo node 時(shí)會(huì)報(bào) "command not found"
sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s /usr/local/bin/npm /usr/bin/npm sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf sudo ln -s /usr/local/bin/forever /usr/bin/forever
Nodejs到這里就基本安裝完成了。
下面來安裝mongodb
軟件安裝位置:/usr/local/mongodb
數(shù)據(jù)存放位置:/var/mongodb/data
日志存放位置:/var/mongodb/logs
首先下載安裝包
cd /usr/local wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz
解壓安裝包,重命名文件夾為mongodb
tar zxvf mongodb-linux-x86_64-2.6.0.tgz mv mongodb-linux-x86_64-2.6.0 mongodb
創(chuàng)建數(shù)據(jù)和日志存放目錄
mkdir /var/mongodb mkdir /var/mongodb/data mkdir /var/mongodb/logs
打開rc.local文件,添加CentOS開機(jī)啟動(dòng)項(xiàng):
vim /etc/rc.d/rc.local
將mongodb啟動(dòng)命令追加到本文件中,讓mongodb開機(jī)自啟動(dòng):
/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log -fork
關(guān)閉 vim 后,直接手動(dòng)啟動(dòng)mongodb
/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/logs/log.log -fork
看到類似的信息,說明已啟動(dòng)成功。我在這里發(fā)了個(gè)傻,以為26308是port號(hào),導(dǎo)致后面設(shè)置port時(shí)折騰了好久。其實(shí)這里的 forked process 和 port 號(hào)是兩個(gè)東西, 這個(gè)是程序本身在Server上的進(jìn)程。
forked process: 26308
啟動(dòng)mongo shell
cd /usr/local/mongodb/bin/ ./mongo
在 mongo shell 中創(chuàng)建管理員及數(shù)據(jù)庫(kù)
use admin //admin 數(shù)據(jù)庫(kù)
db.createUser({
user: "用戶名",
pwd:"登陸密碼",
roles:["userAdminAnyDatabase"] //超級(jí)管理員
})
use databaseFoo //nodeapp 要連接的數(shù)據(jù)庫(kù)
db.createUser({
user: "用戶名",
pwd:"登陸密碼",
roles:["readWrite"] //讀寫權(quán)限
})到這里 mongodb 基本已經(jīng)安裝設(shè)置完成了。具體數(shù)據(jù)的遷移導(dǎo)入可自行研究。
4.配置及啟動(dòng)node app
我們把 nodeapp 的程序放在 /home 下
cd /home
我使用 http://git.oschina.net/ 管理代碼。它的私有庫(kù)是免費(fèi)的?;静僮骱?github 一樣。
git clone https://git.oschina.net/xxxxxxx/nodeapp.git //你的repo地址
進(jìn)入 nodeapp 文件夾
cd nodeapp
(若后續(xù)代碼變更,提交到 git repo 后直接git pull即可部署代碼)
安裝nodeapp的所有依賴
npm install
在啟動(dòng)文件 ( 我的是 app.js ) 中設(shè)置數(shù)據(jù)庫(kù)連接
vim app.js
數(shù)據(jù)庫(kù)連接類似下面的格式,由于數(shù)據(jù)庫(kù)安裝在同一服務(wù)器,因此 host 為127.0.0.1:
var dbUrl = 'mongodb://用戶名:登陸密碼@127.0.0.1/databaseFoo'; mongoose.connect(dbUrl)
這里要注意,如果直接 npm start 或 node app.js 啟動(dòng),則一旦退出 ssh 遠(yuǎn)程登陸,nodeapp 就會(huì)停止運(yùn)行。因此我們使用 forever 啟動(dòng) nodeapp。
NODE_ENV=production forever start app.js
在嘗試啟動(dòng)的過程中,一般會(huì)有很多報(bào)錯(cuò)。按照?qǐng)?bào)錯(cuò)一點(diǎn)一點(diǎn)配置即可……
在蹚過無數(shù)坑后,項(xiàng)目部署成功。用瀏覽器打開 公網(wǎng)IP:端口號(hào) 即可看到 nodeapp 的首頁
DNS 設(shè)置過程以后再補(bǔ)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
node版本下報(bào)錯(cuò)build: `vue-cli-service build`問題及解決
這篇文章主要介紹了node版本下報(bào)錯(cuò)build: `vue-cli-service build`問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
node.js中 mysql 增刪改查操作及async,await處理實(shí)例分析
這篇文章主要介紹了node.js中 mysql 增刪改查操作及async,await處理,結(jié)合實(shí)例形式分析了node.js中 mysql庫(kù)安裝、增刪改查操作及async,await處理相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-02-02
node.js調(diào)用C++函數(shù)的方法示例
這篇文章主要介紹了node.js調(diào)用C++函數(shù)的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
NodeJS實(shí)現(xiàn)微信公眾號(hào)關(guān)注后自動(dòng)回復(fù)功能
這篇文章主要為大家詳細(xì)介紹了NodeJS實(shí)現(xiàn)微信公眾號(hào)關(guān)注后自動(dòng)回復(fù)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
npm設(shè)置同時(shí)從多個(gè)包源加載包的方法
本文主要介紹了npm 設(shè)置同時(shí)從多個(gè)包源加載包的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
使用express搭建一個(gè)簡(jiǎn)單的查詢服務(wù)器的方法
本篇文章主要介紹了使用express搭建一個(gè)簡(jiǎn)單的查詢服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02
node.js連接mongoDB數(shù)據(jù)庫(kù) 快速搭建自己的web服務(wù)
這篇文章主要為大家詳細(xì)介紹了node.js連接mongoDB數(shù)據(jù)庫(kù),如何快速搭建自己的web服務(wù),感興趣的小伙伴們可以參考一下2016-04-04
node.js Sequelize實(shí)現(xiàn)單實(shí)例字段或批量自增、自減
Sequelize 可以實(shí)現(xiàn)針對(duì)單個(gè)實(shí)例的一或多個(gè)字段的自增、自減操作,也可以對(duì)符合條件的數(shù)據(jù)進(jìn)行批量的自增、自減操作。單個(gè)實(shí)例字段的自增、自減可以利用Instance的相應(yīng)方法實(shí)現(xiàn),而批量自增、自減則需要借助sequelize提供的字面量方法實(shí)現(xiàn)。下面來看看詳細(xì)的介紹吧。2016-12-12

