An Nginx Multi-Environment Server.
Hosting ain't cheap, and running several sites from ones server takes a ton of work. Juniper makes things less painful.
Let's say you want to serve out flat files for your site, run a node api on a subdomain, and redirect traffic from a subfolder to that subdomain. Well, this is perfect for you.
With Juniper, you can run all of these simultaneously:
To add a new site to your server, just add a new key in the configuration file, restart, and voila!
It's generally bad practice to run multiple environments (uat, production, etc.) on a single server, it means if that server goes down all of your sites are down. But sometimes you're on a budget, and don't want to use something like Heroku, which may require you to pay for multiple add-on services.
Please refer to the project wiki for more details.
# From anywhere on your system, install the Juniper CLI globally
$ npm install -g juniper
# Create a new folder that will house your Juniper configuration
$ juniper create my-sites
# Update the `my-sites/config.cson` file that was just created.# Start your server
$ cd my-sites
$ juniper install
$ juniper start $ juniper -h
Usage: juniper [action [options]]
Actions:
create <project> Create a new folder and init it as a juniper project
init Initalize project
install <siteName> Install the dependencies of this project or site
start <siteName> Start project or site
stop <siteName> Stop project or site
restart <siteName> Restart project or site
remove <siteName> Remove all settings, stop all services for this project or site
update <siteName> Stop, update, and restart project or site
Options:
-h, --help output usage information
-V, --version output the version number
nginx:# Nginx config coming soon. See 'Upcoming Features'.mimetypes: []
sites:# DEFAULTS# siteName: # Required# domain: null # Required, string# repo: null # Required, string# branch: 'master'# port: 80# type: 'files' # string: 'files|process'# install: null # string, ex: 'npm install', 'make setup'# start: null # string, ex: 'npm start', 'grunt production', 'jake server:uat'# stop: null # string, ex: 'npm stop', 'gulp stop'# files:# index: 'index.html index.htm'# redirects: [] # array: {dir, site}, limited to 'process' sites# root: null # relative to the repo folder# process:# port: null # Required, int# address: '127.0.0.1'# EXAMPLES# Serving static filessimpleFiles:domain:'www.juniper-site-files.com'repo:'https://github.com/danmconrad/juniper-site-files.git'# Running a node serversimpleProcess:domain:'www.juniper-site-process.com'repo:'https://github.com/danmconrad/juniper-site-process.git'start:'forever start ./index.js'stop:'forever stop ./index.js'type:'process'process:port:1337# Serving a static site with redirected sub-foldersfilesWithApiAndBlog:domain:'www.files-with-api-and-blog.com'repo:'https://url-to-repo/files-with-api-and-blog.git'redirects: [
{dir:'/api', site:'api'}
{dir:'/blog', site:'blog'}
]
api:domain:'www.api.com'repo:'https://url-to-repo/api.git'type:'process'process:port:6000blog:domain:'www.blog.com'repo:'https://url-to-repo/blog.git'type:'process'process:port:7000# Serving two version of the same siteprodEmberCliSite:domain:'www.ember-cli-site.com'repo:'https://url-to-repo/ember-cli-site.git'branch:'master'files:root:'dist'install:'npm install && bower install'start:'ember build --environment=production'uatEmberCliSite:domain:'uat.ember-cli-site.com'repo:'https://url-to-repo/ember-cli-site.git'branch:'develop'files:root:'dist'install:'npm install && bower install'start:'ember build --environment=uat'