AWS的项目服务

一、如何在AWS部署项目

申请到亚马逊AWS免费账户后,我们可以拥有很多的免费云服务产品项目,其中包括:

    • EC2云服务器、
    • Amazon S3存储、
    • Amazon RDS数据库、
    • Amazon CloudFront分发服务、
    • Mobile Analytics移动分析服务、
    • Amazon SNS消息推送服务等等项目。

 

Ref: 亚马逊AWS免费EC2虚拟机开通实例和部署密钥、安全策略过程 【很详细】

开放端口比较有讲究,如下:

[AWS] Deploy react project on EC2

更多详细内容可以参见:[AWS] EC2 & GPU

 

二、如何关掉EC2上的镜像

Terminate Instance

When you terminate an EC2 instance, the instance will be shutdown and the virtual machine that was provisioned for you will be permanently taken away and you will no longer be charged for instance usage. Any data that was stored locally on the instance will be lost. Any attached EBS volumes will be detached and deleted. However, if you attach an EBS Snapshot to an instance at boot time, the default option in the Dashboard is to delete the attached EBS volume upon termination.

Stop Instance

When you stop an EC2 instance, the instance will be shutdown and the virtual machine that was provisioned for you will be permanently taken away and you will no longer be charged for instance usage.

The key difference between stopping and terminating an instance is that the attached bootable EBS volume will not be deleted.  <----

The data on your EBS volume will remain after stopping while all information on the local (ephemeral) hard drive will be lost as usual. The volume will continue to persist in its availability zone. Standard charges for EBS volumes will apply. Therefore, you should only stop an instance if you plan to start it again within a reasonable timeframe. Otherwise, you might want to terminate an instance instead of stopping it for cost saving purposes.

The ability to stop an instance is only supported on instances that were launched using an EBS-based AMI where the root device data is stored on an attached EBS volume as an EBS boot partition instead of being stored on the local instance itself. As a result, one of the key advantages of starting a stopped instance is that it should theoretically have a faster boot time. When you start a stopped instance the EBS volume is simply attached to the newly provisioned instance. Although, the AWS-id of the new virtual machine will be the same, it will have new IP Addresses, DNS Names, etc. You shouldn't think of starting a stopped instance as simply restarting the same virtual machine that you just stopped as it will most likely be a completely different virtual machine that will be provisioned to you.

For more information about what really happens during each server/instance state, please see Server States.

Warning! - When stopping an instance, keep in mind that it must be started again through RightScale in order to operate correctly. If the instance is started outside of RightScale, we will not be able to generate the required user data so that the instance will be able to properly communicate with RightScale via the RightLink agent.

 

 

 

步步实践

AWS EC2 Tutorial For Beginners | AWS Certified Solutions Architect Tutorial | AWS Training | Edureka【2+ hours】

[AWS] How to deploy Node.js apps on AWS EC2【step by step】

 

远程登录配置

简单地说就是配置完毕后,通过ssh登录远程服务器。

chmod 400 lotusairline-test.pem
ssh -i "lotusairline-test.pem" ubuntu@ec2-54-252-131-130.ap-southeast-2.compute.amazonaws.com

 

代码运行环境配置

找到一个 repo 作为 test case。

  git clone https://github.com/hoanghuynh1995/AirlineReservation.git

  cd AirlineReservation/

  sudo apt-get update
  sudo apt-get install npm

  npm install

  # install node.
  node server.js

  sudo apt-get install nodejs-legacy
  node server.js

  # change port.
  vim server.js 

  # start. 
  sudo node server.js

一开始连接不上,如下:

ubuntu@ip-172-31-4-91:~/demo/AirlineReservation$ node server.js

Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
`open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/4.x/docs/connections.html#use-mongo-client
Server running at http://localhost:3000
Db.prototype.authenticate method will no longer be available in the next major release 3.x as MongoDB 3.6 will only allow auth against users in the admin db and will no longer allow multiple credentials on a socket. Please authenticate using MongoClient.connect with auth credentials.
Mongoose: airports.ensureIndex({ code: 1 }, { unique: true, background: true })
Mongoose: bookings.findOne({}, { sort: { bookedAt: -1 }, limit: 1, fields: {} })
Mongoose: bookings.ensureIndex({ code: 1 }, { unique: true, background: true })
Mongoose: routes.ensureIndex({ code: 1 }, { unique: true, background: true })

 

全局安装yarn

npm install -g yarn

 

node版本过低

ubuntu@ip-172-31-4-91:~/hahaha/proj$ sudo yarn
yarn install v1.7.0
warning You are using Node "4.2.6" which is not supported and may encounter bugs or unexpected behavior. Yarn supports the following semver range: "^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0"
warning package.json: No license field
warning tc_platform@0.0.1: No license field
[1/5] Validating package.json...
error tc_platform@0.0.1: The engine "node" is incompatible with this module. Expected version ">= 8.9.0".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
ubuntu@ip-172-31-4-91:~/my_fiora_resume/tc_platform$ node -v v4.2.6

故,选择合适版本的源码安装node.js。

$ sudo git clone https://github.com/nodejs/node.git
Cloning into 'node'...

  lolo@lolo-UX303UB$ node -v
  v8.9.4  //一个实践所得匹配的版本
  lolo@lolo-UX303UB$ yarn -v
  1.7.0

$ sudo chmod -R 755 node

$ cd node
$ sudo ./configure
$ sudo make
$ sudo make install

$ node --version
v0.10.25

 

 

 

远程连接“数据库”

安装mongodb

sudo apt-get install mongodb

 

删掉某数据库

> use rc_platform
switched to db rc_platform

> db.dropDatabase()
{ "dropped" : "rc_platform", "ok" : 1 }

 

删掉文档

> db.users.remove({"username" : "jessehao123"})
WriteResult({ "nRemoved" : 1 })

 

备份数据库

[AWS] Deploy react project on EC2
ubuntu@ip-172-31-4-91:~$  mongodump -h 127.0.0.1:27017 -d HotspotDB -o backup_HotspotDB

connected to: 127.0.0.1:27017
2018-06-22T12:18:28.413+0000 DATABASE: HotspotDB     to     backup_HotspotDB/HotspotDB
2018-06-22T12:18:28.413+0000     HotspotDB.system.indexes to backup_HotspotDB/HotspotDB/system.indexes.bson
2018-06-22T12:18:28.414+0000          12 documents
2018-06-22T12:18:28.414+0000     HotspotDB.messages to backup_HotspotDB/HotspotDB/messages.bson
2018-06-22T12:18:28.414+0000          104 documents
2018-06-22T12:18:28.414+0000     Metadata for HotspotDB.messages to backup_HotspotDB/HotspotDB/messages.metadata.json
2018-06-22T12:18:28.415+0000     HotspotDB.users to backup_HotspotDB/HotspotDB/users.bson
2018-06-22T12:18:28.415+0000          7 documents
2018-06-22T12:18:28.415+0000     Metadata for HotspotDB.users to backup_HotspotDB/HotspotDB/users.metadata.json
2018-06-22T12:18:28.415+0000     HotspotDB.groups to backup_HotspotDB/HotspotDB/groups.bson
2018-06-22T12:18:28.415+0000          7 documents
2018-06-22T12:18:28.415+0000     Metadata for HotspotDB.groups to backup_HotspotDB/HotspotDB/groups.metadata.json
2018-06-22T12:18:28.416+0000     HotspotDB.friends to backup_HotspotDB/HotspotDB/friends.bson
2018-06-22T12:18:28.416+0000          7 documents
2018-06-22T12:18:28.416+0000     Metadata for HotspotDB.friends to backup_HotspotDB/HotspotDB/friends.metadata.json
2018-06-22T12:18:28.416+0000     HotspotDB.sockets to backup_HotspotDB/HotspotDB/sockets.bson
2018-06-22T12:18:28.416+0000          1 documents
2018-06-22T12:18:28.416+0000     Metadata for HotspotDB.sockets to backup_HotspotDB/HotspotDB/sockets.metadata.json
View Code

相关文章: