En plus de retourner Hello World! Enfin html, j'ai fait le code pour confirmer que quelque chose peut être écrit dans S3.
EC2(Amazon Linux)
Étant donné que l'exemple de code est écrit dans S3, attribuez un rôle put_object-enabled à S3.
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é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
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!"
démarrer nginx
$ service nginx start
démarrer uwsgi
$ cd /var/www/uwsgi
$ uwsgi --ini uwsgi.ini
Requête HTTP à EC2. OK si vous pouvez confirmer ce qui suit.
J'ai arrêté avec ** contrôle + c **.
Je me suis arrêté à l'une des situations suivantes.
$ kill -9 `cat uwsgi.pid`
$ killall -9 uwsgi
Impossible d'obtenir de cgi.FieldStorage. Obtenu à partir de QUERY_STRING de l'argument d'application env.
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
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