INACTIVE - http://mzl.la/ghe-archive - A featherweight PaaS on top of Amazon EC2 for deploying node apps
Перейти к файлу
Ryan Kelly a4060b89a2
Merge pull request #149 from Mozilla-GitHub-Standards/master
Add Mozilla Code of Conduct
2019-03-29 06:50:59 +11:00
.cdist nodejs -> v0.10.29 2014-06-17 16:45:20 -07:00
doc Extra refined instructions for AMI creation 2014-06-20 16:41:59 +12:00
lib workaround a problem with permissions on ~ec2-user/.ssh/authorized_keys 2014-06-11 06:15:46 +00:00
scripts a script to take a base amazon AMI and enable root@ ssh 2014-02-11 00:18:06 +02:00
tests add a test harness which runs jshint across the source (wow, it's a mess) 2013-09-20 12:33:06 +03:00
users copy up pristinify script to ~ec2-user 2014-06-11 06:19:31 +00:00
util use standalone ./util/relative-date.js 2016-03-23 15:31:07 -07:00
.awsbox.json add an empty .awsbox.json - this allows one to clone and use awsbox's functionality not related to deployment 2013-09-19 15:49:53 +03:00
.gitignore bring in cmd line deployment script, initial generalization from a browserid thing to a world thing 2012-03-30 14:59:17 -06:00
.jshintrc add a test harness which runs jshint across the source (wow, it's a mess) 2013-09-20 12:33:06 +03:00
.travis.yml add irc travis notifications 2013-09-25 12:06:43 +03:00
CODE_OF_CONDUCT.md Add Mozilla Code of Conduct file 2019-03-27 20:54:25 -07:00
ChangeLog и аз съм човек 2014-02-11 01:33:40 +02:00
LICENSE MPL license - fixes #113 2014-01-23 15:54:03 +02:00
README.md update README with new features and the move to nginx 2013-09-21 17:59:13 +03:00
awsbox.js use standalone ./util/relative-date.js 2016-03-23 15:31:07 -07:00
defaultImages.json new ami images 2014-06-11 06:19:31 +00:00
package.json use standalone ./util/relative-date.js 2016-03-23 15:31:07 -07:00

README.md

Build Status

A Lightweight DIY PaaS for Amazon Web Services

Amazon Web Services (AWS) "Elastic Compute Cloud" provides low cost, instant on VMs that can be used to deploy any kind of service. AWS also provides a full set of APIs that make it possible to programatically allocate servers. Finally, AWS offers the ability to create "template" instances (Amazon Machine Images) that are VM snapshots.

The problem: For small scale nodejs projects, there's a lot of administrative boiler plate work that one must to set up a machine. You must install web server software, set up security policies and network access, copy up your keypair, determine how you'll deploy your software on the new VM, etc.

"Platform as a service" providers like heroku make most of these decisions for you, providing a demand spun "vm-like" thing that you can deploy code on by adhering to a couple conventions and git pushing. Where heroku breaks down is in generativity - you are limited to doing things that heroku has thought of, and when you want to do something custom (install a new native software library, run an experimental database for which you cannot find a third party hosted provider) - you are screwed.

Also, heroku is relatively expensive. The moment you want to run two processes, you're paying 0.05$/hr for that process vs. on aws where you can purchase a "micro" instance for 0.02$/hr for the whole VM. The final area of expense is in "add-ons" - service providers that offer things like hosted databases, email sending, etc. A small scale database can cost another .015$/hr.

But Wait! What about nodejitsu? Well, probably use them: they're awesome, smart, admirably share their work, have a free service for non-commercial deployments, and just work for most apps. But sometimes you might want full control. That you? Read on... (NOTE: awsbox is built on lots of nodejistu stuffs).

So what we maybe want is the convenience of Nodejitsu and Heroku, and the pricing and freedom of a raw amazon image...

The solution: awsbox is a set of nodejs scripts, a command line utility, and a template image (AMI). Together it allows you to deploy a new server from the command line that is pre-configured to run your Node.JS service.

Features

  • nodejs focused - While other stacks could be supported in the future, awsbox is laser focused on node.js to start.
  • full root access - awsbox just gets you started, after that you can do Whatever You Want.
  • magic ssh key config - Your SSH key will be copied up and installed for you.
  • git push support - After you provision a vm, it's pre-configured so you can push to deploy
  • multi-region support - awsbox base AMIs are published in every region AWS supports, so you can deploy anywhere.
  • command line or programmatic usage - type at it, or script it.
  • OS level user isolation - all deployed code is run with user permissions under a single account.
  • HTTP forwarding with custom 503 page - nginx is pre-configured to forward requests to your nodejs process bound to a local port.
  • SSL support - By default your process runs with a self-signed cert. Enabling SSL support is as easy as copying up a private key and certificate in PEM format.
  • WebSocket support - AWSBOX fully supports WebSockets, via socket.io or otherwise.
  • Route53 support - manage your DNS from the command line, and have DNS set up for your boxes at creation time.

Get Started

Start by working through the tutorial. Then have a look at the Hello World sample app. And after that, check out the documentation in this repository.