[PYTHON] Flacon + Gunicorn + Nginx + Supervisor jusqu'à ce que cela fonctionne

Flacon + Gunicorn + Nginx + Supervisor jusqu'à ce que cela fonctionne

Référence: Exécutez l'application flask sur nginx / gunicorn / supervisor | Kaneshirogu http://blog.shun-ichiro.com/howto/nginx-gunicorn-supervisor-flask/

Information

Flask

Script de base: / var / www / apps / sampleapp / sample.py

sample.py


#!/usr/bin/env python
#coding: utf-8

from flask import Flask

app = Flask("sample")

@app.route("/sample") #Top répertoire/A utiliser séparément
def index():

    return "<h1>Hello World</h1>"

if __name__ == "__main__":

    app.run(host="0.0.0.0",debug=True)

Gunicorn

Fichier de configuration: / var / www / apps / sampleapp / guniconf.py

guniconf.py


import multiprocessing

# Server Socket
bind = 'unix:/tmp/gunicorn_my_app.sock'
backlog = 2048

# Worker Processes
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = 'sync'
worker_connections = 1000
max_requests = 0
timeout = 30
keepalive = 2
debug = False
spew = False

# Logging
logfile = '/var/www/apps/sampleapp/app.log'
loglevel = 'info'
logconfig = None

# Process Name
proc_name = 'gunicorn_my_app'

Essayez de commencer une fois

$ cd /var/www/apps/sampleapp/
$ gunicorn sample:app --config guniconf.py

Nginx

Paramètres par défaut: / etc / nginx / sites-enabled / 000-default.conf

server {
  listen 80 default_server;

  root /var/www;
  index index.php index.html index.htm;

  location / {
          try_files $uri $uri/ /index.php?q=$uri&$args;
          autoindex on;
  }

  error_page 404 /404.html;

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
          root /usr/share/nginx/html;
  }

  location ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
  }
}

Ajoutez les informations suivantes à ce fichier

+ upstream my_app_server{
+     #server unix:/tmp/gunicorn_my_app.sock fail_timeout=0;
+     server unix:/tmp/gunicorn_my_app.sock;
+ }

server {
  listen 80 default_server;

  root /var/www;
  index index.php index.html index.htm;

  location / {
          try_files $uri $uri/ /index.php?q=$uri&$args;
          autoindex on;
  }

  error_page 404 /404.html;

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
          root /usr/share/nginx/html;
  }

  location ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
  }

  + location /sample { 
  +         try_files $uri @my_app;
  + }
  + 
  + location @my_app {
  + 
  +         proxy_set_header Host $host;
  +         proxy_set_header X-Real-IP $remote_addr;
  +         proxy_redirect off;
  +     
  +         proxy_pass http://my_app_server;
  + }

}

Redémarrez une fois

$ sudo service nginx restart

Après avoir redémarré et démarré Gunicorn, vérifiez s'il est accessible correctement.

Supervisor

Supervisor ** fait d'un processus un démon **. Installez avec le gestionnaire de packages de chaque distribution.

Fichier de configuration: / etc / supervisor / conf.d / my_app.conf

[program:my_app]
command = /home/***/.pyenv/shims/gunicorn sample:app --config /var/www/apps/sampleapp/guniconf.py
directory = /var/www/apps/sampleapp/
user = root 

Ecrivez des commandes gunicorn avec ** chemin absolu **. Veuillez réécrire chaque

Vous devez charger le fichier de configuration dans supervisor.

$ supervisorctl reread
$ supervisorctl update
$ supervisorctl start my_app

Cela devrait fonctionner pour le moment! !!

Recommended Posts

Flacon + Gunicorn + Nginx + Supervisor jusqu'à ce que cela fonctionne
Jusqu'à ce que cela fonctionne avec virtualenv + flask + apache + wsgi
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
Utilisation de Flask avec la configuration Nginx + gunicorn [Environnement local]
[Avec diagramme d'image] Nginx + gunicorn + Flask converti en Docker [Partie 2]
[Avec diagramme d'image] Nginx + gunicorn + Flask converti en Docker [Partie 1]
Déployer l'application Django sur EC2 avec Nginx + Gunicorn + Supervisor
Jusqu'à Hello World avec Flask + uWSGI + Nginx @ Sakura's VPS (CentOS 6.6)