如何在 AWS EC2 上搭载静态服务器
Contents
设置AWS账号
如果你有 .edu 邮箱的话,你可以申请学生账号,AWS会给你 $100 刀,有效期是一年。
Create EC2 instance 创建 EC2 实例
- 创建一个实例,选择
ubuntu
,然后选择默认的设置。 - 在 Security Groups 一栏,添加以下的规则。
- 创建一个钥匙串,然后保存到你的电脑上。
1 | HTTP Anywhere |
登陆到 AWS EC2
- 使用 Terminal 进入你钥匙串所在的文件夹。
- 输入
ssh -i node.pem ubuntu@ec2-11-111-111-111.compute-1.amazonaws.com
来登陆。 - 也许你会得到提示,这不是一个公共的钥匙串,无法登陆。这时候需要改变钥匙串文件的属性,输入
chmod 600 key.pem
来修改文件的属性, 输入ls -l
来查看文件的属性。
使用 fileZilla 来上传文件到 AWS
- 选择 Preferences > Settings > Connection > SFTP,然后选择 "Add key file”
- 选择你从 AWS 上下载的
.pem
的文件,然后选中它。 - 选中 File > Site Manager,用以下参数新建一个 site:
- 你 EC2 实例的公共 DNS 名称,或者是服务器的 IP 地址
- Protocol: SFTP
- Logon Type: Normal
- User Type: 见如下
- 按下 Connect 按钮
User type:
- 对于 Amazon Linux, 默认的用户名是 ec2-user.
- 对于 RHEL5, 默认的用户名是 ec2-user.
- 对于 Ubuntu, 默认的用户名是 ubuntu.
- 对于 SUSE Linux, 默认的用户名是 root.
- 对于 Debian, 默认的用户名是 admin,如果不是的话,查询你的 AMI 提供商。
设置 Ubuntu 的环境
- 输入
sudo apt-get update
。 - 输入
sudo apt-get install libssl-dev g++ make
。 - 打开 nodejs.org 来安装你的 Node.js。
- 通过
vim test.js
来创建一个test.js
的文件。 - 运行
node test.js
,然后打开11.11.11.11:9000
来查看是否成功
test.js
的 Node.js 代码示例:
1 | var http = require('http'); |
使用 Express 来搭载静态服务器
- 通过
npm install express
来安装 Express - 修改
test.js
这个文件,使用如下的代码示例 - 运行
node test.js
,然后打开11.11.11.11:9000
来查看是否成功
test.js
的 Express 代码示例:
1 | var express = require('express'); |
使用 Express 静态服务器来访问文件夹
- 如下是文件夹的目录,供参考。
- 创建如下的
test.js
文件。 - 运行
node test.js
,然后打开http://localhost:8080/
to check if success
1 | .tv |
test.js
的代码示例:
1 | var express = require('express'), |
让服务器在后台一直运行
- 输入
sudo nohup node test.js &
。 - 删除
nohup.log
的文件。 - 想要终止任务?你需要通过输入
ps -ef
来查询到任务的 ID,然后输入kill ID
来终止程序。
额外信息
- Express 并不会让你直接访问文件夹,如果你需要访问一个文件,输入
http://localhost:8080/js/application.js
,否则的话你会得到Cannot GET/
的回复。
参考
- Connect to Amazon EC2 file directory using Filezilla and SFTP
- Cloud Computing for Education
- Using Express to serve static files, return Cannot GET?
本文完