Skip to content

Commit

Permalink
Revamp Heroku support and add support for Redis URLs
Browse files Browse the repository at this point in the history
  • Loading branch information
shvelo committed Oct 6, 2015
1 parent 8aec4d4 commit 5774601
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 28 deletions.
30 changes: 12 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,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 @@ -178,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 @@ -203,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
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

0 comments on commit 5774601

Please sign in to comment.