Python hosting

Heroku

First, you need to prepare your Heroku deployment:

mkdir heroku-hosting
cd heroku-hosting
pip install pipenv
heroku login

Now, a few files are required:

# create the Pipfile for downloading and installing Moneta
cat << EOF > Pipfile
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
[packages]
moneta = '*'
django-redis-sessions = "*"
django-redis = "*"
psycopg2 = "*"
[requires]
python_version = "3.6"
EOF

# create a simple manage.py for the automatic collectstatic command
cat << EOF > manage.py
#!/usr/bin/env python
from djangofloor.scripts import django, set_env

set_env(command_name='moneta-ctl')
django()
EOF

cat << EOF > local_settings.ini
[global]
data = ./
EOF

# create the Procfile with required processes
cat << EOF > Procfile
web: moneta-ctl server
EOF

You can now deploy using git:

git init
git add .
git commit -m 'initial commit'
heroku create
# if you prefer SSH, you should use the following line
heroku create --ssh-git
# the metadata feature is required to provide the Heroku app name in the env
heroku labs:enable runtime-dyno-metadata
git push heroku master

You can add a Redis app to use efficient session and cache storages..

heroku addons:create heroku-redis -a heroku_app_name

If you do not use Redis for sessions and cache, you must remove django-redis-sessions and django-redis from your Pipfile.

Once deployed, you can prepare the database, create an administrator or open Python shell:

heroku run moneta-ctl migrate
heroku run moneta-ctl createsuperuser
heroku run moneta-ctl shell

Finally, you need to create at least one worker:

heroku ps:scale web=1

Gandi

Moneta must be locally installed (in a virtualenv) to prepare the deployment on a Gandi host.

mkdir gandi-hosting
pip install moneta
cd gandi-hosting
cat << EOF > gandi.yml
python:
  version: 3.6
EOF
cat << EOF > wsgi.py
import os
from djangofloor.scripts import get_application

os.environ['LC_ALL']="en_US.UTF-8"
os.environ['LC_LANG']="en_US.UTF-8"
application = get_application(command_name='moneta-ctl')
EOF
cat << EOF > requirements.txt
moneta
EOF
cat << EOF > local_settings.ini
[global]
data = ./
server_url = https://www.example.com/
EOF
moneta-ctl collectstatic --noinput
git add .
git commit -am 'initial commit'