https://github.com/leafo/heroku-openresty
Run OpenResty on Heroku with the Lua buildpack
https://github.com/leafo/heroku-openresty
Last synced: about 1 year ago
JSON representation
Run OpenResty on Heroku with the Lua buildpack
- Host: GitHub
- URL: https://github.com/leafo/heroku-openresty
- Owner: leafo
- Created: 2012-11-08T10:02:03.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2015-06-02T20:02:08.000Z (almost 11 years ago)
- Last Synced: 2025-04-20T17:40:03.548Z (about 1 year ago)
- Language: Lua
- Size: 23.5 MB
- Stars: 78
- Watchers: 4
- Forks: 23
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OpenResty for Heroku
This is a Lua rock containing binaries for running OpenResty on Heroku. It's
designed to be used in conjunction with the [Lua
buildpack](https://github.com/leafo/heroku-buildpack-lua).
## What it does
In addition to a pre compiled openresty, some scripts to start nginx are
included. nginx doesn't support passing in port through argument or reading
from environment variable so we preprocess the config file.
Anything matching `${{NAME}}` is replaced with the environment variable `NAME`
inside of your nginx configuration config. (note: doesn't apply to included
files)
The `start_nginx.sh` script will read in `nginx.conf`, compile it to
`nginx.conf.compiled` then start nginx. It takes two optional arguments, an
alternative path for the config as the first and and an alternative root
directory to run the server from. The config must be specified relative to the
root.
The `daemon off`; directive must be added to the config for the entire thing to
work.
## How to use
### Installing the rock
Create a new app with the [Lua buildpack](https://github.com/leafo/heroku-buildpack-lua).
```bash
$ heroku create --buildpack http://github.com/leafo/heroku-buildpack-lua.git
```
Add to your rockspec dependencies:
```lua
dependencies = {
"https://raw.github.com/leafo/heroku-openresty/master/heroku-openresty-1.2.8.6-1.rockspec"
}
```
### Running Nginx
*These directions are for manually running Nginx, if you prefer to use a
framework then I recommend checking out: .*
Create a basic `nginx.conf`, this is the one from the OpenResty guide (with the
addition of `daemon off` and `${{PORT}}`):
```
worker_processes 1;
error_log logs/error.log;
daemon off;
events {
worker_connections 1024;
}
http {
server {
listen ${{PORT}};
location / {
default_type text/html;
content_by_lua '
ngx.say("
hello, world
")
';
}
}
}
```
Create a `Procfile`:
```
web: start_nginx.sh
```
Commit everything and push to deploy. Run `heroku scale web=1` if nginx doesn't
start automatically.
## Using PostgreSQL
This build includes the [Postgres nginx
module](http://labs.frickle.com/nginx_ngx_postgres/), all you need to
do is pass in your database configuration.
First add a database if you haven't added one already:
```bash
heroku addons:add heroku-postgresql:dev
```
This will set an environment variable inside of your application that looks
something like this:
```bash
HEROKU_POSTGRESQL_ROSE_URL="postgres://user:password@database.domain.com/databasename"
```
The nginx config expects a slightly different format, but no worries the config
preprocessor has a filter to convert to the correct format.
Add the database to your config like so: (notice the prefix `pg`)
```
http {
upstream database {
postgres_server ${{pg HEROKU_POSTGRESQL_ROSE_URL}};
}
}
```
That's it, your application can now talk to Postgres through the `database`
upstream.
## Version
* OpenResty 1.5.11.1 `--with-http_postgres_module`