Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support one-click Heroku deployment #190

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 14 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ BrowserQuest

[![Build Status](https://travis-ci.org/browserquest/BrowserQuest.png)](https://travis-ci.org/browserquest/BrowserQuest) [![Dependency Status](https://gemnasium.com/browserquest/BrowserQuest.png)](https://gemnasium.com/browserquest/BrowserQuest)

[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)

[BrowserQuest](http://browserquest-teambq.rhcloud.com:8000) is a HTML5/JavaScript multiplayer game experiment.

It has three major parts:
Expand Down Expand Up @@ -52,7 +54,7 @@ Then install the Node.js dependencies by running:

$ npm config set registry http://registry.npmjs.org/
$ npm install -d

Before starting the BrowserQuest server, you must start Redis. In Windows, you can simply run `redis-server.exe` in your `redis\bin\release` directory.

Then start the server by running:
Expand Down Expand Up @@ -176,11 +178,11 @@ Currently, BrowserQuest can run on the following PAAS (Platform as a Service) pr
$ git remote add github https://github.com/browserquest/BrowserQuest.git
$ git fetch github
$ git reset --hard github/master

5. Copy the BrowserQuest config file with the following command:

$ cp server/config.json server/config_local.json

6. Open `server/config_local.json` in a text editor such as Gedit (Linux), TextEdit (OS X), or Vim.
On the line that reads `"production": "heroku",`, change `"heroku"` to `"openshift"`.

Expand All @@ -201,43 +203,37 @@ Congratulations! You have now deployed BrowserQuest to Openshift! You can see th
Visit the url shown by the above command to see BrowserQuest running. You will need to add ":8000" to the end. Use the url below as a guide:

http://your_openshift_browserquest_url.rhcloud.com:8000/

### Instructions for Heroku ###

1. Install the Heroku toolbelt from [here](https://toolbelt.herokuapp.com/).

2. Create a new application by running the following command:

$ heroku create [NAME]

Where [NAME] is an optional name for your application (Heroku will automatically create one otherwise).

3. Sign up for a Redis provider, such as [Redis To Go](https://redistogo.com), or host a Redis instance yourself.
3. Add heroku-redis add-on:

heroku addons:create heroku-redis:hobby-dev

4. Run the following commands to allow BrowserQuest to run on Heroku:

$ heroku config:add HEROKU=true
$ heroku config:add HEROKU_REDIS_HOST=[REDIS_HOST]
$ heroku config:add HEROKU_REDIS_PORT=[REDIS_PORT]
$ heroku config:add HEROKU_REDIS_PASSWORD=[REDIS_PASSWORD]

Where [REDIS_HOST], [REDIS_PORT], and [REDIS_PASSOWRD] are your Redis hostname, port, and password, respectively.
If you Redis instance is configued without a password, omit the last command.

Note: If you use RedisToGo, you will be provided with a URL that looks something like this:
If you need to use a different Redis provider than `heroku-redis`, set a `REDIS_URL`:

redis://redistogo:[email protected]:9023/

In this case, your REDIS_HOST is `something.redistogo.com`, your REDIS_PORT is `9023`, and your REDIS_PASSWORD is `12345678901234567890`.
$ heroku config:add REDIS_URL=[REDIS_URL]

5. Deploy to Heroku by running the following command:

$ git push heroku master

6. Enable the Heroku WebSockets lab (needed for communication between the browser and the BrowserQuest server) with the following command:

$ heroku labs:enable websockets


Congratulations! You have now deployed BrowserQuest to Heroku! To open BrowserQuest in your browser, run `heroku open`.

Expand Down
12 changes: 12 additions & 0 deletions app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "BrowserQuest",
"description": "HTML5/JavaScript multiplayer game experiment",
"website": "https://github.com/shvelo/BrowserQuest",
"success_url": "/",
"addons": ["heroku-redis:hobby-dev"],
"env": {
"HEROKU": "true"
},
"scripts": {
}
}
3 changes: 1 addition & 2 deletions server/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
"map_filepath": "./server/maps/world_server.json",
"metrics_enabled": false,
"use_one_port": true,
"redis_port": 6379,
"redis_host": "127.0.0.1",
"redis_url": "redis://127.0.0.1:6379",
"memcached_host": "127.0.0.1",
"memcached_port": 11211,
"game_servers": [{"server": "localhost", "name": "localhost"}],
Expand Down
8 changes: 6 additions & 2 deletions server/js/db_providers/redis.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@ var cls = require("../lib/class"),

module.exports = DatabaseHandler = cls.Class.extend({
init: function(config){
client = redis.createClient(config.redis_port, config.redis_host, {socket_nodelay: true});
client.auth(config.redis_password || "");
if(config.redis_url) {
client = redis.createClient(config.redis_url, {socket_nodelay: true});
} else {
client = redis.createClient(config.redis_port, config.redis_host, {socket_nodelay: true});
client.auth(config.redis_password || "");
}
},
loadPlayer: function(player){
var self = this;
Expand Down
4 changes: 1 addition & 3 deletions server/production_hosts/heroku.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
var config = {}

config.port = process.env.PORT;
config.redis_port = process.env.HEROKU_REDIS_PORT
config.redis_host = process.env.HEROKU_REDIS_HOST
config.redis_password = process.env.HEROKU_REDIS_PASSWORD
config.redis_url = process.env.REDIS_URL

config.isActive = function() {
return process.env.HEROKU !== undefined;
Expand Down
7 changes: 4 additions & 3 deletions server/production_hosts/openshift.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ var config = {}

config.ip = process.env.OPENSHIFT_NODEJS_IP;
config.port = process.env.OPENSHIFT_NODEJS_PORT;
config.redis_port = process.env.OPENSHIFT_REDIS_PORT || process.env.OPENSHIFT_REDIS_DB_PORT
config.redis_host = process.env.OPENSHIFT_REDIS_HOST || process.env.OPENSHIFT_REDIS_DB_HOST
config.redis_password = process.env.REDIS_PASSWORD
config.redis_url = false;
config.redis_port = process.env.OPENSHIFT_REDIS_PORT || process.env.OPENSHIFT_REDIS_DB_PORT;
config.redis_host = process.env.OPENSHIFT_REDIS_HOST || process.env.OPENSHIFT_REDIS_DB_HOST;
config.redis_password = process.env.REDIS_PASSWORD;

config.isActive = function() {
return process.env.OPENSHIFT_NODEJS_IP !== undefined;
Expand Down