(Wenn Sie sich unten ansehen, wie man httpd.conf schreibt, sollte dies im Allgemeinen ein Auslöser sein ...)
Angenommen, Sie verwenden das Python-Modul django, gibt es verschiedene Möglichkeiten, das Echtzeit-Web zu realisieren. Es gibt jedoch nur wenige Möglichkeiten, diese Voraussetzungen zu nutzen (= kann als Erweiterung des Python-Moduls oder von Django verwendet werden). Was kommt nach einer leichten Untersuchung heraus?
Um.
Zu dieser Zeit wurde es mehr als nur Kanäle aktualisiert, und ich habe mich für swampdragon entschieden, weil es mehr japanische Dokumente (Beispiele) enthält (obwohl es nur wenige gibt).
Derzeit (16.12.29) scheint die Aktualisierung der offiziellen Website bereits eingestellt worden zu sein, aber zu diesem Zeitpunkt (16.07. / Xx) habe ich mich dafür entschieden (obwohl die offizielle Website zu diesem Zeitpunkt geschlossen war). .. Als Ergebnis werde ich den Prozess der harten Bereitstellung zusammenfassen.
Außerdem entfällt das Verfahren zum Installieren des Moduls, und in der Diskussion geht es darum, was installiert und wie es eingestellt wurde.
Die Entwicklungsumgebung der Anwendung, die Sie bereitstellen möchten, lautet
Darüber hinaus wurde Folgendes als Modul eingeführt.
Das Bereitstellungsziel ist CentOS 7, das in AWS eingerichtet ist und keine anfänglichen Einstellungen hat. Da es sauber war, musste ich es vorerst von Apache aus eingeben.
Erstellen Sie eine Grundlage für die Ausführung von Webanwendungen unter CentOS7. Dieses Mal werden wir Folgendes vorstellen.
Wenn beide die neuesten sind, gibt es kein Problem (sollte). Übrigens wird auch mod_wsgi eingeführt, um die wsgi-Umgebung vorzubereiten.
Da die in CentOS 7 enthaltene Python-Version 2.7 war, habe ich Python 3.5.1 installiert, damit es mit Befehlen der Form python3.5
verwendet werden kann.
Wenn redis ohne nachzudenken installiert wird, werden nur 2.8 und frühere Versionen enthalten sein, daher habe ich auf hier verwiesen und es direkt installiert.
Das ist das Hauptthema des Einsatzes.
Die Anwendung, die ich bereitstellen wollte, wurde auf github abgelegt, also habe ich sie in das folgende Verzeichnis geklont und abgelegt.
/var/www/cgi-bin/
Der Speicherort entspricht der Standardeinstellung von Apache.
Ändern Sie anschließend, ohne über etwas Besonderes nachzudenken, httpd.conf gemäß Offizielles Dokument einer anderen Version.
Dies allein funktioniert jedoch nicht.
Um das Echtzeit-Web zu realisieren, musste swampdragon zum Server geleitet und der Redis-Server gestartet werden.
Dieses Mal müssen die folgenden vier Server unter CentOS ausgeführt werden.
Von diesen können die beiden ersteren mit den folgenden Befehlen gestartet werden.
systemctl start httpd
systemctl start postgresql
Da es im Hintergrund arbeitet, ist die Konsole nicht überfordert.
Das Problem sind die beiden letzteren. Django selbst läuft auf Apache, aber Swampdragon, das als Modul eingeführt wurde, muss einen Server separat von Django einrichten. Und wenn redis auch den Server startet, können keine anderen Vorgänge ausgeführt werden.
Daher wurde tmux neu eingeführt. Durch einfaches Einführen von tmux und Aufteilen der Konsole ist ein gleichzeitiger Start möglich.
Das Problem bleibt jedoch weiterhin bestehen. Das ist das Routing von Apache zum Swampdragon-Server. Ich hatte große Probleme, weil ich keine Literatur dazu finden konnte.
Der Inhalt der endgültigen Apache-Einstellungen (httpd.conf) lautet wie folgt (der App-Pfad ist unscharf).
Listen 80
Listen 443
<VirtualHost *:443>
ProxyPass /data ws://127.0.0.1:9999/data
ProxyPassReverse /data ws://127.0.0.1:9999/data
ProxyPass /settings.js http://127.0.0.1:9999/settings.js
ProxyPassReverse /settings.js http://127.0.0.1:9999/settings.js
ProxyPreserveHost On
ProxyRequests Off
ProxyVia On
</VirtualHost>
LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
WSGIPythonPath /var/www/cgi-bin/path/to/app:/usr/local/bin/python3.5/site-packages
DocumentRoot "/var/www/cgi-bin/path/to/documentroot"
Alias /static/ /var/www/cgi-bin/path/to/static/
<Directory /var/www/cgi-bin/path/to/app/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
WSGIScriptAlias / /var/www/cgi-bin/path/to/wsgi.py
Außerdem ist ~: //127.0.0.1:9999/~ die Standardeinstellung (sollte sein), als swampdragon eingeführt wurde.
Unterhalb des Lademoduls in der unteren Hälfte entspricht fast der Inhalt der offiziellen Django-Website.
Die Leber ist die Einstellung von 443 Ports. swampdragon hat zwei Mitteilungen zu empfangen. / Daten für die Web-Socket-Kommunikation und /settings.js für http.
Wenn Sie es als virtuellen Host festlegen und auf einen separaten Swampdragon-Server übertragen, wird es weiter auf den Redis-Server übertragen und die Sitzungsinformationen werden gespeichert.
Schließlich sollten Sie in der Lage sein, eine Echtzeit-Webanwendung mit einem solchen Befehl zu starten.
tmux
systemctl start postgresql
systemctl start httpd
sudo redis-server /etc/redis.conf
python3.5 server.py
Bei Verwendung von Sumpfdrachen
Das Obige ist die Geschichte der ersten manuellen Bereitstellung.
Recommended Posts