In diesem Tutorial wird erklärt, wie Django unter Debian 8 (jessie) eingerichtet wird. Ich werde zeigen, wie man sowohl Python 2 und 3 als auch Nginx und PostgreSQL verwendet.
Alles, was in diesem Tutorial gemacht wird, wird als root gemacht.
Installieren Sie Pakete
Zu Beginn müssen wir einige Pakete installieren.
Für Python 2:
apt-get install python-pip python-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Für Python 3:
apt-get install python3-pip python3-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Datenbanken einrichten
Zuerst melden wir uns beim Benutzer an postgres.
sudo -u postgres -s
Als nächstes erstellen wir eine neue Datenbank. Der Datenbankname kann beliebig sein ( dbnamewird hier verwendet), Sie müssen jedoch mit dem Rest des Setups übereinstimmen.
createdb dbname
Erstellen Sie einen Benutzer für die neue Datenbank. Auch dies kann alles sein, was Sie sich wünschen, aber ich habe es verwendet dbuser. Hier werden Sie auch aufgefordert, ein Passwort festzulegen.
createuser -P dbuser
Der Benutzer muss nun Zugriff auf die Datenbank erhalten. Stellen Sie einfach sicher, dass Sie den richtigen Datenbanknamen und Benutzernamen verwenden.
psql
postgres=# GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
postgres=# \q
Beenden Sie zu root.
exit
Aktivieren und starten Sie PostgreSQL:
systemctl enable postgresql
systemctl start postgresql
Richten Sie die virtuelle Umgebung ein
Anstatt nur die globalen Python-Dateien zu verwenden, verwenden wir eine virtuelle Umgebung. Wir beginnen mit der Erstellung eines Verzeichnisses, in dem alles gespeichert ist.
mkdir -p /opt/project
Wir schaffen jetzt die Umwelt. Dies ist für Benutzer von Python 2 und 3 unterschiedlich.
Für Python 2:
virtualenv . -p python
Für Python 3:
virtualenv . -p python3
Betreten Sie die virtuelle Umgebung.
source bin/activate
Installieren Sie Django, Gunicorn und Psycopg2.
pip install django
pip install gunicorn
pip install psycopg2
Wenn Sie eine bestimmte Version von Django benötigen, ändern Sie den Installationsbefehl so, dass er dem folgenden Format entspricht. In diesem Beispiel wird 1.7.8 installiert.
pip install django==1.7.8
Damit sind wir jetzt fertig, sodass wir unsere virtuelle Umgebung deaktivieren können.
deactivate
Projekt Upload und Konfiguration
Dies ist die Zeit, in der wir unser Projekt auf den Server hochladen und sicherstellen, dass alle Einstellungen korrekt sind. Sie können dazu jede Methode verwenden. FTP, SFTP, Git usw. sind alle Möglichkeiten, dies zu tun. Wenn Sie git verwenden, um den Projektcode zu verfolgen, können Sie ihn einfach auf den Server klonen. Dieser git-Befehl klont das Projekt auf den Server und platziert es dort /opt/project/project/.
git clone http://example.com:project.git
Öffnen Sie die settings.pyDatei in einem beliebigen Textbrowser.
Das Wichtigste zuerst: Der Debug-Modus muss deaktiviert sein. Suchen Sie nach der DEBUG = TrueZeile und wechseln Sie Truezu False. Stellen Sie danach sicher, dass Sie einen ALLOWED_HOSTSbestimmten Wert festgelegt haben.
ALLOWED_HOSTS = ['*']
Suchen Sie nach dem DATABASESWörterbuch und es sollte folgendermaßen aussehen:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'dbuser',
'PASSWORD': 'password you set',
'HOST': 'localhost',
'PORT': ''
}
}
Der letzte Schritt besteht darin, eine statische Wurzel festzulegen. Platzieren Sie Folgendes direkt darunter STATIC_URL.
STATIC_ROOT = '/opt/project/static/'
Beenden Sie die Datei und erstellen Sie das statische Stammverzeichnis.
mkdir -p /opt/project/static
Migrieren Sie nun die Datenbank, erstellen Sie einen Superuser und sammeln Sie alle statischen Dateien.
cd /opt/project/project
../bin/python manage.py makemigrations
../bin/python manage.py migrate
../bin/python manage.py createsuperuser
../bin/python manage.py collectstatic
Gunicorn ist der WSGI-Server, den wir verwenden werden. Da Debian 8 mit systemd geliefert wird, werden wir systemd nutzen, um den Server zu starten und zu stoppen.
Erstellen Sie die Datei /etc/systemd/system/django.serviceund fügen Sie den folgenden Inhalt hinzu.
[Unit]
Description=Django with Gunicorn
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/opt/project
ExecStart=/opt/project/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 project.wsgi
[Install]
WantedBy=multi-user.target
Aktivieren und starten Sie den von uns erstellten Dienst.
systemctl enable django.service
systemctl start django.service
Nginx
Sie haben vielleicht bemerkt, dass wir den Gunicorn-Server an gebunden haben 127.0.0.1. Jetzt brauchen wir eine Möglichkeit, von außerhalb des Servers darauf zuzugreifen. Hier kommt Nginx ins Spiel.
Erstellen Sie die neue Datei /etc/nginx/sites-available/djangound fügen Sie Folgendes hinzu. Das domain.example.comTeil kann auf das eingestellt werden, was Sie benötigen.
server {
listen 80;
server_name domain.example.com;
access_log off;
location /static/ {
alias /opt/project/static/;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Erstellen Sie einen symbolischen Link, um diese Site zu aktivieren.
ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/django
Aktivieren und starten Sie Nginx.
systemctl enable nginx
systemctl start nginx
Fazit
Herzlichen Glückwunsch, Sie haben jetzt eine funktionierende Django-Site auf Ihrem Debian VPS.