Submit a Ticket
Support Center » Knowledgebase » Programming Languages » How to deploy a Django web application

How to deploy a Django web application

How to deploy a Django web application on Mochahost.com

Note: Our python version is 2.7 which should be compatible with all django releases and the latest django release.

At a glance

To deploy a Django web application at MochaHost, you need to:

· request activation of mod_python for your account through tech support

· upload all Django files

· upload your application files and modify settings.py accordingly

· setup the Django handler in .htaccess file using SetHandler python-program

· upload static media files to ~/www/media and ~/www/adminmedia, and create .htaccess files in these folders containing “SetHandler None”

And you're done! :-)

Step-by-step

Here is a step-by-step tutorial for deploying a Django web application called “HelloDjango”.

The web application on your local machine

Let's assume the following setup is in place and working on your local machine:

Directory structure of the example application on your local machine is:

HelloDjango/
 /hellodjango
 __init__.py
 settings.py
 urls.py
 manage.py
 templates/
 index.html
 . . . .
 . . .
 <other files and folders>

 

 

The web application connects to a MySQL database on your local machine with:

database name: hellodjango

username: hellodjango

password: hellodjango

 

Also, all necessary tables have been created using

$ python manage.py syncdb

 

Assuming the above, let's move to the step-by-step tutorial.

Set up the environment

Login to your account at http://www.mochahost.com/support.php and go to "Get Support" / "Support Desk".

 

Create a ticket in the support application, and state that you need mod_python activated for your account. The support guys are pretty quick, so you'll receive a confirmation soon that mod_python has been activated for your account.

 

Login to the Control panel at  http://cpanel.yourdomain.com (the actual URL is in the confirmation email that you received when you created your account)

 

Open File Manager and make it show your Home folder - /home/youraccount. Make sure to check the "Show Hidden Files" checkbox.

 

Create a folder outside of your web root - "/home/youraccount/webapps”.

 

Deploy the Django framework

Upload all Django files to /home/youraccount/webapps/django. If you installed Django locally on your Linux machine, usually you can find all Django files in /usr/lib/python2.5/site-packages/django .

 

Deploy your application

Upload your application to /home/youraccount/webapps/hellodjango.

 

Change the TEMPLATE_DIRS variable in settings.py to /home/youraccount/webapps/hellodjango/templates

 

Setup the web server

Create/edit a .htaccess file in your web root folder with the following contents:

 

SetHandler python-program

PythonHandler django.core.handlers.modpython

SetEnv DJANGO_SETTINGS_MODULE hellodjango.settings

PythonDebug Off

PythonPath "['/home/youraccount/webapps'] + sys.path"

 

Static (media) files

Django recommends serving static files (.js, .css, .jpg, etc.) to be left up to the web server. Create a new folder in your web root - /home/youraccount/www/media , and upload all your media files there. In this folder, create a .htaccess file containing:

 

SetHandler None

 

If you are using the admin feature of Django, you should do the same for the static files for the admin interface. Create a new folder /home/youraccount/www/adminmedia, and copy all the files from /home/youraccount/webapps/django/contrib/admin/media into this new folder. Create a .htaccess files as in the ../media folder. Also make sure you set the ADMIN_MEDIA_PREFIX variable in settings.py to “/adminmedia/”.

 

Database

Create your database via MySQL Databases in Control Panel. For this example, we'll use:

Database name: hellodjango

Username: hellodjango

Password: hellodjango

 

Export your database from your local machine using mysqldump:

$ mysqldump -u your_db_user -p -l -e -Q your_database > ~/db.sql

 

Import your database via phpMyAdmin in Control Panel from the exported db.sql.

 

Setup the database access in settings.py

 

DATABASE_ENGINE = 'mysql'

DATABASE_NAME = 'youraccount_hellodjango'

DATABASE_USER = 'youraccount_hellodjango'

DATABASE_PASSWORD = 'hellodjango'

DATABASE_HOST = 'localhost'

DATABASE_PORT = ''

 

 

Test your application

Point your browser to “www.yourdomain.com” or “http://servername/~youraccount/ and you should see your application running

 

If everything runs fine, make sure that:

· the DEBUG variable in settings.py is set to False

· the PythonDebug setting in /home/youraccount/www/.htaccess is set to Off.

 

Troubleshooting

If you see a Error 500 page, you can edit the .htaccess file in your web root and change

PythonDebug Off

to

PythonDebug On

 

Now mod_python will show you detailed information about the error that occurred.

 

Make sure you turn off the debug setting after you solve the problem, because leaving this debug setting to “on” is considerable security vulnerability.

 

If you get an error “Cannot find module xxxx”, make sure the paths are correct, and all Python files (both Django's and your app's files) have “read” and “execute” access rights for the Apache user.

 

 This answer was helpful  This answer was not helpful
 Back