Giter Club home page Giter Club logo

hostmanager's Introduction

HostManager (AWS) - extended

Overview

HostManager is a small Ruby app that runs on each EC2 node in an Elastic Beanstalk environment. It processes HTTP requests containing commands from the Elastic Beanstalk service. These commands include things like status checks, configuration updates, app deployments, etc.

The goal of this project is to extend Amazon's HostManger application to support additional application types with custom configurations that are not enabled through the stock app.

Why? Because ElasticBeanstalk is a nice service and I want to use it with other application stacks, many of which will never be supported by Amazon directly.

Project Organization

Stock HostManager basically just supports a webroot directory. This extended version supports completely custom configurations by giving YOU control over the deployment process. All you need to do is ship your application with a config directory filled with custom hooks for deployment and startup/shutdown of custom server processes.

Platform Support

Anything! Well, sort of. The default build is still designed to work with Apache running on port 80. This is required because we need to proxy the Elastic Beanstalk HTTP requests to the HostManager application, which is running on a higher port. It should be pretty easy to replace Apache with another webserver, like nginx, if that's desired.

Your Application

A basic application should consist of the following:

  • beanstalk
    • deploy.sh (copy files, fix permissions, etc.)
    • post-deploy.sh (optional)
    • config.sh (optional, updates custom config vars)
    • shutdown.sh (stop app servers)
    • startup.sh (start app servers)
  • application source (anything!)

There's an example included that demonstrates deploying a simple PHP sample application - basically the same one that AWS uses. You can use this as a foundation for deploying other custom apps.

Installing custom HostManager package

  1. Launch an existing Beanstalk AMI in EC2 (NOT THROUGH BEANSTALK)
  2. Zip up this directory
  3. Use wget or scp to move it to your server
  4. Unzip and enter directory
  5. Add execute perms to deploy.sh and run
  6. Use EC2 to roll a new AMI
  7. Done!

hostmanager's People

Watchers

Jon Baer avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.