Installieren Sie Nginx Ziehen Sie zuerst das CentOS-Image. Wir installieren die neueste Version von nginx1.19: Download-Adresse Führen Sie das CentOS-Image aus und geben Sie ein: docker run --name ver -d -p 8051:80 -it nginx_start Legen Sie das Paket nginx-1.19.0.tar.gz in den Container: Installieren Sie vor der Installation von nginx einige Abhängigkeiten: yum -y installiere gcc gcc-c++ autoconf automake make yum -y installiere zlib zlib-devel openssl openssl-devel pcre pcre-devel Entpacken: tar -zxvf nginx-1.19.0.tar.gz #Geben Sie nginx-1.10.1 ein und konfigurieren Sie nginx cd nginx-1.19.0 #Nginx konfigurieren #--prefix gibt das Installationsverzeichnis an#/usr/local/nginx ist das Installationsverzeichnis und kann nicht mit dem Verzeichnis der heruntergeladenen Datei identisch sein#./configure --prefix=/usr/local/nginx #Mit dem SSL Stub_Status Modul das Strem Modul –with-stream hinzufügen, damit das TCP-Protokoll übertragen werden kann #http_stub_status_module Statusüberwachung #http_ssl_module https konfigurieren #stream TCP zum Weiterleiten konfigurieren #http_gzip_static_module Komprimierung #http_sub_module Anforderung ersetzen ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream Notiz: Hier habe ich den Fehler, dass pcre und zlib fehlen. Du kannst Dann Nach erfolgreicher Installation werden vier Dateien im durch Um den Erfolg zu überprüfen, können Sie Bild generieren 10. Verpacken Sie den CentOS-Container mit Nginx als Mirror- Installieren Sie die Python 2.7-Umgebung yum installiere gcc openssl-devel bzip2-devel Laden Sie Python 2.7 mit wget herunter und entpacken Sie es yum -y installiere wget Wechseln Sie in das Verzeichnis /usr/src und verwenden Sie wget, um Python 2.7 herunterzuladen. cd /usr/src wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz Entpacken Sie python2.7 erneut tar -zxvf Python-2.7.15.tgz Installieren Sie Python 2.7 Geben Sie das oben entpackte Python-2.7.15 ein und verwenden Sie die folgende Befehlszeile, um es in die entpackte Datei zu installieren cd Python-2.7.15 ./configure --enable-optimizations machen Sie Altinstall Installieren von PIP curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python2.7 get-pip.py Da die Version 2.7 ist und in requirements.txt eine Installieren Sie UWSGI Wenn
Führen Sie Konfigurieren Sie den uWSGI-Server Der relevante Inhalt der Datei [Benutzer] Socket = /tmp/uwsgi.sock chown-socket = nginx:nginx chmod-Socket = 664 # Ordentliches Herunterfahren auf SIGTERM, siehe https://github.com/unbit/uwsgi/issues/849#issuecomment-118869386 hook-master-start = unix_signal:15 tötet sie_alle_mit_gnädigem_Anstand Erstellen Sie die Datei [Benutzer] uwsgi-socket = /tmp/uwsgi.sock chmod-socket = 777 aufrufbar = App wsgi-Datei = main.py Puffergröße = 65535 Prozesse = %(%k * 2) Threads = %(%k * 20 Die Bedeutung der einzelnen Parameter ist: uwsgi-socket: Das Konfigurationselement uwsgi-socket gibt eine Datei an, bei der es sich um einen Unix-Socket handelt, d. h. einen Socket, der über das Dateisystem (und nicht über eine Netzwerkadresse) angesprochen und aufgerufen wird. Nachdem Sie den uwsgi-socket konfiguriert haben, müssen Sie auch den chmod-socket konfigurieren. aufrufbar: Legt fest, welche Variable im von uwsgi geladenen Modul aufgerufen wird, wenn eine Anfrage empfangen wird. Der Standardwert ist die Variable mit dem Namen „Anwendung“. wsgi-file: Lädt die angegebene wsgi-Datei. Puffergröße: Legt die interne Puffergröße fest, die für die UWSGI-Paketanalyse verwendet wird. Der Standardwert ist 4k. Prozesse und Threads sind die Anzahl der geöffneten Prozesse bzw. Threads und %k ist eine magische Zahlvariable, die die Anzahl der CPU-Kerne darstellt. Wenn wir eine Dual-Core-CPU haben, Supervisor installieren (optional) Bei der direkten Yum-Installation wird der Fehler „ Jetzt konfigurieren wir den Supervisor so, dass er auf die Dienste nginx und uwsgi hört. Erstellen Sie zunächst die Das Verzeichnis supervisord.conf ist wie folgt konfiguriert: ; Supervisor-Konfigurationsdatei [unix_http_server] file=/var/run/supervisor/supervisor.sock ; (der Pfad zur Socket-Datei) chmod=0700 ; Sockef-Dateimodus (Standard 0700) [Vorgesetzter] logfile=/var/log/supervisor/supervisord.log; (Hauptprotokolldatei; Standard $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (Supervisord-Pid-Datei; Standard-Supervisord.pid) childlogdir=/var/log/supervisor ; ('AUTO' untergeordnetes Protokollverzeichnis, Standard $TEMP) ; der folgende Abschnitt muss in der Konfigurationsdatei für RPC verbleiben ; (Supervisorctl/Web-Interface) funktionieren soll, können zusätzliche Schnittstellen ; hinzugefügt durch Definition in separaten rpcinterface:-Abschnitten [RPC-Schnittstelle:Supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [Supervisorctl] serverurl=unix:///var/run/supervisor.sock ; verwenden Sie eine unix://-URL für einen Unix-Socket ; Der Abschnitt [include] kann nur die Einstellung "files" enthalten. Dies ; Einstellung kann mehrere Dateien auflisten (getrennt durch Leerzeichen oder ; Zeilenumbrüche). Es können auch Platzhalter enthalten sein. Die Dateinamen sind ; wird als relativ zu dieser Datei interpretiert. Eingebundene Dateien *können* ; Include-Dateien selbst. [enthalten] Dateien = /etc/supervisor/conf.d/*.conf Erstellen Sie dann die Datei [Vorgesetzter] nodaemon=wahr [Programm:uwsgi] Befehl=/usr/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini --die-on-term --need-app stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [Programm: nginx] Befehl=/usr/local/nginx/sbin/nginx stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 # Ordnungsgemäßer Stopp, siehe http://nginx.org/en/docs/control.html Stoppsignal=BEENDEN Bei den oben genannten Pfaden handelt es sich um tatsächliche Verzeichniskonfigurationen. Wenn sie unterschiedlich sind, müssen sie geändert werden. Starten Sie dann den Supervisor: Nachdem die obige Konfiguration abgeschlossen ist, verpacken wir den Container neu, um ein neues Image zu generieren, das als VON base_v3 # Erstellen Sie ein Arbeitsverzeichnis RUN mkdir /app # Gibt an, dass alle Befehle, die beim Starten des Containers ausgeführt werden, im App-Verzeichnis WORKDIR /app ausgeführt werden # Ersetzen Sie die nginx-Konfiguration KOPIEREN Sie nginx.conf /etc/nginx/nginx.conf # Kopieren Sie den Inhalt des lokalen App-Verzeichnisses in das App-Verzeichnis des Containers COPY ./app/ /app/ Erstellen Sie hier eine weitere nginx.conf-Datei im selben Verzeichnis wie Dockerfile und App und ändern Sie den Inhalt von nginx.conf wie folgt: Benutzer nginx; Arbeiterprozesse 1; Fehlerlog /usr/local/nginx/logs/error.log warnen; pid /usr/local/nginx/logs/nginx.pid; Arbeiter_rlimit_nofile 20480; Ereignisse { verwenden Sie epoll; Arbeiterverbindungen 20480; multi_accept ein; } http { einschließen /usr/local/nginx/conf/mime.types; Standardtyp Anwendung/Oktett-Stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #Bei großen Anfragevolumina wird empfohlen, access_log zu schließen #access_log /var/log/nginx/access.log Haupt; sendfile an; #tcp_nopush ein; Keepalive-Timeout 300 s; Client-Header-Timeout: 300 s; Client_Body_Timeout: 300 s. gzip an; gzip_min_länge 1k; gzip_puffer 4 16k; gzip_types Text/HTML-Anwendung/JavaScript-Anwendung/JSON; einschließen /usr/local/nginx/conf.d/*.conf; Server { hören Sie 6666; Zeichensatz UTF-8; Maximale Client-Körpergröße: 75 M; Standort / { uwsgi_params einschließen; uwsgi_pass unix:///tmp/uwsgi.sock; uwsgi_send_timeout 300; uwsgi_connect_timeout 300; uwsgi_read_timeout 300; } } } Als nächstes müssen Sie nur Führen Sie anschließend stichprobenartig einen Schnittstellentest durch: Dies ist das Ende dieses Artikels zum Erstellen von Python Flask + nginx + uwsgi-Containern mit Docker. Weitere verwandte Inhalte zum Erstellen von Flask + nginx + uwsgi mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke
>>: js, um einen Boden-Scrolling-Effekt zu erzielen
js-Ausführung Phase der lexikalischen Analyse: um...
Vorwort In der MySQL-Datenbank verwenden wir manc...
Inhaltsverzeichnis 1. Isolationsstufe LESEN SIE U...
Inhaltsverzeichnis 1 Die allgemeinen Regeln zum E...
Es gibt zwei Situationen 1. Startzeit und Endzeit...
Inhaltsverzeichnis MySQL Truncate-Verwendung 1. T...
Datenblatt: Von Spalte zu Zeile: mit max(case whe...
Inhaltsverzeichnis 1. Vom Benutzer erstelltes Skr...
In diesem Tutorial verwenden wir für die Installa...
1. So erstellen Sie einen Benutzer und ein Passwo...
Installieren Sie JDK: Offizieller Oracle-Download...
0x0 Einführung Zunächst einmal: Was ist ein Hash-...
Zugriff verweigert: Der Grund hierfür ist: Es lie...
Zuvor hatte ich WordPress selbst erstellt, aber d...
Inhaltsverzeichnis 1. Zugeordnete Typen 2. Mappin...