如何在 AWS EC2 上搭载静态服务器

Posted by Wei on December 15, 2016

Amazon Web Services (AWS) - Cloud Computing Services [English Version]

设置AWS账号

如果你有 .edu 邮箱的话,你可以申请学生账号,AWS会给你 $100 刀,有效期是一年。

Create EC2 instance 创建 EC2 实例

  1. 创建一个实例,选择 ubuntu,然后选择默认的设置。
  2. 在 Security Groups 一栏,添加以下的规则。
  3. 创建一个钥匙串,然后保存到你的电脑上。
HTTP                         Anywhere
HTTPS                        Anywhere
Custom TCP Rule    8000      Anywhere
Custom TCP Rule    9000      Anywhere

登陆到 AWS EC2

  1. 使用 Terminal 进入你钥匙串所在的文件夹。
  2. 输入 ssh -i node.pem ubuntu@ec2-11-111-111-111.compute-1.amazonaws.com 来登陆。
  3. 也许你会得到提示,这不是一个公共的钥匙串,无法登陆。这时候需要改变钥匙串文件的属性,输入 chmod 600 key.pem 来修改文件的属性, 输入 ls -l 来查看文件的属性。

使用 fileZilla 来上传文件到 AWS

  1. 选择 Preferences > Settings > Connection > SFTP,然后选择 “Add key file”
  2. 选择你从 AWS 上下载的 .pem 的文件,然后选中它。
  3. 选中 File > Site Manager,用以下参数新建一个 site:
    • 你 EC2 实例的公共 DNS 名称,或者是服务器的 IP 地址
    • Protocol: SFTP
    • Logon Type: Normal
    • User Type: 见如下
    • 按下 Connect 按钮

User type:

  1. 对于 Amazon Linux, 默认的用户名是 ec2-user.
  2. 对于 RHEL5, 默认的用户名是 ec2-user.
  3. 对于 Ubuntu, 默认的用户名是 ubuntu.
  4. 对于 SUSE Linux, 默认的用户名是 root.
  5. 对于 Debian, 默认的用户名是 admin,如果不是的话,查询你的 AMI 提供商。

设置 Ubuntu 的环境

  1. 输入 sudo apt-get update
  2. 输入 sudo apt-get install libssl-dev g++ make
  3. 打开 nodejs.org 来安装你的 Node.js。
  4. 通过 vim test.js 来创建一个 test.js 的文件。
  5. 运行 node test.js,然后打开 11.11.11.11:9000 来查看是否成功

test.js 的 Node.js 代码示例:

var http = require('http');
var port = 9000
http.createServer(function (req, res) {
	res.writeHead(200, {'Content-Type' : 'text/plain'});
	res.end('Hello World!\n');
}).listen(port);
console.log('Listening on port: ', port);

使用 Express 来搭载静态服务器

  1. 通过 npm install express 来安装 Express
  2. 修改 test.js 这个文件,使用如下的代码示例
  3. 运行 node test.js,然后打开 11.11.11.11:9000 来查看是否成功

test.js 的 Express 代码示例:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
	res.send('Hello World!\n');
});

var port = 9000;
app.listen(port);
console.log('Listening on port: ', port);

使用 Express 静态服务器来访问文件夹

  1. 如下是文件夹的目录,供参考。
  2. 创建如下的 test.js 文件。
  3. 运行 node test.js,然后打开 http://localhost:8080/ to check if success
.tv
	-public
		-js
		-templates
	-test.js

test.js 的代码示例:

var express = require('express'),
    app = express();

app.use(express.static(__dirname + '/public'));

app.get('/', (req, res) => {
  return res.status(200).send('This is the root of my express application');
});

app.listen(8080);

让服务器在后台一直运行

  1. 输入 sudo nohup node test.js &
  2. 删除 nohup.log 的文件。
  3. 想要终止任务?你需要通过输入 ps -ef 来查询到任务的 ID,然后输入 kill ID 来终止程序。

额外信息

  1. Express 并不会让你直接访问文件夹,如果你需要访问一个文件,输入 http://localhost:8080/js/application.js,否则的话你会得到 Cannot GET/ 的回复。

参考


本文完

如果你觉得本博客有用,你可以在知乎专栏找到我:戳这里