I created a website with Django and now I need to deploy it and now I have to upload it to 1and1. Do I need a specific tool for this or can I upload it without hesitation like a website that only contains .html and .css files?
Asked
Active
Viewed 4,273 times
3
-
As far as i can see, ionos is a php hosting provider, so it's unlikely they support python and django. In which case, it's bare metal (VPS with ubuntu for example) and you'll have to go through the steps explained [here](https://docs.djangoproject.com/en/3.0/howto/deployment/), i.e. install a server, an app server and packages. – dirkgroten Mar 25 '20 at 10:51
-
ok thank you I'll go through it – Dariun Mar 25 '20 at 12:44
-
1Did you get it running? If yes could you share some details on how you did it. Which python version is currently supported by ionos? – HeyMan Nov 30 '20 at 13:19
-
2@HeyMan IONOS currently supports Python 3.7.3 (and Python 2.7.16) on their webspace solutions. – SamBrishes Dec 03 '20 at 06:19
2 Answers
1
Just adding answer for those who are still trying to find the answer for deploying Django on shared ionos servers. There a complete guide on GitHub posted by sparagus.
Please make sure you have access for followings on system,
- SSH access
- Available Apache supports FCGI
- Ability to compile from source
- .htaccess support
- tar support
If above points are checked please go following steps to achieve django on shared hosting 1and1.

Abdullah Mughal
- 109
- 5
1
Installation
- ssh into Ionos
- Update pip:
python3 -m pip install --upgrade pip
- Install django:
python3 -m pip install django
- Make sure .bash_profile contains
source ~/.bashrc
- Add django locations to .bashrc:
/full_path_to_homefolder/.local/bin
and/full_path_to_homefolder/.local/lib
, andsource ~/.bashrc
.
Setup
- Create a subfolder to work in, e.g. work [Optional]
- Create a project (e.g. mysite) in that folder:
django-admin startproject mysite
- Create a folder cgi-bin in your work folder.
- Create a file application.fcgi in cgi-bin with the following contents:
# -*- coding: UTF-8 -*-
import os
import sys
import traceback
home = '/COMPLETE_PATH_TO_YOUR_FOLDER/work'
try:
project = os.path.join(home, 'mysite')
# Add a custom Python path.
sys.path.insert(0, project)
# Switch to the directory of your project.
os.chdir(project)
# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "mysite.settings"
from django_fastcgi.servers.fastcgi import runfastcgi
from django.core.servers.basehttp import get_internal_wsgi_application
wsgi_application = get_internal_wsgi_application()
runfastcgi(wsgi_application, method="prefork", daemonize="false", minspare=1, maxspare=1, maxchildren=1)
except:
traceback.print_exc(stdout)
with open(os.path.join(home, 'tmp/error.log'), 'w') as fp:
traceback.print_exc(file = fp)
- In your work folder,
vim .htaccess
and add these contents:
RewriteEngine on
RewriteBase /
# The following two lines are for FastCGI:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /apps/cgi-bin/application.fcgi/$1 [QSA,L]
- Add your web domain to ALLOW_HOSTS in ~/work/mysite/mysite/settings.py
- Create an app inside the ~/work/mysite folder:
python manage.py startapp appname
- Browse to
your_website/work/
to see if it works - Copy over any files you already have. If you don't have any, proceed with the official tutorial, ignoring all the instructions for a development server: https://docs.djangoproject.com/en/3.2/intro/tutorial01/#write-your-first-view
- Don't forget to run
python manage.py check --deploy
to secure your site for deploying.

Dr. Sarah
- 21
- 4