Hallo Welt mit Nginx + Uwsgi + Python auf EC2

Zusätzlich zur Rückgabe von Hello World! Schließlich HTML, habe ich den Code erstellt, um zu bestätigen, dass etwas in S3 geschrieben werden kann.

Umgebung

EC2(Amazon Linux)

Vorbereitung

EC2-Instanz

Da der Beispielcode in S3 geschrieben ist, weisen Sie S3 eine put_object-fähige Rolle zu.

Installation

nginx $ sudo yum install nginx

uwsgi $ sudo pip install uwsgi

you need a C compiler to build uWSGI Wenn ja, installieren Sie bitte den C-Compiler. In Installieren von uWSGI wurde es unten aufgeführt. $ sudo yum groupinstall "development tools"

Aufbau

Referenz: Schnellstart für Python / WSGI-Anwendungen

nginx Bearbeiten Sie /etc/nginx/nginx.conf

nginx.conf


server {

  location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:3031;
  }

  location = /favicon.ico{
    empty_gif;
  }

Als ich es zum ersten Mal über den Browser getestet habe, war es selbst für die Lieblingsanforderung mit uwsgi verbunden und wurde doppelt ausgeführt. Also habe ich auch location = /favicon.ico angegeben.

uwsgi

Bereiten Sie ein Verzeichnis für uwsgi entsprechend vor $ mkdir /var/www/uwsgi

Fahren Sie mit dem Bild fort, das Sie wie folgt in dieses Verzeichnis gestellt haben.

uwsgi/
   index.py  #Ausführungsquelle
   uwsgi.ini  #Einstellungsdatei
   uwsgi.log #Protokollausgabeziel
   uwsgi.pid  #Ausgabeziel der Prozess-ID

uwsgi.ini Schreiboptionen, die zur Laufzeit übergeben werden sollen. Da es lang wurde, schrieb ich es in die INI-Datei.

uwsgi.ini


[uwsgi]
master = True
socket = 127.0.0.1:3031
wsgi-file = index.py
stats = 127.0.0.1:9191
logto = uwsgi.log
pidfile = uwsgi.pid

Referenz: uWSGI-Optionen

Code

Zusätzlich zur Rückgabe von Hello World! Schließlich HTML, habe ich den Code erstellt, um zu bestätigen, dass etwas in S3 geschrieben werden kann. Ich werde boto3 verwenden, um nach s3 zu exportieren, also werde ich es einfügen. $ sudo pip install boto3

Die Funktion application ist der Einstiegspunkt von uwsgi. Ändern Sie den Bucket-Namen in Ihren eigenen Bucket-Namen.

index.py


# coding:utf-8

import boto3
import logging
import datetime
import uuid

handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger = logging.getLogger()
logger.addHandler(handler)
logger.setLevel(logging.INFO)

def main():

    # S3
    s3 = boto3.resource('s3')
    now_s = datetime.datetime.now().strftime('%Y.%m.%d-%H:%M:%S')
    key = 'test-folder/{0}-{1}.txt'.format(now_s, uuid.uuid4())
    s3.meta.client.put_object(Bucket='BucketName', Key=key, Body='test dayo')

    # log
    logger.info('test-log-dayo')



def application(env, start_response):
    main()
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World!"

Bewegung

Anlaufen

Starten Sie Nginx

$ service nginx start

starte uwsgi

$ cd /var/www/uwsgi
$ uwsgi --ini uwsgi.ini

Bestätigung

HTTP-Anfrage an EC2. OK, wenn Sie Folgendes bestätigen können.

s3に書き出されたファイル

Stop (uwsgi)

Zum Zeitpunkt der Frontausführung

Ich habe mit ** control + c ** aufgehört.

Beim Laufen im Hintergrund

Ich blieb bei einem der folgenden Punkte stehen.

$ kill -9 `cat uwsgi.pid`
$ killall -9 uwsgi 

Andere

Abfrageparameter abrufen

Konnte nicht von cgi.FieldStorage erhalten. Erhalten von QUERY_STRING des Anwendungsarguments env.

Post-Anfrage-Text abrufen

Konnte nicht von cgi.FieldStorage erhalten. Ich habe es durch Lesen von wsgi.input des Arguments env of application erhalten.

Referenz: Zugriff auf POST-Daten von WSGI

Ende

Ich werde es für einen Moment anfassen, aber ich habe es geschrieben, weil es Zeit gekostet hat. Linux ist ein Mann, der vor kurzem angefangen hat, sich zu berühren. Wenn etwas nicht stimmt, lassen Sie es mich bitte wissen. Ende.

Recommended Posts

Hallo Welt mit Nginx + Uwsgi + Python auf EC2
Python beginnend mit Hallo Welt!
[Hinweis] Hallo Weltausgabe mit Python
Bis Hello World mit Flask + uWSGI + Nginx @ Sakuras VPS (CentOS 6.6)
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Erstellen Sie eine Python-Umgebung mit pyenv auf EC2 (Ubuntu)
Nicht blockierend mit Python + uWSGI
Hallo Welt mit ctypes
Begrüßen Sie die Welt mit Python mit IntelliJ
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Hallo, Welt mit Docker
Hallo Welt mit Django
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
WebSocket mit Python + uWSGI
Erste Python ① Umgebungskonstruktion mit Pythonbrew & Hello World !!
Hallo Welt auf Flasche
Hallo Welt mit Flask + Hamlish
API mit Flask + uWSGI + Nginx
Bis hallo Welt mit Zappa
Python - Installieren Sie MySQLDB auf EC2
Hallo Welt (Anfänger) mit Django
Stellen Sie die Django-Anwendung auf EC2 mit Nginx + Gunicorn + Supervisor bereit
Hallo Welt! Mit virtueller CAN-Kommunikation
cout << "Hallo Welt! \ N" in Python
Hinweise zur Verwendung von rstrip mit Python.
Hallo Welt! Von QPython mit Braincrash
Erste Schritte mit Python 3.8 unter Windows
Python #Hello World für Super-Anfänger
[Memo] Tweet auf Twitter mit Python
Erste Schritte mit Heroku-Viewing Hello World in Python Django mit Raspberry PI 3
Verwenden Sie Python auf Raspberry Pi 3, um die LED zu beleuchten (Hello World)
Memorandum beim Ausführen von Python auf EC2 mit Apache
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Python nur mit Hallo, Welten zu erinnern
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Wie man Hello, World mit #Nix baut
Ein Memo mit Python2.7 und Python3 in CentOS
Kartenmietinformationen auf einer Karte mit Python
Verfolgen Sie aktive Anwendungen auf einem Mac mit Python
Hinweise zur japanischen OCR mit Python
Laden Sie mit Python Dateien im Web herunter
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac
Führen Sie einen Stapel Python 2.7 mit nohup unter Amazon Linux AMI unter EC2 aus
Aufbau des Python-Ausführungsservers (Python + uWSGI + Django + Nginx)
Hallo Welt
Eine typisierte Welt, die mit Python beginnt
So zeigen Sie Hello World in Python an
PIL mit Python 3.x unter macOS installieren
Installieren Sie Python 3.8, Pip 3.8 auf EC2 (Amazon Linux 2)
Hallo Welt! Von QPython mit Brainfu * k
Führen Sie den Python-WSGI-Server auf der NGINX-Einheit aus
Arbeiten mit GPS in Python für Raspberry Pi 3
Erstellen Sie mit venv unter Ubuntu 14.04 LTS schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Erhalten Sie mit Python Informationen zu den 100 einflussreichsten technischen Twitter-Nutzern der Welt.
Erste Schritte mit Python mit 100 Klopfen bei der Sprachverarbeitung
nginxparser: Versuchen Sie, die nginx-Konfigurationsdatei mit Python zu analysieren
Hallo Welt mit gRPC / go in Docker-Umgebung