Django-hosting » History » Revision 17
Revision 16 (Nico Schottelius, 04/08/2016 01:16 PM) → Revision 17/30 (Nico Schottelius, 04/08/2016 01:16 PM)
h1. django-hosting.ch by ungleich
{{toc}}
h2. How to use
# Configure your app
# Deploy your app
# Install python requirements into the pyvenv
# Restart uwsgi to restart your app
# Go to http://your-hostname/ and enjoy!
h2. Configure your app
h3. WSGI
* Ensure that there is _projectname_/wsgi.py in your project root
h3. Database
Add the following to your settings.py:
<pre>
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'app',
}
}
</pre>
h3. Static and media files
Static files should be place in */home/app/app/static* and media files in */home/app/app/media*.
Use the following code for configuration:
<pre>
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
</pre>
h2. Deploy
You can login to your VM as user *app* (for the django app) and *root* (in case you need to change settings):
<pre>
ssh app@MYHOSTNAME
git clone <path-to-your-project> ~/app
</pre>
* Deploy / update your app into the folder *~app/app* (that is the app folder in the home of the user app)
* We recommended to use git to deploy it
h2. Install python requirements into the pyvenv
Pyvenv has been installed to *~app/pyvenv* for you.
Required packages for the hosting like PostgreSQL support and uwsgi support have already been placed.
You need to use pyvenv found in *~app/pyvenv*, as uwsgi loads this pyvenv before loading your app.
To install your requirements use:
<pre>
. ~/pyvenv/bin/activate
pip install ...
</pre>
h2. Restarting the app
* *sudo systemctl restart uwsgi*
h3. Viewing logfiles
* nginx access log: *tail -F /var/log/nginx/access.log*
* nginx error log: *tail -F /var/log/nginx/error.log*
* uwsgi log: *tail -F /var/log/uwsgi/app/app.log*
h2. Description of the stack
h3. Technologies
* Debian 8
* nginx
* PostgreSQL
* uwsgi
h3. Configuration
* user "app"
** in group "adm" (to view logfiles)
* PostgreSQL with
** database "app"
** Listens only on localhost / socket (no remote connections)