首先需要使用ssh或者putty登陸AWS ec2的linux實例(在Windows中使用putty連接linux實例參見:在Windows中連接亞馬遜雲服務器)。
一 .為了方便文件傳輸 需要安裝兩個軟件
1. winscp WinSCP是一個Windows環境下使用SSH的開源圖形化SFTP客戶端。同時支持SCP協議。它的主要功能就是在本地與遠程計算機間安全的復制文件。
支持批處理腳本和命令行方式
多種半自動、自動的目錄同步方式
內置文本編輯器
支持SSH密碼、鍵盤交互、公鑰和Kerberos(GSS) 驗證
通過與Pageant(PuTTY Agent)集成支持各種類型
公鑰驗證
提供Windows Explorer與Norton Commander界面
可選地存儲會話信息
可將設置存在配置文件中而非注冊表中,適合在移動介質上操作
2.Xshell 是一個強大的安全終端模擬軟件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 協議。Xshell 通過互聯網到遠程
主機的安全連接以及它創新性的設計和特色幫助用戶在復雜的網絡環境中享受他們的工作
二 .linux實例中安裝nodeJs環境
- 在控制台輸入"wget https://nodejs.org/download/release/v5.3.0/node-v5.3.0.tar.gz"下載源代碼到服務器本地。
- 在控制台輸入"tar -zvxf node-v5.3.0.tar.gz"解壓縮源代碼。
- 在控制台輸入"cd node-v5.3.0/ && ./configure && make"轉到源代碼根目錄、配置編譯選項並開始編譯NodeJS源代碼(可能需要先安裝好編譯工具如gcc、g++、make,ubuntu可以使用命令"sudo apt-get install build-essential"安裝好C/C++編譯環境)。
- 在控制台輸入"sudo make install"安裝編譯好的NodeJS程序,輸入"node -v"以測試是否安裝成功,成功則會顯示當前的版本(本例中應為v5.3.0)
三 .拷貝源代碼到服務器
本例中在Windows使用WinSCP來拷貝文件,接下來介紹WinSCP的配置。 配置WinSCP過程如下:
- 下載並安裝WinSCP工具。
- 打開WinSCP並點擊新建站點。
- 在文件協議選項中選擇"SCP"。
- 填寫主機名(可以為實例的公共DNS或者公共IP),端口使用默認的22。
- 填寫用戶名為ubuntu(其他linux實例為ec2-user)。
- 打開"高級",在SSH->驗證->密鑰文件中選擇服務器.ppk密鑰文件,點擊確定完成設置。
- 最后點擊登錄即可連接到服務器,支持拷貝本地文件到遠程服務器。
按照上述步驟執行配置過程成功后,把本地的源代碼拷貝至服務器,本例中工程目錄名為"Hello",包含"hello.js"以及"package.json"兩個文件。詳細內容如下:
hello.js
var http = require('http'); // 加載NodeJS http模塊
// 創建服務器對象
var server = http.createServer(function(request, response) {
response.writeHead(200, { 'Content-Type': 'text/plain'}); // 設置響應頭
response.write("Hello, World!"); // 設置相應內容
response.end(); // 結束請求
});
server.listen(3000); // 監聽指定端口,需要在ec2 web console中設置允許從指定的TCP端口入站。
package.json
|
1
2
3
4
5
6
7
8
9
10
11
|
{
"name"
:
"hello"
,
"version"
:
"0.0.0"
,
"author"
:
"wu.shen@ck-telecom.com"
,
"private"
:
true
,
"scripts"
: {
"start"
:
"node hello.js"
},
"dependencies"
: {
}
}
|
開啟測試程序
- 在服務器控制台下轉到源代碼目錄執行"npm start"即可開始執行程序(如果代碼還依賴其他的NodeJS模塊,需要先執行"npm intsall"來安裝依賴的模塊)。
- 在瀏覽器中輸入實例的公共DNS或者公共IP加上端口號訪問測試程序,即可獲得"Hello World!"響應。
常連接
為了保持服務器一直在線 使用forever
sudo npm install -g forever;
sudo forever start bin/www
sudo forever stop bin/www
forever 常用命令
// 1. 簡單的啟動
forever start app.js
// 2. 指定forever信息輸出文件,當然,默認它會放到~/.forever/forever.log
forever start -l forever.log app.js
// 3. 指定app.js中的日志信息和錯誤日志輸出文件,
// -o 就是console.log輸出的信息,-e 就是console.error輸出的信息
forever start -o out.log -e err.log app.js
// 4. 追加日志,forever默認是不能覆蓋上次的啟動日志,
// 所以如果第二次啟動不加-a,則會不讓運行
forever start -l forever.log -a app.js
// 5. 監聽當前文件夾下的所有文件改動
forever start -w app.js
文件改動監聽並自動重啟
// 1. 監聽當前文件夾下的所有文件改動(不太建議這樣)
forever start -w app.js
顯示所有運行的服務
forever list
停止操作
// 1. 停止所有運行的node App
forever stopall
// 2. 停止其中一個node App
forever stop app.js
// 當然還可以這樣
// forever list 找到對應的id,然后:
forever stop [id]
重啟操作
重啟操作跟停止操作保持一致。
// 1. 啟動所有
forever restartall
更多一些
上面的一些解釋足夠平常使用,還有待之后繼續補充。
開發和線上建議配置
// 開發環境下
NODE_ENV=development forever start -l forever.log -e err.log -a app.js
// 線上環境下
NODE_ENV=production forever start -l ~/.forever/forever.log -e ~/.forever/err.log -w -a app.js
上面加上NODE_ENV為了讓app.js辨認當前是什么環境用的。不加它可能就不知道哦?
一些注意點
有可能你需要使用unix下的crontab(定時任務)
這個時候需要注意配置好環境變量。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
后記
毋庸置疑,擁有了Github就擁有了世界。
參考
https://github.com/nodejitsu/forever
http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever
https://github.com/nodejitsu/forever/issues/116
打包 壓縮 tar -czvf nodePro.tar.gz nodePro/
netstat -ntlp 查看端口使用情況
