So starten Sie eine Django-Site mit Apache, mod_wsgi und MySQL unter FreeBSD 10.1

Einführung

Dieser Artikel zeigt Ihnen, wie Sie eine Webanwendung mit Django, dem beliebten Python-Framework, bereitstellen. Das Schöne an der Entwicklung mit gängigen Web-Frameworks ist, dass Sie eine Menge an sich wiederholender Arbeit geleistet haben, sodass Sie sich auf die Erstellung Ihrer Website konzentrieren können.

Unabhängig davon, ob Sie ein Entwickler sind oder nicht, ist es gut zu wissen, dass der Kern dessen, was Sie auf Ihrem Droplet ausführen, einer großen Open-Source-Community unterzogen wurde und weniger anfällig für große Sicherheitslücken sein sollte.

Eine Sache, die von Natur aus nicht einfach ist, ist zu wissen, wie diese Web-Frameworks außerhalb Ihrer eigenen Entwicklungs- oder Testumgebung zum Laufen gebracht werden können. In diesem Artikel zeigen wir Ihnen, wie Sie genau das mit einem Standard-Apache-, mod_wsgi- und MySQL-Stack machen, der auf FreeBSD 10.1 läuft.

Tore

  • Installieren und konfigurieren Sie eine virtuelle Python-Umgebung für Ihre Django-Site

  • Erstellen und konfigurieren Sie eine Django-Beispielsite zum Testen

  • Konfigurieren Sie einen einfachen und sicheren MySQL-Server

  • Konfigurieren Sie einen einfachen virtuellen Apache-Host für Ihre Django-Site

  • Testen Sie, ob die neu geprägte Site ordnungsgemäß funktioniert

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:

  • Ein FreeBSD 10.1-Droplet

  • Zugriff auf Ihr Root-Konto oder ein Konto mit Sudo-Berechtigungen über dieses tutorial

  • Grundkenntnisse zum Bearbeiten von Textdateien über die Befehlszeile

  • Die * Bash * Shell-Umgebung, da Virtualenv später in diesem Lernprogramm verwendet wird. Befolgen Sie die Anweisungen in Changing the Default Shell im Abschnitt * Erste Schritte mit FreeBSD 10.1 *. Möglicherweise müssen Sie sich abmelden und erneut anmelden, um die Bash-Shell für Ihren * freebsd * -Benutzer zu erhalten

Schritt 1 - Installieren und Konfigurieren einer virtuellen Python-Umgebung

Das wichtigste zuerst; Stellen Sie sicher, dass Ihre aktuellen Pakete auf dem neuesten Stand sind.

sudo pkg update && sudo pkg upgrade -y

Installieren Sie nun alle benötigten Pakete, indem Sie den folgenden Befehl ausführen und die resultierende Eingabeaufforderung mit Ja bestätigen. Sie werden feststellen, dass weit mehr als das, was wir eingegeben haben, installiert ist, da das "+ pkg +" - System alle richtigen Abhängigkeiten berechnet und auswählt.

sudo pkg install bash ap24-mod_wsgi3 py27-virtualenv mysql56-server

Der Befehl "+ virtualenv ", den Sie in Kürze verwenden werden, funktioniert mit der Standardbenutzer-Shell " tcsh " in FreeBSD nicht gut. Wir brauchen stattdessen ` bash +`. Wenn Sie aus einer Linux-Umgebung kommen, werden Sie sich wie zu Hause fühlen. Wenn Sie dies nicht bereits in den Voraussetzungen getan haben, befolgen Sie die Anweisungen unter https://www.digitalocean.com/community/tutorials/how-to-get-started-with-freebsd-10-1#changing-the- default-shell- (optional) [hier] jetzt.

  • Führen Sie jetzt die Bash-Shell aus? * Denken Sie daran, sich abzumelden und erneut anzumelden. Toll!

Beginnen wir jetzt mit unserer Python-Umgebung.

Erstellen Sie mit diesem Befehl ein Verzeichnis für Ihre Site, um die Suche zu vereinfachen.

sudo mkdir -p /www/data/

Erteilen Sie Ihrem Benutzerkonto Zugriff auf die Arbeit in Ihrem neuen Projektverzeichnis. Der + whoami + Teil des Befehls füllt automatisch Ihren aktuellen Benutzernamen aus.

sudo chown -R `whoami` /www/data/

Wechseln Sie in Ihr neu erstelltes Verzeichnis.

cd /www/data/

Durch die Verwendung von virtuellen Umgebungen pro Site oder pro Anwendung können Sie die von Ihnen installierten Python-Pakete und -Versionen anpassen, anstatt Dinge auf systemweiter Ebene installieren zu lassen.

Erstellen Sie nun die virtuelle Python-Umgebung mit dem Dienstprogramm "+ virtualenv +".

virtualenv venv

Aktivieren Sie diese Umgebung, um sicherzustellen, dass Sie die Anforderungen für Ihre Django-Site in dieser Umgebung und nicht auf systemweiter Ebene installieren.

source venv/bin/activate

Sie werden wissen, dass Sie sich in der richtigen Umgebung befinden, wenn Sie die Eingabeaufforderung mit dem Präfix "+ (venv) +" sehen.

Wenn alles in Ordnung ist, stellen Sie sicher, dass die Python-Tools auf dem neuesten Stand sind, um diesen Schritt auszuführen.

pip install -U setuptools pip

Schritt 2 - Erstellen und Konfigurieren einer Beispiel-Django-Site

Jetzt können Sie die Anfänge einer Django-Site erstellen. Zunächst installieren Sie die Python-Anforderungen, die zum Ausführen der Site erforderlich sind. Stellen Sie sicher, dass Sie sich noch im Verzeichnis "+ / www / data / +" und in Ihrer virtuellen Umgebung befinden.

pip install django mysql-python

Da Django und MySQL Python unterstützen, ist es an der Zeit, das Projektlayout mit dem Dienstprogramm + django-admin + von Django zu erstellen.

django-admin.py startproject mysite .

Öffnen Sie mit Ihrem bevorzugten Editor die Datei + mysite / settings.py +.

vi /www/data/www.example.com/mysite/settings.py

Ändern Sie den Abschnitt "+ DATABASES " so, dass er so aussieht. Stellen Sie sicher, dass Sie "+" durch etwas Sichereres ersetzen.

/www/data/www.example.com/mysite/settings.py

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'mysite',
       'USER': 'mysite',
       'PASSWORD': '',
       'HOST': '/tmp/mysql.sock',
   }

Speichern Sie Ihre Änderungen.

Schritt 3 - Konfigurieren Sie einen einfachen und sicheren MySQL-Server

Sie haben MySQL bereits installiert. Jetzt muss es nur noch konfiguriert werden.

Zuerst ein bisschen Hauswirtschaft. Öffnen Sie die Datei "+ / etc / rc.conf" zum Bearbeiten.

sudo vi /etc/rc.conf

Fügen Sie diese beiden Zeilen am Ende der Datei hinzu. Dies stellt sicher, dass MySQL und Apache gestartet werden, wenn der Server gestartet wird.

/etc/rc.conf

mysql_enable="YES"
apache24_enable="YES"

Wir haben Apache noch nicht konfiguriert, aber es ist jetzt einfacher, beide Zeilen hinzuzufügen, damit Sie es später nicht vergessen.

Starten Sie die MySQL-Serverinstanz.

sudo service mysql-server start

Führen Sie diesen Befehl aus, um Ihren Datenbankserver zu sichern.

mysql_secure_installation

Lesen Sie alle Eingabeaufforderungen (für Ihr eigenes Wissen) und beantworten Sie alle mit Ausnahme der Kennwortauswahl mit "+ Y +". Legen Sie für die Passwortabfragen das * root * MySQL-Passwort auf etwas Sicheres fest.

Melden Sie sich mit dem soeben festgelegten Kennwort bei Ihrer neuen und einigermaßen sicheren MySQL-Instanz an.

mysql -u root -p

Führen Sie diesen Befehl aus, um die Beispielsite-Datenbank mit dem Namen * mysite * zu erstellen.

create database mysite character set utf8;

Verwenden Sie nun diesen Befehl, um den Datenbankbenutzer * mysite * zu erstellen und der soeben erstellten Datenbank Berechtigungen zu erteilen. Stellen Sie sicher, dass "+" mit den Einstellungen in der Datei " settings.py +" übereinstimmt. Tatsächlich können Sie den Datenbanknamen und den Benutzernamen auch ändern, wenn Sie möchten. Stellen Sie einfach sicher, dass die Datenbank und der Benutzer, die Sie erstellen, mit den Einstellungen in der Python-Konfigurationsdatei übereinstimmen.

grant all privileges on mysite.* to 'mysite'@'localhost' identified by '';

Wenn Sie keine Fehler sehen, können Sie die MySQL-Shell folgendermaßen beenden:

quit

Nachdem die Datenbank fertig ist, können Sie sie mit dem Dienstprogramm Django + manage.py + mit den ursprünglichen Daten Ihrer Beispielsite füllen. Dies muss wiederum aus dem Site-Verzeichnis "+ / www / data / +" erfolgen.

./manage.py migrate

(Optional) Schritt 4 - Testen Sie die neue Django-Anwendung

Bevor wir weitermachen, stellen wir sicher, dass die Beispiel-Django-Site funktioniert.

Starten Sie den Django-Entwicklungsserver und lassen Sie ihn die öffentliche Netzwerkschnittstelle Ihres Droplets abhören.

./manage.py runserver 0.0.0.0:8000

Suchen Sie in Ihrem DigitalOcean Droplet-Panel die externe IP-Adresse Ihres Droplets. Besuchen Sie jetzt in Ihrem Browser "+ http: // <Ihre IP-Adresse hier>: 8000 +". Sie sollten die Standardseite für eine neue Django-Installation sehen.

Es ist * sehr wichtig *, dass Sie auf Ihrer Tastatur die Tastenkombination "+ STRG + C +" drücken, um den Django-Entwicklungsserver zu beenden, da er nicht für die Produktion verwendet werden soll.

Ein Hinweis zur Sicherheit

Es gibt viel über Sicherheit und bewährte Methoden zu lesen, wenn Sie eine Website betreiben. Es wird dringend empfohlen, zusätzliche Informationen zum ordnungsgemäßen Sichern eines öffentlich zugänglichen Webservers und Datenbankservers zu lesen, damit in der Produktion etwas Reales ausgeführt werden kann.

Nachdem die Ankündigung des öffentlichen Dienstes aus dem Weg geräumt wurde, ist es an der Zeit, Apache für die Bereitstellung unserer Django-Site zu konfigurieren.

Schritt 5 - Konfigurieren Sie einen einfachen virtuellen Apache-Host für Ihre Django-Site

Erstellen und bearbeiten Sie mit Ihrem bevorzugten Editor die Datei + / usr / local / etc / apache24 / Includes / httpd.conf +:

sudo vi /usr/local/etc/apache24/Includes/httpd.conf

Fügen Sie alle folgenden Konfigurationseinstellungen hinzu, um Ihren virtuellen Host zu erstellen. Ersetzen Sie "++" durch Ihren Website-Namen, damit er mit den zuvor erstellten Verzeichnissen übereinstimmt.

/usr/local/etc/apache24/Includes/httpd.conf

# Settings
ServerName mysite

## Default Overrides
ServerSignature Off
ServerTokens Prod
Timeout 30

## Virtual Hosts
<VirtualHost *:80>

   WSGIDaemonProcess mysite python-path=/www/data/:/www/data//venv/lib/python2.7/site-packages/
   WSGIProcessGroup mysite
   WSGIScriptAlias / /www/data//mysite/wsgi.py

   <Directory /www/data//mysite>
       <Files wsgi.py>
       Require all granted
       </Files>
   </Directory>

</VirtualHost>

Hier teilen Sie Apache einfach mit, dass er einige vernünftige Standardkonfigurationsoptionen festlegen soll und wo er den Python-Code zum Starten der Django-Site mit dem Apache-Modul "+ mod_wsgi +" finden soll. Dieser Artikel enthält detailliertere Informationen zu Apache virtual Gastgeber, wenn Sie mehr lesen möchten.

Starten Sie den Apache-Webserver.

sudo service apache24 restart

Testen der Beispiel-Django-Site

Sie sollten nun in der Lage sein, "+ http: // +" von Ihrem Browser aus zu besuchen und die Standard-Django-Seite zu sehen. Wenn Sie DNS eingerichtet haben, können Sie auch Ihre Domain verwenden.

Fazit

Wie Sie sehen, gibt es rund um das Thema der Bereitstellung auch der einfachsten Websites und Anwendungen viel zu lernen. Der nächste Schritt ist die Bereitstellung Ihrer benutzerdefinierten Anwendung anstelle der im Lernprogramm verwendeten Demoanwendung.

Wenn Sie Fragen oder Kommentare haben, lassen Sie diese bitte unten.

Literatur-Empfehlungen

Über die folgenden Links erfahren Sie mehr über das Erstellen und Bereitstellen einer einfachen Django-Site.