Hello World avec nginx + uwsgi + python sur EC2

En plus de retourner Hello World! Enfin html, j'ai fait le code pour confirmer que quelque chose peut être écrit dans S3.

environnement

EC2(Amazon Linux)

Préparation

Instance EC2

Étant donné que l'exemple de code est écrit dans S3, attribuez un rôle put_object-enabled à S3.

Installation

nginx $ sudo yum install nginx

uwsgi $ sudo pip install uwsgi

you need a C compiler to build uWSGI Si tel est le cas, installez le compilateur C. Dans Installing uWSGI, il était inclus ci-dessous. $ sudo yum groupinstall "development tools"

Réglage

Référence: Quickstart pour les applications Python / WSGI

nginx Modifiez /etc/nginx/nginx.conf

--Modifier à l'intérieur du serveur {location / { --Ajouter un emplacement = /favicon.ico {dans le serveur {

nginx.conf


server {

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

  location = /favicon.ico{
    empty_gif;
  }

Quand je l'ai testé pour la première fois à partir du navigateur, il était connecté à uwsgi même pour la requête favorite, et il a été exécuté en double. J'ai donc également spécifié location = /favicon.ico.

uwsgi

Préparez correctement un répertoire pour uwsgi $ mkdir /var/www/uwsgi

Procédez comme suit avec l'image que vous avez placée dans ce répertoire.

uwsgi/
   index.py  #Source d'exécution
   uwsgi.ini  #fichier de configuration
   uwsgi.log #Destination de sortie du journal
   uwsgi.pid  #Destination de sortie de l'ID de processus

uwsgi.ini Ecrire les options à transmettre lors de l'exécution. Comme il est devenu long, je l'ai écrit dans le fichier ini.

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

Référence: Options uWSGI

code

En plus de retourner Hello World! Enfin html, j'ai fait le code pour confirmer que quelque chose peut être écrit dans S3. J'utiliserai boto3 pour exporter vers s3, donc je vais le mettre. $ sudo pip install boto3

La fonction appelée application est le point d'entrée d'uwsgi. Remplacez le nom du compartiment par votre propre nom de compartiment.

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!"

Bouge toi

Commencez

démarrer nginx

$ service nginx start

démarrer uwsgi

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

Vérification

Requête HTTP à EC2. OK si vous pouvez confirmer ce qui suit.

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

Arrêter (uwsgi)

Au moment de l'exécution du front

J'ai arrêté avec ** contrôle + c **.

Lors de l'exécution en arrière-plan

Je me suis arrêté à l'une des situations suivantes.

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

Autre

Obtenir les paramètres de requête

Impossible d'obtenir de cgi.FieldStorage. Obtenu à partir de QUERY_STRING de l'argument d'application env.

Obtenir le corps de la demande de publication

Impossible d'obtenir de cgi.FieldStorage. Je l'ai obtenu en lisant wsgi.input de l'argument env de l'application.

Référence: Accès aux données POST à partir de WSGI

fin

Je vais y toucher un instant, mais je l'ai écrit parce que cela a pris du temps. Linux est un homme qui a récemment commencé à toucher. Si quelque chose ne va pas, faites-le moi savoir. fin.

Recommended Posts

Hello World avec nginx + uwsgi + python sur EC2
Python commençant par Hello world!
[Note] Sortie Hello world avec python
Jusqu'à Hello World avec Flask + uWSGI + Nginx @ Sakura's VPS (CentOS 6.6)
Créer un environnement Python + uWSGI + Nginx avec Docker
Hello World et détection de visage avec OpenCV 4.3 + Python
Créer un environnement python avec pyenv sur EC2 (ubuntu)
Non bloquant avec Python + uWSGI
bonjour le monde avec ctypes
Dites bonjour au monde avec Python avec IntelliJ
Créer un environnement de Nginx + uWSGI + Python (Django) avec docker
Bonjour le monde avec Docker
Hello World avec Django
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
WebSocket avec Python + uWSGI
Premier python ① Construction de l'environnement avec pythonbrew & Hello World !!
Bonjour le monde sur flacon
Bonjour le monde avec Flask + Hamlish
API avec Flask + uWSGI + Nginx
Jusqu'à bonjour le monde avec zappa
Python --Installez MySQLDB sur EC2
Hello World (débutant) avec Django
Déployer l'application Django sur EC2 avec Nginx + Gunicorn + Supervisor
Bonjour tout le monde! Avec la communication CAN virtuelle
cout << "Hello, World! \ N" en python
Notes sur l'utilisation de rstrip avec python.
Hello World! Par QPython avec Braincrash
Premiers pas avec Python 3.8 sous Windows
Python #Hello World pour les super débutants
[Memo] Tweet sur Twitter avec Python
Premiers pas avec Heroku-Viewing Hello World en Python Django avec Raspberry PI 3
Utilisez python sur Raspberry Pi 3 pour éclairer la LED (Hello World)
Mémorandum lors de l'exécution de Python sur EC2 avec Apache
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04
Exécutez le servo avec Python sur ESP32 (Windows)
python à retenir uniquement avec bonjour, mondes
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Comment créer Hello, World avec #Nix
Un mémo contenant Python2.7 et Python3 dans CentOS
Carte des informations de location sur une carte avec python
Chase des applications actives sur Mac avec Python
Remarques sur la réalisation de l'OCR japonais avec Python
Si scipy est python 2.7.8, l'installation de pip trébuche
Télécharger des fichiers sur le Web avec Python
Créer un environnement Python avec Anaconda sur Mac
Exécuter un lot de Python 2.7 avec nohup sur Amazon Linux AMI sur EC2
Construction du serveur d'exécution Python (Python + uWSGI + Django + Nginx)
Bonjour le monde
Un monde typé qui commence par Python
Comment afficher Hello World en python
Installation de PIL avec Python 3.x sur macOS
Installez Python 3.8, Pip 3.8 sur EC2 (Amazon Linux 2)
Hello World! Par QPython avec Brainfu * k
Exécutez le serveur python wsgi sur l'unité NGINX
Travailler avec le GPS en Python pour Raspberry Pi 3
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant venv sur Ubuntu 14.04 LTS
Obtenez des informations sur les 100 utilisateurs techniques de Twitter les plus influents au monde avec python.
Démarrer avec Python avec 100 coups sur le traitement du langage
nginxparser: essayez d'analyser le fichier de configuration nginx avec Python
Hello World avec gRPC / go dans l'environnement Docker