2010-07-08 155 views
2

所以我安裝的node.js,並和已經運行node sayhello.js這是該代碼:node.js的在Amazon EC2上使用Ubuntu 8.04安裝在Amazon EC2上

var sys = require('sys'), 
    http = require('http'); 
http.createServer(function (req, res) { 
    setTimeout(function() { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.write('<br/><strong>&nbsp;&nbsp;&nbsp;&nbsp;Hello World!</strong>'); 
    res.end(); 
    sys.puts(sys.inspect(req, false)); 
    }, 2000); 
}).listen(8000); 
    sys.puts('Server running at http://ec2-174-12-132-193.compute-1.amazonaws.com:8000/'); 

我看到

服務器運行在 http://ec2-174-12-132-193.compute-1.amazonaws.com:8000/

正確顯示在控制檯中。

tutorial說:轉到8000在瀏覽器中,你應該看到Hello World!

我去http://ec2-174-12-132-193.compute-1.amazonaws.com:8000/(不是真正的地址),但它不加載(只是連接...)。這個例子使用localhost,是做公共領域不正確還是一些這樣的?

謝謝。

回答

4

在與EC2實例關聯的安全組中,確保您的端口8000對您的IP或公衆開放。

6

您需要在安全組中打開端口8000。

如果您已經安裝了EC2的命令行工具,嘗試運行:

$ ec2-authorize default -p 8000 

這是假設你正在使用的默認安全組。如果不是,則將默認更改爲您的安全組的名稱。

如果你只是使用Web界面請按照下列步驟操作:

  1. 登錄到AWS控制檯
  2. 選擇亞馬遜EC2在菜單頂欄
  3. 點擊安全組在左邊
  4. 單擊您分配給您的EC2實例的安全組(可能只是默認值)
  5. 在底部的窗格中,單擊入境標籤
  6. 套裝端口範圍: 8000並保留其他兩個輸入,因爲它們是
  7. 單擊添加規則
0

檢查以下內容:

  1. 那您允許從所有ips訪問安全組中的端口8000
  2. 您修改了正確的安全組(例如quicklaunch-1)和不是說,quicklaunch-2。我已經編輯了錯誤的次數,而不是我想要承認的次數。
  3. 您已在Linux防火牆上打開端口8000
  4. 您的服務器實際上正在運行(您應該在命令行中看到「在端口8000上偵聽」)。

這裏是如何建立在Amazon EC2上一個Node.js的web服務器的教程:http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

這是一個有點比你在做什麼(因爲它使用IP轉發80到更復雜8080),但關於打開Linux防火牆的部分是相同的。