轉(zhuǎn)自Nodejs 部署到阿里云全過程
整個部署過程學(xué)到了不少東西,,記錄一下,。
參考了以下文章:
http:///other/relate/NJ2TJohl.html
https://segmentfault.com/a/1190000004051670
http:///2015/06/17/notes-on-developing-nodejs-webapp/
https://bbs.aliyun.com/read/146189.html
1. 到阿里云購買云服務(wù)器 ECS ,。
https://www.aliyun.com/product/ecs
如果是在校學(xué)生,在淘寶有實(shí)名認(rèn)證,,且在學(xué)信網(wǎng)有注冊,可以試試搶學(xué)生的首月優(yōu)惠套餐。https://www.aliyun.com/act/aliyun/campus.html
作為一個窮逼+不熟悉服務(wù)器配置的菜鳥,。選了最便宜的套餐:
CPU: 1核 / 內(nèi)存: 1024 MB / 帶寬:1Mbps / 操作系統(tǒng): CentOS 7.0
購買環(huán)節(jié)會設(shè)置 ssh 登陸密碼,記下密碼,。
登陸到阿里云,,查看購買的實(shí)例。
注意公網(wǎng) IP,,下一步會用到
2. 登陸服務(wù)器
sudo ssh 你的服務(wù)器ip地址
關(guān)于 ssh 登陸,,具體可以看http://www./blog/2011/12/ssh_remote_login.html 這篇文章。
提示輸入mac的密碼,,提示輸入服務(wù)器密碼,。
輸入后連接成功并顯示服務(wù)器信息,如下:
登陸服務(wù)器后。這里對于我這個 Linux 菜鳥有個大坑………就是 Linux 系統(tǒng)常見的目錄結(jié)構(gòu)和文件放置區(qū)域,。
使用 root 用戶身份登陸后,,會直接進(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 下
下面就一步一步來,首先升級CentOS
yum -y update
升級后,,跳轉(zhuǎn)到 /usr/local/src , 這個文件夾通常用來存放軟件源代碼
cd /usr/local/src
下載 nodejs 代碼,,也可以使用scp命令直接上傳,因?yàn)橄螺d實(shí)在太慢了,。
wget http:///dist/v0.12.5/node-v0.12.5.tar.gz
//注*根據(jù)最新版本號為準(zhǔn)
解壓
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,,這兩個模塊都推薦 global 安裝
npm -g install express forever
建立超級鏈接, 不然 sudo node 時會報 “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./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ī)啟動項(xiàng):
vim /etc/rc.d/rc.local
將mongodb啟動命令追加到本文件中,讓mongodb開機(jī)自啟動:
/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath
/var/mongodb/logs/log.log -fork
關(guān)閉 vim 后,,直接手動啟動mongodb
/usr/local/mongodb/bin/mongod --dbpath=/var/mongodb/data --logpath
/var/mongodb/logs/log.log -fork
看到類似的信息,,說明已啟動成功。我在這里發(fā)了個傻,,以為26308是port號,,導(dǎo)致后面設(shè)置port時折騰了好久。其實(shí)這里的 forked process 和 port 號是兩個東西,, 這個是程序本身在Server上的進(jìn)程,。
forked process: 26308
啟動mongo shell
cd /usr/local/mongodb/bin/
./mongo
在 mongo shell 中創(chuàng)建管理員及數(shù)據(jù)庫
use admin //admin 數(shù)據(jù)庫
db.createUser({
user: "用戶名",
pwd:"登陸密碼",
roles:["userAdminAnyDatabase"] //超級管理員
})
use databaseFoo //nodeapp 要連接的數(shù)據(jù)庫
db.createUser({
user: "用戶名",
pwd:"登陸密碼",
roles:["readWrite"] //讀寫權(quán)限
})
到這里 mongodb 基本已經(jīng)安裝設(shè)置完成了。具體數(shù)據(jù)的遷移導(dǎo)入可自行研究,。
4.配置及啟動node app
我們把 nodeapp 的程序放在 /home 下
cd /home
我使用 http://git.oschina.net/ 管理代碼,。它的私有庫是免費(fèi)的?;静僮骱?github 一樣,。
復(fù)制代碼:
git clone https://git.oschina.net/xxxxxxx/nodeapp.git //你的repo地址
注*同時可以使用圖形化程序進(jìn)行上傳如File Zilla
進(jìn)入 nodeapp 文件夾
cd nodeapp
(若后續(xù)代碼變更,提交到 git repo 后直接git pull即可部署代碼)
安裝nodeapp的所有依賴
npm install
在啟動文件 ( 我的是 app.js ) 中設(shè)置數(shù)據(jù)庫連接
vim app.js
數(shù)據(jù)庫連接類似下面的格式,,由于數(shù)據(jù)庫安裝在同一服務(wù)器,因此 host 為127.0.0.1:
var dbUrl = 'mongodb://用戶名:登陸密碼@127.0.0.1/databaseFoo';
mongoose.connect(dbUrl)
這里要注意,,如果直接 npm start 或 node app.js 啟動,,則一旦退出 ssh 遠(yuǎn)程登陸,nodeapp 就會停止運(yùn)行。因此我們使用 forever 啟動 nodeapp,。
NODE_ENV=production forever start app.js
如今可以使用PM2啟動程序,,步驟如下:
使用它要先安裝它,用root賬號和全局模式安裝一下:
npm install -g pm2
用它來啟動程序(在當(dāng)前目錄下可以直接啟動)
pm2 start app.js --name uops
在蹚過無數(shù)坑后,,項(xiàng)目部署成功,。用瀏覽器打開 公網(wǎng)IP:端口號 即可看到 nodeapp 的首頁
|