I will not continue any work on lazuli, as its dependency lapis has unfixable design and developer based issues that keep me from continuing to use it.
please refer to https://github.com/cuddlyrobot/dysnomia for a better openresty+moonscript based web framework.
or just feel free to fork this according to the included LICENSE.
more or less useful instructions below:
./setup.zsh
this installs the dependencies (and some wrappers) locally, thanks to magic I'm not going to explain, just read the source if you want to.
edit config.moon
or create custom_config.moon
(which has priority over config.moon
if it exists)
./mk <environment>
./lapis server <environment>
where <environment>
may be development
, test
or production
.
the mk
script builds any moonscript and lesscss (note: you have to install lessc
if using lesscss) files it finds, while the lapis
call actually runs the server
after you made some changes, you might want to make lapis reload your stuff on the fly:
./mk <environment>
just press ctrl+c
./lapis term
###nginx
server{
server_name www.<domain> <domain>;
location / {
proxy_pass http://127.0.0.1:<port>/;
include /etc/nginx/proxy_params;
}
}
<domain>
is the FQDN to handle and <port>
is the port specified in config.moon
.
note how you can specify multiple subdomains (no wildcarding by default).
the /etc/nginx/proxy_params
included should contain at least:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Also, you can speed up things a tiny bit by handling the /static/
content without proxying. just include something like this below the location /
block:
location /static/ {
alias /PATH/TO/YOUR/LAZULI/APP/static/;
expires max;
add_header Pragma public;
add_header Cache-Control "no-transform,public,max-age=120,s-maxage=300";
}
###apache2
<VirtualHost *:80>
ServerName <domain>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:<port>/
ProxyPassReverse / http://127.0.0.1:<port>/
</VirtualHost>
where <domain>
is the FQDN to handle and <port>
is the port specified in config.moon
use this to test while developing, the app will know and handle debug stuff.
if enable_console
is enabled in config.moon
(which it is by default), you're able to access the lapis console (https://github.com/leafo/lapis-console) via /_lazuli/console
use this to test for production, the app will think it's in production, but the server uses test/development config
use this when running for production
the lua/moon paths are set to prefer "./" over the lazuli project root, so just copy the *.moon
files you want to change from lazuli's root into your project root.
but make sure you run setup.zsh
from inside the lazuli root each time you update the project, and watch for changes made in the lazuli project (e.g. new config vars, etc)
also make sure you copy the nginx.conf
and mime.types
files to your project root, and PLEASE don't call lazuli's subfolder just ./lazuli/
, because this WILL mess up the load order (because of src/lazuli/init.moon
not being found), just call it _lazuli
or lib/lazuli
or something like that