* Added support for Java Deployment with Maven
* Added support for Java Deployment with Maven
* @matrixjnr/feature:java support
* @matrixjnr/feature:java support
* Refactor common config out of nginx templates.
* A way to inject custom nginx directives.
Setting the ENV variable `NGINX_INCLUDE_FILE` allows the user to specify a
file, relative to the app folder, which will be inserted into the nginx
server config.
This is useful for e.g. overriding a variable. For example to allow
uploads larger than 1Mb the user could create a file called `nginx.conf`
in their app repo containing: `client_max_body_size 8M;` and then set
`NGINX_INCLUDE_FILE=nginx.conf` in the ENV file.
This builds on #77 so that should be merged first.
This patch changes piku to check the installed node version and leave it
if correct.
It also separates the nodeenv install and the npm install steps.
It will also warn the user if they try to change the node version in a
running app, and tells them to stop and then deploy the app again in
order to update the node version.
Fixes#70.
This fix allows you to usefully pipe things from the output of 'piku run' into other scripts.
For example you might pipe a request log into goaccess for analysis.
* Updated README with first-timers in mind.
This patch adds information about how to use the script. It also
re-orders the information in the README so that the most pertinent
information for somebody using it for the first time is at the top.
* Logo proposition.
* Possibly punchier tag line.
* Tagline spacing tweak.
* README fixes.
* Added a note about the examples folder.
* Incorporated @dwightmulcahy suggestion.
* Fix node path insert to not clobber env.
* Tighter check on python venv for uwsgi conf.
* Install NODE_VERSION if nodeenv on PATH.
* Document NODE_VERSION setting.
This patch adds a little shell script called `piku`.
What it does is check for a git remote called `piku` and then uses that
remote to infer server & app name and SSH in to run piku.py.
Put it on your path and then from any piku configured local repo you can
do things like: `piku restart` and `piku destroy`.
* Move release worker to end of deploy.
This matches up with what other PaaS platforms do. This change also
makes the release worker inherit the environment (virtualenv etc.) from
the deploy process, making it easier to run e.g. Django manage.py
commands in the expected context without explicitly entering virtualenv
in the script.
* Update Django example to remove virtualenv.
Now that this happens automatically we don't need to explicitly enter
virtualenv in the script.
* Pass spawn env back through to release worker.
Conflicts:
piku.py
* Fix node deploy path handling.
This patch uses a temporary symlink to envs/APP/node_modules to force
node to install the modules into the right place even on older node
versions, like v4.2.6 which ships with Unbuntu 16.04.
Apps launching node servers will need to manually set
NODE_PATH="${VIRTUAL_ENV}/node_modules" to have it run correctly, and
in future we should consider setting this in spawn_app (though currently
spawn_app does not know what kind of app it's spawning).
* Add NODE_PATH to spawn env if node env present.
* Added nodejs websocket chat example app.
* Fix node deploy path handling.
This patch uses a temporary symlink to envs/APP/node_modules to force
node to install the modules into the right place even on older node
versions, like v4.2.6 which ships with Unbuntu 16.04.
Apps launching node servers will need to manually set
NODE_PATH="${VIRTUAL_ENV}/node_modules" to have it run correctly, and
in future we should consider setting this in spawn_app (though currently
spawn_app does not know what kind of app it's spawning).
* Add NODE_PATH to spawn env if node env present.
This patch skips adding the 'virtualenv' setting to the uwsgi config if
the project does not have a valid virtualenv.
This allows nodejs projects to run under the 'web' worker correct.
Presumably Go projects will be similarly hampered without this patch.
If a worker has been removed from the Procfile it may still have an
entry in the SCALING file on the server which causes a traceback when
the removed worker is attempted to be spawned. With this patch piku
ignores SCALING file entries which do not have a corresponding worker
defined in Procfile.
Under certain conditions the acme cert generation will fail and create a
zero-byte certificate. Nginx does not like this so in that case piku.py
will generate a self-signed cert as a fallback with this patch.
The previous implementation of the AUTO_RESTART setting was causing
uwsgi have two separate configs installed one after the other very
quickly, which was causing issues.
This change fixes that by deleting the 'enabled' uwsgi config just
before re-generating it if AUTO_RESTART is true. This has the same basic
effect (reload on change) without the double-triggering of uwsgi reload.
* Release worker: provide full env + remove worker.
This change improves the release task pseudo-worker.
* Provides the full environment (both app env and config env) to the
release task.
* Uses a non-zero return value to bail early if release
phase fails.
* Make ENV_ROOT (venv) accessible to release scripts.
* Add Let's Encrypt SSL cert support.
This patch has piku use the acme.sh script to request and maintain Let's
Encrypt SSL certs rather than generate self-signed certs. For it to
work you must install acme.sh as the user piku. Installation
instructions here: https://github.com/Neilpang/acme.sh#1-how-to-install
The next commit updates piku-bootstrap to install acme.sh by default.
If acme.sh is not installed piku continues to default to a self-signed
certificate.
* Install acme.sh SSL cert wrangler in bootstrap.
The previous commit contains details about usage.
* Bootstrap script initial working version.
* Bootstrap: more verbose messaging.
* Bootstrap: working up to piku over SSH.
* Bootstrap: full bootstrap minus nginx.
* Bootstrap: ensure py2 for Ansible.
* Bootstrap: more deps.
* Bootstrap: piku user Ansible tmp to avoid err.
* Bootstrap: local venv source in ~/.piku-bootstrap
* Bootstrap: nginx + incron install.
* Bootstrap: self-install logging and less verbose.
* Bootstrap: special permissions for --pi mode.
* Improved usage + self-install text.