


Python+Tornado+Supervisor+Nginx-Bereitstellung unter Ubuntu
Da es sich bei den zuvor im Krankenhaus erfassten Daten um durch Fotografieren gewonnene Rezeptbilder handelte, muss die Textform des Rezepts verwendet werden. Deshalb habe ich in den letzten zwei Wochen ein kleines Programm geschrieben, um Benutzern Bilder des Servers anzuzeigen (damals habe ich einige Leute eingestellt), sodass Benutzer Textinformationen basierend auf den Bildern eingeben können.
Ich habe früher Java zum Schreiben von Webseiten verwendet. Ich dachte, ich würde Python verwenden, um maschinelles Lernen zu lernen. Außerdem habe ich Python zum Schreiben verwendet. Außerdem wollte ich etwas Neues verwenden und das Programm war relativ klein. Ich habe überlegt, Mongodb zur Speicherung zu verwenden (obwohl das wirklich nicht notwendig ist).
Die Grundarchitektur ist wie folgt: (Backend-Sprache) Python + (Web-Framework und Webserver) Tornado + (Datenbank) Mongodb + (Prozessmanagement) Supervisor + (Reverse-Proxy) Nginx
(1) Python: Ich schaue mir Liao Xuefengs Python-Tutorial an
Ich habe einige Grundsätze gelernt und sie dann überprüft, wenn ich sie beim Sprechen nicht verstanden habe.
(2) Tornado: Ich begann zu lernen, nachdem ich mir dieses Tutorial angesehen hatte
Tornado ist sehr schnell zu verwenden, wie ein Forwarder, und kann auch http-Anfragen direkt an einem bestimmten Port überwachen, wie Tomcat. Wir müssen nur das schreiben Get- und Post-Methoden sind in Ordnung.
Andere sind fast die gleichen wie im Java Web. Ohne das Framework von SpringMVC und Hibernate können Sie Controller, Service und Dao selbst im Python-Paket schichten.
(3) mongodb: Da es sich um eine nicht relationale Datenbank handelt, ist es nicht erforderlich, dass derselbe Feldname für jede Datenzeile (in mongodb als Dokument bezeichnet) in einer Tabelle (als a bezeichnet) vereinheitlicht wird Sammlung in Mongodb). Mehr oder weniger ungleichmäßig. Ein weiterer Punkt ist, dass Transaktionen nicht unterstützt werden und es keine Möglichkeit gibt, beim Ausführen mehrerer Lese- und Schreibanweisungen in Python ein Rollback durchzuführen. Sie müssen daher einen Weg finden, Probleme zu verhindern, die durch Parallelität im Programm verursacht werden.
Zum Beispiel muss ich ein Dokument mit dem Status 0 aus der Sammlung finden und es auf 1 aktualisieren, was bedeutet, dass der Benutzer es anzeigt. Nachdem der Benutzer Änderungen vorgenommen hat, setze ich den Status auf 2 und setze es dann Hier bedeutet 0 nicht durchsucht, 1 bedeutet, dass es durchsucht wird und 2 bedeutet, dass es geändert wurde. Zu diesem Zeitpunkt haben möglicherweise viele Benutzer gleichzeitig die Daten mit dem Status 0 erhalten. Dies widerspricht unseren Wünschen und ermöglicht es vielen Personen, dieselben Daten zu ändern. Sie können update_one direkt in Betracht ziehen, um den Status eines Dokuments von 0 auf 1 zu ändern, und dann ein eindeutiges Feld hinzufügen, um das Dokument zu identifizieren, und dieses eindeutige Feld verwenden, um das Dokument zu finden. Zu diesem Zeitpunkt können andere Benutzer das Dokument nicht abrufen, da update_one Es wird gesperrt, wenn es soweit ist, und andere können diese Daten nicht erhalten.
(4) Supervisor: Supervisor ist ein in Python entwickeltes Prozessverwaltungsprogramm, das gewöhnliche Befehle in Hintergrunddämonen umwandeln und den Prozessstatus überwachen kann.
Nach der Installation können Sie die Konfigurationsdatei printprescription.conf im Verzeichnis /etc/supervisor/conf.d hinzufügen. Das Konfigurationsbeispiel lautet wie folgt
[program:printprescription] #设置守护进程名 command = python /home/liaohuqiang/Code/printprescription/main2.py #设置执行命令 autorstart=true #设置随supervisor的启动而启动 stdout_logfile = /home/liaohuqiang/Code/printprescription/printprescription.log #设置日志路径
Nachdem die Konfiguration abgeschlossen ist, können Sie den Supervisor-Dienst öffnen, schließen und neu starten. Mit „supervisorctl status“ können Sie den Prozessstatus sowie die Fehlerinformationen in den entsprechenden Protokolldateien überprüfen
sudo /etc/init.d/supervisor start sudo /etc/init.d/supervisor stop sudo /etc/init.d/supervisor restart<br><br>sudo supervisorctl status printprescripton<br>vim cat /var/log/supervisor/xxx.log
(5) nginx: nginx wird als Reverse-Proxy verwendet. Es kann Port 80 überwachen und entsprechende Anfragen an andere Hosts und andere Ports weiterleiten in statisch (statisch wird zum Speichern statischer Front-End-Ressourcen wie js und css verwendet), aber an einem anderen Ort auf dem Server, sodass das Bild über die Nginx-Weiterleitung abgerufen werden kann. Andererseits sind andere Ports (z. B. der 8001-Port, den Tornado abhört) im Allgemeinen nicht für Benutzer verfügbar, sodass Nginx für die Weiterleitung verwendet wird. Darüber hinaus weist die Anweisung „location /static/“ Nginx an, statische Verzeichnisdateien direkt bereitzustellen, anstatt Anfragen an Tornado weiterzuleiten, und kann statische Dateien effizienter bereitstellen als Tornado.
Überprüfen Sie nach der Installation von Nginx die relevanten Konfigurationsdateien und finden Sie diesen Satz: include /etc/nginx/sites-enabled/*. In diesem Verzeichnis können Sie eine neue Konfigurationsdatei für die Konfiguration
erstellencat /etc/nginx/nginx.conf<br>sudo touch /etc/nginx/sites-enabled/default2
Das Konfigurationsbeispiel lautet wie folgt. Es ist zu beachten, dass der letzte Schrägstrich hier nicht eingegeben wird, wenn der Benutzer auf „host“ zugreift /printprescription“ Dies entspricht dem Zugriff auf „Host:8001/printprescription“. Da die Anfrage auf Tornado Host:8001/ zugeordnet ist, wird zu diesem Zeitpunkt 404 angezeigt.
<span style="color: #000000"> upstream frontends { server </span><span style="color: #800080">222.222</span>.<span style="color: #800080">222.222</span>:<span style="color: #800080">8000</span><span style="color: #000000">; server </span><span style="color: #800080">222.222</span>.<span style="color: #800080">222.222</span>:<span style="color: #800080">8001</span><span style="color: #000000">; } server { listen </span><span style="color: #800080">80</span><span style="color: #000000">; location </span>/<span style="color: #000000"> { proxy_read_timeout </span><span style="color: #800080">1800</span><span style="color: #000000">; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X</span>-Real-<span style="color: #000000">IP $remote_addr; proxy_set_header X</span>-<span style="color: #000000">Scheme $scheme; proxy_pass http:</span><span style="color: #008000">//</span><span style="color: #008000">frontends;</span> <span style="color: #000000"> } location </span>/doctorAfter/<span style="color: #000000"> { #配置图片路径 root </span>/home/<span style="color: #000000">wenserver; } location </span>/static/<span style="color: #000000"> { #配置前端静态资源路径 root </span>/home/xxx/Code/printprescription/<span style="color: #000000">view; } location </span>/printprescription/<span style="color: #000000"> { proxy_read_timeout </span><span style="color: #800080">1800</span><span style="color: #000000">; proxy_pass_header Server; proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X</span>-Real-<span style="color: #000000">IP $remote_addr; proxy_set_header X</span>-<span style="color: #000000">Scheme $scheme; proxy_pass http:</span><span style="color: #008000">//</span><span style="color: #008000">127.0.0.1:8001/;</span> <span style="color: #000000"> } }</span>
(6)opencv:一个计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。由于之前采集数据的时候在处方图片数据中混杂了人脸图片,所以采用oepncv里的算法检测人脸,如果是人脸则删除该记录。然而还是会残留一些人脸图片,需要人工清洗,这个数据好像之前有师兄清洗过,到时候拿过来重构一下数据库。
ps:安装opencv的时候imshow报错,虽然imshow用不到,但是强迫症使然,搞了我一天,来来回回装了十多次,最后还是没搞定,真是心力交瘁,特想吐嘈:垃圾opencv!毁我青春!颓我精神!耗我时间!磨我意志!浪费人生!!!
好吧我就随便说说,回头还要靠它干活。
cv2.error: /io/opencv/modules/highgui/src/window.<span style="color: #0000ff">cpp</span>:<span style="color: #800080">583</span>: error: (-<span style="color: #800080">2</span>) The <span style="color: #0000ff">function</span> is not implemented. Rebuild the library with Windows, GTK+ <span style="color: #800080">2</span>.x or Carbon support. If you are on Ubuntu or Debian, <span style="color: #0000ff">install</span> libgtk2.<span style="color: #800080">0</span>-dev and <span style="color: #0000ff">pkg-config</span>, <span style="color: #0000ff">then</span> re-run cmake or configure script <span style="color: #0000ff">in</span> <span style="color: #0000ff">function</span> cvShowImage
Das obige ist der detaillierte Inhalt vonPython+Tornado+Supervisor+Nginx-Bereitstellung unter Ubuntu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Heutzutage ist es ein sehr häufiges Problem, dass Ubuntu seinen Benutzern nicht erlaubt, das Terminal zu öffnen. Wenn Sie ein ähnliches Problem erhalten und nicht wissen, was Sie als Nächstes tun sollen, erfahren Sie mehr über fünf Korrekturen zur Behebung des Problems „Ubuntu kann Terminal nicht öffnen“ auf Ihrem Linux-Gerät. Lassen Sie uns ohne weitere Umschweife auf die Ursachen und die dafür verfügbaren Lösungen eingehen. Warum kann Ubuntu das Terminal darauf nicht öffnen? Dies geschieht hauptsächlich, wenn Sie fehlerhafte Software installieren oder die Terminalkonfiguration ändern. Darüber hinaus können neue Anwendungen oder Spiele, die mit Gebietsschemas interagieren und diese beschädigen, ähnliche Probleme verursachen. Einige Benutzer meldeten eine Lösung für dieses Problem, als sie im Ubuntu-Aktivitätsmenü nach „Terminal“ suchten. Dies zeigt, dass

In Ubuntu-Systemen ist der Root-Benutzer normalerweise deaktiviert. Um den Root-Benutzer zu aktivieren, können Sie mit dem Befehl passwd ein Passwort festlegen und sich dann mit dem Befehl su- als Root anmelden. Der Root-Benutzer ist ein Benutzer mit uneingeschränkten Systemadministratorrechten. Er verfügt über Berechtigungen zum Zugriff auf und zum Ändern von Dateien, zur Benutzerverwaltung, zum Installieren und Entfernen von Software sowie zum Ändern der Systemkonfiguration. Es gibt offensichtliche Unterschiede zwischen dem Root-Benutzer und normalen Benutzern. Der Root-Benutzer verfügt über die höchste Autorität und umfassendere Kontrollrechte im System. Der Root-Benutzer kann wichtige Systembefehle ausführen und Systemdateien bearbeiten, was normale Benutzer nicht können. In dieser Anleitung werde ich den Ubuntu-Root-Benutzer untersuchen, wie man sich als Root anmeldet und wie er sich von einem normalen Benutzer unterscheidet. Beachten

Ubuntu24.04LTS mit dem Codenamen „NobleNumbat“ wird bald veröffentlicht! Wenn Sie eine Nicht-LTS-Version wie Ubuntu 23.10 verwenden, müssen Sie früher oder später über ein Upgrade nachdenken. Für diejenigen, die Ubuntu20.04LTS oder Ubuntu22.04LTS verwenden, lohnt es sich, über ein Upgrade nachzudenken. Canonical hat angekündigt, dass Ubuntu 24.04LTS Update-Support für bis zu 12 Jahre bietet, der sich wie folgt aufteilt: Als LTS-Version wird es 5 Jahre lang regelmäßige Wartungs- und Sicherheitsupdates geben. Wenn Sie Ubuntu Pro abonnieren, können Sie weitere 5 Jahre Support genießen. Derzeit wurde dieser zusätzliche Supportzeitraum auf 7 Jahre verlängert, sodass Sie bis zu 12 Jahre erhalten

OBS ist eine Open-Source-Software, die von ehrenamtlichen Mitarbeitern auf der ganzen Welt in ihrer Freizeit entwickelt wird. Eine Video-Live-Aufzeichnungssoftware, die hauptsächlich für die Videoaufzeichnung und das Live-Streaming verwendet wird. Bitte beachten Sie, dass OBSStudio bei der Installation von Ubuntu/Mint unter ChromeOS nicht vollständig funktionieren kann und Funktionen wie Bildschirm- und Fensteraufnahme nicht genutzt werden können. Es wird empfohlen, xserver-xorg1.18.4 oder eine neuere Version zu verwenden, um potenzielle Leistungsprobleme mit bestimmten Funktionen in OBS, wie z. B. Vollbildprojektoren, zu vermeiden. FFmpeg ist erforderlich (wenn Sie sich nicht sicher sind, ist dies wahrscheinlich nicht der Fall), können Sie es mit folgendem Befehl herunterladen: sudoaptinstallffmpeg. Ich habe es hier bereits installiert

Für viele Benutzer klingt das Hacken einer Android-TV-Box entmutigend. Allerdings stand Entwickler Murray R. Van Luyn während der Broadcom-Chipknappheit vor der Herausforderung, nach geeigneten Alternativen zum Raspberry Pi zu suchen. Seine Zusammenarbeit mit der Armbia

Um FirefoxSnap unter Ubuntu Linux zu entfernen, können Sie die folgenden Schritte ausführen: Öffnen Sie ein Terminal und melden Sie sich als Administrator bei Ihrem Ubuntu-System an. Führen Sie den folgenden Befehl aus, um FirefoxSnap zu deinstallieren: sudosnapremovefirefox Sie werden zur Eingabe Ihres Administratorkennworts aufgefordert. Geben Sie Ihr Passwort ein und drücken Sie zur Bestätigung die Eingabetaste. Warten Sie, bis die Befehlsausführung abgeschlossen ist. Sobald der Vorgang abgeschlossen ist, wird FirefoxSnap vollständig entfernt. Beachten Sie, dass dadurch Versionen von Firefox entfernt werden, die über den Snap-Paketmanager installiert wurden. Wenn Sie eine andere Version von Firefox auf andere Weise installiert haben (z. B. über den APT-Paketmanager), sind Sie davon nicht betroffen. Führen Sie die oben genannten Schritte durch

Angular.js ist eine frei zugängliche JavaScript-Plattform zum Erstellen dynamischer Anwendungen. Es ermöglicht Ihnen, verschiedene Aspekte Ihrer Anwendung schnell und klar auszudrücken, indem Sie die Syntax von HTML als Vorlagensprache erweitern. Angular.js bietet eine Reihe von Tools, die Sie beim Schreiben, Aktualisieren und Testen Ihres Codes unterstützen. Darüber hinaus bietet es viele Funktionen wie Routing und Formularverwaltung. In dieser Anleitung wird erläutert, wie Angular auf Ubuntu24 installiert wird. Zuerst müssen Sie Node.js installieren. Node.js ist eine JavaScript-Ausführungsumgebung, die auf der ChromeV8-Engine basiert und es Ihnen ermöglicht, JavaScript-Code auf der Serverseite auszuführen. In Ub sein

Wenn Sie Docker verwendet haben, müssen Sie Daemons, Container und ihre Funktionen verstehen. Ein Daemon ist ein Dienst, der im Hintergrund läuft, wenn ein Container bereits in einem System verwendet wird. Podman ist ein kostenloses Verwaltungstool zum Verwalten und Erstellen von Containern, ohne auf einen Daemon wie Docker angewiesen zu sein. Daher bietet es Vorteile bei der Verwaltung von Containern, ohne dass langfristige Backend-Dienste erforderlich sind. Darüber hinaus erfordert Podman keine Root-Berechtigungen. In dieser Anleitung wird ausführlich erläutert, wie Sie Podman auf Ubuntu24 installieren. Um das System zu aktualisieren, müssen wir zunächst das System aktualisieren und die Terminal-Shell von Ubuntu24 öffnen. Sowohl während des Installations- als auch des Upgrade-Vorgangs müssen wir die Befehlszeile verwenden. eine einfache
