Paramètres du serveur Python (nginx + Gunicorn)

Je l'ai recherché en 2014 et j'ai personnellement dit qu'il s'agissait du paramètre du serveur API Python.

Mettez nginx sur le devant et utilisez gunicorn pour que le serveur d'applications inverse le proxy.

C'est un peu vieux, mais j'ai décidé de cela en me référant à instagram. INGÉNIERIE INSTAGRAM

Un mémo lors du réglage sur AWS EC2.

Installer gunicorn

Installé à l'aide de pip sur virtualenv. J'utilise virtualenv parce que je n'aime pas que yum reste bloqué quand je joue avec Python sur le système d'exploitation, et je veux augmenter la version de Python.

Démarrer gunicorn au démarrage

Je ne suis pas très familier avec cela, mais je me suis inscrit pour upstart.

Décrivez le fichier de paramètres suivant.

/etc/init/myapp.conf


description "[APP NAME] API Server"
 
start on runlevel [2345]
stop on runlevel [016]
 
respawn
 
script
su - www
/home/www/[APP NAME]/virtualenv/bin/gunicorn -b 127.0.0.1:8000 -w 4 -u www --chdir /home/www/[APP NAME]/server/python --log-file /home/www/[APP NAME]/logs/error_log --pythonpath /home/www/[APP NAME]/server/python server:application
end script

Au moment de centos7, upstart n'est pas inclus, alors réglez-le sur systemctl. Vous pouvez le trouver sur le site Gunicorn, y compris le fichier de configuration.

Référence: Deploying Gunicorn --Gunicorn 19.3.0 documentation

installation de nginx

Installez avec yum.

fichier de configuration nginx.

/etc/nginx/nginx.conf


user  www;
worker_processes  1;

error_log  /var/log/nginx/error.log;

pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    sendfile        on;

    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;

    index   index.html;

    upstream app_server {
        server 127.0.0.1:8000 fail_timeout=0;
    }

    server {
        listen       80;
        server_name  [DOMAIN];
        root         /home/www/[APP NAME]/server/html;

        access_log  /var/log/nginx/[APP NAME].access.log  main;

        location / {
            try_files $uri @proxy_to_app;
        }

        location @proxy_to_app {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_pass   http://app_server;
        }

        error_page  404              /404.html;
        location = /40x.html {
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        }

    }

}

Les principaux paramètres sont les deux suivants.

Recommended Posts

Paramètres du serveur Python (nginx + Gunicorn)
Essayez le serveur Taxii (paramètres 3.gunicorn)
paramètres d'environnement python
Construction du serveur d'exécution Python (Python + uWSGI + Django + Nginx)
Exécutez le serveur python wsgi sur l'unité NGINX
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
python> udp> serveur d'écho
Serveur DNS en Python ....
Serveur local avec python
Lancer une application Web Python sur Nginx + Gunicorn avec Docker
Serveur HTTP facile avec Python
Serveur HTTP simple pour python
Paramètres d'extrait de code pour le notebook jupyter python
Installez Python 3 sur le serveur Sakura (FreeBSD)
Ecrire un serveur HTTP / 2 en Python
Paramètres Emacs pour l'environnement de développement Python
Comportement de python3 par le serveur de Sakura