Django installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Korrektur des Benutzers von xyz-doms auf xyz00-doms)
 
(20 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Installation Djangobibliothek===
== Allgemeines ==
 
Django (https://www.djangoproject.com/) ist ein Python Framework.
 
Es wurde im Juli 2005 unter einer BSD-Lizenz veröffentlicht.
 
Es gibt mehrere Möglichkeiten, Django bei Hostsharing zu betreiben:
* mit Passenger und WSGI: das ist der empfohlene Weg.
* mit FastCGI und WSGI via flup: wenn man es kompliziert machen will.
 
Für die Passenger-Variante gibt es auch ein Ansible Skript: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/django
 
==Installation Djangobibliothek==
Die Djangobibliotheken werden in einer Virtualenv-Umgebung installiert. Voraussetzung ist ein auf dem System installiertes python mit einem virtualenv-Paket
Die Djangobibliotheken werden in einer Virtualenv-Umgebung installiert. Voraussetzung ist ein auf dem System installiertes python mit einem virtualenv-Paket


Zunächst wird die Virtualenvumgebung erstellt:
Zunächst wird die Virtualenvumgebung erstellt:
<pre>
<syntaxhighlight lang=bash>
xyz00-doms:~$ virtualenv -p /usr/bin/python3 djangoenv
xyz00-meinuser:~$ virtualenv -p /usr/bin/python3 djangoenv
Already using interpreter /usr/bin/python3
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
Using base prefix '/usr'
Zeile 10: Zeile 22:
Also creating executable in djangoenv/bin/python
Also creating executable in djangoenv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
Installing setuptools, pkg_resources, pip, wheel...done.
</pre>
</syntaxhighlight>
Dann werden die Django-Bibliotheken in die eben erstellte Virtualenvumgebung installiert.
Dann werden die Django-Bibliotheken in die eben erstellte Virtualenvumgebung installiert.
<pre>
<syntaxhighlight lang=bash line>
xyz00-doms:~$ source djangoenv/bin/activate
xyz00-meinuser:~$ source djangoenv/bin/activate
(djangoenv) xyz00-doms:~$ pip3 install django
(djangoenv) xyz00-meinuser:~$ pip3 install django
  ...
  ...
  Successfully installed django-2.2.12 pytz-2020.1 sqlparse-0.3.1
  Successfully installed asgiref-3.3.4 django-3.2 pytz-2021.1 sqlparse-0.4.1 typing-extensions-3.7.4.3
</pre>
</syntaxhighlight>
 
Es wird Django 2.2 statt Django 3.0 installiert, weil wir im Moment nur Python 3.5 zur Verfügung haben, aber Python 3.6 eine Bedingung für Django 3.0 ist.


Testen, ob Django installiert ist:
Testen, ob Django installiert ist:
<pre>
<syntaxhighlight lang=python>
(djangoenv) xyz00-doms:~$ djangoenv/bin/python
(djangoenv) xyz00-meinuser:~$ djangoenv/bin/python
Python 3.5.3 (default, Sep 27 2018, 17:25:39)  
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 6.3.0 20170516] on linux
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> import django
>>> django.VERSION
(3, 2, 0, 'final', 0)
>>>  
>>>  
</pre>
</syntaxhighlight>
Mit Ctrl-D kann die Konsole wieder verlassen werden.
Mit Ctrl-D kann die Konsole wieder verlassen werden.
Alternativ kann die aktuell installierte Version von Django so angezeigt werden:
<syntaxhighlight lang=bash>
(djangoenv) xyz00-meinuser:~$ python -m django --version
3.2
</syntaxhighlight>


Nun kann man die Virtualenvumgebung wieder verlassen:
Nun kann man die Virtualenvumgebung wieder verlassen:
  (djangoenv) xyz00-doms:~$ deactivate
  (djangoenv) xyz00-meinuser:~$ deactivate


===Django-Projekt===
== Django-Projekt anlegen ==
Dann wird das Django Projekt im Bereich einer Domain abgelegt.
Dann wird das Django Projekt als Domain-Admin angelegt:
<pre>
xyz00-doms:~$ source djangoenv/bin/activate
(djangoenv) xyz00-doms:~$ cd ~/doms/example.com/
(djangoenv) xyz00-doms:~$ django-admin.py startproject djangoprojekt
(djangoenv) xyz00-doms:~$ cd djangoprojekt
</pre>


Jetzt soll die Datenbank initialisiert werden, die in djangoprojekt/djangoproject/settings.py definiert ist:
<syntaxhighlight lang=bash>
<pre>
xyz00-meinuser:~$ source djangoenv/bin/activate
(djangoenv) xyz00-doms:~$ python manage.py migrate
(djangoenv) xyz00-meinuser:~$ django-admin startproject djangoprojekt
(djangoenv) xyz00-meinuser:~$ cd djangoprojekt
</syntaxhighlight>
 
Jetzt soll die Datenbank initialisiert werden, die in djangoprojekt/djangoprojekt/settings.py definiert ist (per Default erstmal eine sqlite Datenbank):
<syntaxhighlight lang=bash>
(djangoenv) xyz00-meinuser:~$ python manage.py migrate
Operations to perform:
Operations to perform:
   Apply all migrations: admin, auth, contenttypes, sessions
   Apply all migrations: admin, auth, contenttypes, sessions
Zeile 67: Zeile 85:
   Applying auth.0011_update_proxy_permissions... OK
   Applying auth.0011_update_proxy_permissions... OK
   Applying sessions.0001_initial... OK
   Applying sessions.0001_initial... OK
</pre>
</syntaxhighlight>


Jetzt kann man unter Verwendung des Pythons der Virtualenv testen, ob Django läuft.
Jetzt kann man unter Verwendung des Pythons der Virtualenv testen, ob Django läuft.
<pre>
<syntaxhighlight lang=bash>
(djangoenv) xyz00-doms:~$ python manage.py runserver
(djangoenv) xyz00-meinuser:~$ python manage.py runserver
Watching for file changes with StatReloader
Watching for file changes with StatReloader
Performing system checks...
Performing system checks...


System check identified no issues (0 silenced).
System check identified no issues (0 silenced).
Django version 2.2.12, using settings 'djangoprojekt.settings'
Django version 3.2, using settings 'djangoprojekt.settings'
Starting development server at http://127.0.0.1:8000/
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Quit the server with CONTROL-C.
</pre>
</syntaxhighlight>
 
Es muss noch die Domain in die <code>~/djangoprojekt/djangoprojekt/settings.py</code> eingetragen werden:
<syntaxhighlight lang=bash>
(djangoenv) xyz00-meinuser:~$ export domain=example.com
(djangoenv) xyz00-meinuser:~$ sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ['$domain','www.$domain']/g" djangoprojekt/settings.py
</syntaxhighlight>
 
Außerdem sind diese beiden Zeilen am Ende von der settings.py Datei einzufügen:


Es muss noch die Domain in die settings.py eingetragen werden:
<syntaxhighlight lang=python>
<pre>
import os
(djangoenv) xyz00-doms:~$ export domain=example.com
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
(djangoenv) xyz00-doms:~$ sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ['$domain','www.$domain']/g" djangoprojekt/settings.py
</syntaxhighlight>
</pre>
 
Dann sollten noch die statischen Dateien gesammelt und erstellt werden:
<syntaxhighlight lang=bash>
(djangoenv) xyz00-meinuser:~$ python manage.py collectstatic
</syntaxhighlight>
 
== Nutzung mit Passenger und WSGI ==
Dies ist der empfohlene Weg, wie Python Anwendungen bei Hostsharing betrieben werden können:
 
Im Domain-Verzeichnis "~/doms/example.com/" wird eine Datei ".htaccess" mit der Passenger-Konfiguration abgelegt:
 
<syntaxhighlight lang=apache line>
PassengerFriendlyErrorPages off
PassengerPython /home/pacs/xyz00/users/meinuser/djangoenv/bin/python3
SetEnv PYTHONPATH /home/pacs/xyz00/users/meinuser/djangoprojekt
</syntaxhighlight>
 
Die Verzeichnisse "subs/www" und "subs-ssl/www" werden gelöscht.
Die Datei .htaccess im Verzeichnis "htdocs-ssl" wird ebenfalls gelöscht.
 
In "htdocs-ssl" wird ein symbolischer Link auf das static Verzeichnis angelegt:
<syntaxhighlight lang=bash>
xyz00-meinuser$ cd ~/doms/example.com/htdocs-ssl
xyz00-meinuser$ ln -s ~/djangoprojekt/static
</syntaxhighlight>
 
In "app-ssl" wird eine Datei "passenger_wsgi.py" mit folgendem Inhalt abgelegt:
 
<syntaxhighlight lang=python>
from djangoprojekt.wsgi import application
</syntaxhighlight>
 
Das Django Projekt ist nun unter https://example.com erreichbar.
 
==Nutzung mit FastCGI und WSGI via flup==
Wenn man doch nicht Passenger einsetzen will, geht es auch kompliziert über FastCGI:


===Nutzung mit FastCGI und WSGI via flup===
Zunächst legt man das FastCGI-Skript (django.fcgi) an und legt es im fastcgi-ssl Verzeichnis ab und macht es ausführbar:
Zunächst legt man das FastCGI-Skript (django.fcgi) an und legt es im fastcgi-ssl Verzeichnis ab und macht es ausführbar:


<pre>
<syntaxhighlight lang=bash>
xyz00-doms:~$ export djangoenv=$HOME/djangoenv
xyz00-meinuser:~$ export djangoenv=$HOME/djangoenv
xyz00-doms:~$ cd doms/example.com
xyz00-meinuser:~$ cd doms/example.com
xyz00-doms:~$ export path_to_domain=`pwd`
xyz00-meinuser:~$ cat > fastcgi-ssl/django.fcgi <<FINISH
xyz00-doms:~$ cat > fastcgi-ssl/django.fcgi <<FINISH
#!$djangoenv/bin/python
#!$djangoenv/bin/python


Zeile 102: Zeile 161:
from django.core.handlers.wsgi import WSGIHandler
from django.core.handlers.wsgi import WSGIHandler


os.chdir("$path_to_domain/djangoprojekt")
os.chdir("$HOME/djangoprojekt")
os.environ['DJANGO_SETTINGS_MODULE']= "djangoprojekt.settings"
os.environ['DJANGO_SETTINGS_MODULE']= "djangoprojekt.settings"
sys.path.insert(0, "$path_to_domain/djangoprojekt")
sys.path.insert(0, "$HOME/djangoprojekt")
sys.path.insert(0, "$path_to_domain/djangoprojekt/djangoprojekt")
sys.path.insert(0, "$HOME/djangoprojekt/djangoprojekt")


django.setup(set_prefix=False)
django.setup(set_prefix=False)
Zeile 111: Zeile 170:
FINISH
FINISH


xyz00-doms:~$ chmod a+x fastcgi-ssl/django.fcgi
xyz00-meinuser:~$ chmod a+x fastcgi-ssl/django.fcgi
</pre>
</syntaxhighlight>


Außerdem muss flup installiert werden:
Außerdem muss flup installiert werden:
<pre>
<syntaxhighlight lang=bash>
xyz00-doms:~$ source djangoenv/bin/activate
xyz00-meinuser:~$ source djangoenv/bin/activate
(djangoenv) xyz00-doms:~$ pip3 install flup
(djangoenv) xyz00-meinuser:~$ pip3 install flup
</pre>
</syntaxhighlight>


Um die voreingestellte leere Seite von Django zu sehen, muss noch die nicht existierende admin App auskommentiert werden:
Um die voreingestellte leere Seite von Django zu sehen, muss noch die nicht existierende admin App auskommentiert werden:
<pre>
<syntaxhighlight lang=bash>
xyz00-doms:~$ cd doms/example.com/djangoprojekt
xyz00-meinuser:~$ cd doms/example.com/djangoprojekt
xyz00-doms:~$ sed -i "s~path('admin/'~#path('admin/'~g" djangoprojekt/urls.py
xyz00-meinuser:~$ sed -i "s~path('admin/'~#path('admin/'~g" djangoprojekt/urls.py
</pre>
</syntaxhighlight>


Das Djangoprojekt sollte jetzt unter https://example.com/fastcgi-bin/django.fcgi erreichbar sein.
Das Djangoprojekt sollte jetzt unter https://example.com/fastcgi-bin/django.fcgi erreichbar sein.


Tipp: Manchmal werden Änderungen in den Quellen, insbesondere der settings.py nicht übernommen. Dann hilft es den Zeitstempel der Datei django.fcgi mit touch zu aktualisieren:
Tipp: Manchmal werden Änderungen in den Quellen, insbesondere der settings.py nicht übernommen. Dann hilft es den Zeitstempel der Datei django.fcgi mit touch zu aktualisieren:
<pre>
<syntaxhighlight lang=bash>
xyz00-doms:~$ touch doms/example.com/fastcgi-ssl/django.fcgi
xyz00-meinuser:~$ touch doms/example.com/fastcgi-ssl/django.fcgi
</pre>
</syntaxhighlight>


Alternativ kann der Prozess gestoppt werden:
Alternativ kann der Prozess gestoppt werden:
<pre>
<syntaxhighlight lang=output>
xyz00-doms:~$ ps xaf | grep django.fcgi
xyz00-meinuser:~$ ps xaf | grep django.fcgi
  8091 pts/1    S+    0:00  |                      \_ grep django.fcgi
  8091 pts/1    S+    0:00  |                      \_ grep django.fcgi
  7195 ?        Sl    0:01  |  \_ /.../djangoenv/bin/python django.fcgi
  7195 ?        Sl    0:01  |  \_ /.../djangoenv/bin/python django.fcgi
xyz00-doms:~$ kill 7195
xyz00-meinuser:~$ kill 7195
</pre>
</syntaxhighlight>


===Apache Weiterleitung===
===Apache Weiterleitung===
Zeile 145: Zeile 204:
Hierf&uuml;r wird eine .htaccess im entsprechenden Domainverzeichnis angelegt:
Hierf&uuml;r wird eine .htaccess im entsprechenden Domainverzeichnis angelegt:


<pre>
<syntaxhighlight lang=bash>
xyz00-doms:~$ cd doms/example.com
xyz00-meinuser:~$ cd doms/example.com
xyz00-doms:~$ cat > .htaccess <<FINISH
xyz00-meinuser:~$ cat > .htaccess <<FINISH
RewriteEngine On
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /fastcgi-bin/django.fcgi/$1 [QSA,L]
RewriteRule ^(.*)$ /fastcgi-bin/django.fcgi/$1 [QSA,L]
FINISH
FINISH
</pre>
</syntaxhighlight>


Nun sollte die Seite unter (www.)example.com erreichbar sein.
Nun sollte die Seite unter (www.)example.com erreichbar sein.
 
== Links ==
*[https://www.djangoproject.com/ Webseite des Django Projekts]
*[https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/django Ansible Playbook für Hostsharing]
 
----
 
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]
[[Kategorie:Ansible Playbook]]
[[Kategorie:Glossar]]
[[Kategorie:Glossar]]
[[Kategorie:Python]]
[[Kategorie:Django]]
[[Kategorie:Passenger]]
[[Kategorie:Python]]

Aktuelle Version vom 14. Juni 2024, 11:26 Uhr

Allgemeines

Django (https://www.djangoproject.com/) ist ein Python Framework.

Es wurde im Juli 2005 unter einer BSD-Lizenz veröffentlicht.

Es gibt mehrere Möglichkeiten, Django bei Hostsharing zu betreiben:

  • mit Passenger und WSGI: das ist der empfohlene Weg.
  • mit FastCGI und WSGI via flup: wenn man es kompliziert machen will.

Für die Passenger-Variante gibt es auch ein Ansible Skript: https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/django

Installation Djangobibliothek

Die Djangobibliotheken werden in einer Virtualenv-Umgebung installiert. Voraussetzung ist ein auf dem System installiertes python mit einem virtualenv-Paket

Zunächst wird die Virtualenvumgebung erstellt:

xyz00-meinuser:~$ virtualenv -p /usr/bin/python3 djangoenv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in djangoenv/bin/python3
Also creating executable in djangoenv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

Dann werden die Django-Bibliotheken in die eben erstellte Virtualenvumgebung installiert.

xyz00-meinuser:~$ source djangoenv/bin/activate
(djangoenv) xyz00-meinuser:~$ pip3 install django
 ...
 Successfully installed asgiref-3.3.4 django-3.2 pytz-2021.1 sqlparse-0.4.1 typing-extensions-3.7.4.3

Testen, ob Django installiert ist:

(djangoenv) xyz00-meinuser:~$ djangoenv/bin/python
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(3, 2, 0, 'final', 0)
>>>

Mit Ctrl-D kann die Konsole wieder verlassen werden.

Alternativ kann die aktuell installierte Version von Django so angezeigt werden:

(djangoenv) xyz00-meinuser:~$ python -m django --version
3.2

Nun kann man die Virtualenvumgebung wieder verlassen:

(djangoenv) xyz00-meinuser:~$ deactivate

Django-Projekt anlegen

Dann wird das Django Projekt als Domain-Admin angelegt:

xyz00-meinuser:~$ source djangoenv/bin/activate
(djangoenv) xyz00-meinuser:~$ django-admin startproject djangoprojekt
(djangoenv) xyz00-meinuser:~$ cd djangoprojekt

Jetzt soll die Datenbank initialisiert werden, die in djangoprojekt/djangoprojekt/settings.py definiert ist (per Default erstmal eine sqlite Datenbank):

(djangoenv) xyz00-meinuser:~$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

Jetzt kann man unter Verwendung des Pythons der Virtualenv testen, ob Django läuft.

(djangoenv) xyz00-meinuser:~$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
Django version 3.2, using settings 'djangoprojekt.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Es muss noch die Domain in die ~/djangoprojekt/djangoprojekt/settings.py eingetragen werden:

(djangoenv) xyz00-meinuser:~$ export domain=example.com
(djangoenv) xyz00-meinuser:~$ sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ['$domain','www.$domain']/g" djangoprojekt/settings.py

Außerdem sind diese beiden Zeilen am Ende von der settings.py Datei einzufügen:

import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Dann sollten noch die statischen Dateien gesammelt und erstellt werden:

(djangoenv) xyz00-meinuser:~$ python manage.py collectstatic

Nutzung mit Passenger und WSGI

Dies ist der empfohlene Weg, wie Python Anwendungen bei Hostsharing betrieben werden können:

Im Domain-Verzeichnis "~/doms/example.com/" wird eine Datei ".htaccess" mit der Passenger-Konfiguration abgelegt:

PassengerFriendlyErrorPages off
PassengerPython /home/pacs/xyz00/users/meinuser/djangoenv/bin/python3
SetEnv PYTHONPATH /home/pacs/xyz00/users/meinuser/djangoprojekt

Die Verzeichnisse "subs/www" und "subs-ssl/www" werden gelöscht. Die Datei .htaccess im Verzeichnis "htdocs-ssl" wird ebenfalls gelöscht.

In "htdocs-ssl" wird ein symbolischer Link auf das static Verzeichnis angelegt:

xyz00-meinuser$ cd ~/doms/example.com/htdocs-ssl
xyz00-meinuser$ ln -s ~/djangoprojekt/static

In "app-ssl" wird eine Datei "passenger_wsgi.py" mit folgendem Inhalt abgelegt:

from djangoprojekt.wsgi import application

Das Django Projekt ist nun unter https://example.com erreichbar.

Nutzung mit FastCGI und WSGI via flup

Wenn man doch nicht Passenger einsetzen will, geht es auch kompliziert über FastCGI:

Zunächst legt man das FastCGI-Skript (django.fcgi) an und legt es im fastcgi-ssl Verzeichnis ab und macht es ausführbar:

xyz00-meinuser:~$ export djangoenv=$HOME/djangoenv
xyz00-meinuser:~$ cd doms/example.com
xyz00-meinuser:~$ cat > fastcgi-ssl/django.fcgi <<FINISH
#!$djangoenv/bin/python

import os, sys
import django
from flup.server.fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler

os.chdir("$HOME/djangoprojekt")
os.environ['DJANGO_SETTINGS_MODULE']= "djangoprojekt.settings"
sys.path.insert(0, "$HOME/djangoprojekt")
sys.path.insert(0, "$HOME/djangoprojekt/djangoprojekt")

django.setup(set_prefix=False)
WSGIServer(WSGIHandler()).run()
FINISH

xyz00-meinuser:~$ chmod a+x fastcgi-ssl/django.fcgi

Außerdem muss flup installiert werden:

xyz00-meinuser:~$ source djangoenv/bin/activate
(djangoenv) xyz00-meinuser:~$ pip3 install flup

Um die voreingestellte leere Seite von Django zu sehen, muss noch die nicht existierende admin App auskommentiert werden:

xyz00-meinuser:~$ cd doms/example.com/djangoprojekt
xyz00-meinuser:~$ sed -i "s~path('admin/'~#path('admin/'~g" djangoprojekt/urls.py

Das Djangoprojekt sollte jetzt unter https://example.com/fastcgi-bin/django.fcgi erreichbar sein.

Tipp: Manchmal werden Änderungen in den Quellen, insbesondere der settings.py nicht übernommen. Dann hilft es den Zeitstempel der Datei django.fcgi mit touch zu aktualisieren:

xyz00-meinuser:~$ touch doms/example.com/fastcgi-ssl/django.fcgi

Alternativ kann der Prozess gestoppt werden:

xyz00-meinuser:~$ ps xaf | grep django.fcgi
 8091 pts/1    S+     0:00  |                       \_ grep django.fcgi
 7195 ?        Sl     0:01  |   \_ /.../djangoenv/bin/python django.fcgi
xyz00-meinuser:~$ kill 7195

Apache Weiterleitung

Nun wird das Djangoprojekt unter www.example.com verfügbar gemacht. Hierfür wird eine .htaccess im entsprechenden Domainverzeichnis angelegt:

xyz00-meinuser:~$ cd doms/example.com
xyz00-meinuser:~$ cat > .htaccess <<FINISH
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /fastcgi-bin/django.fcgi/$1 [QSA,L]
FINISH

Nun sollte die Seite unter (www.)example.com erreichbar sein.

Links