kuroの覚え書き

96の個人的覚え書き

nginx+uWSGIでFlaskアプリをデプロイ

https://qiita.com/mykysyk@github/items/3ebbd5a787fdbefaf5e8
ここの情報に従ってまずは必要なものをインストールしていく。
ここまでのインストールでepelの部分は入っているようなので

yum install nginx --enablerepo=epel

flaskはすでに入れたので飛ばしてuwsgiのインストール

$ sudo yum install pcre-devel openssl-devel zlib-devel
$ sudo pip3 install uwsgi

ここでエラー発生。

      File "/tmp/pip-build-5grm6len/uwsgi/uwsgiconfig.py", line 742, in __init__
        raise Exception("you need a C compiler to build uWSGI")
    Exception: you need a C compiler to build uWSGI

Cコンパイラが必要だというもの。

$ sudo yum groupinstall "Development Tools"

これでインストールは無事に進行。


https://runble1.com/centos7-nginx-uwsgi-python/
このページによるとuWSGI単独でwebページを表示させることができるということなので、試してみる。

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

これをfoovar.pyという名前で作成

$ uwsgi --http :9090 --wsgi-file /home/kurotani/foovar.py

こんな感じに起動して、vnc上でlocalから127.0.0.1:9090にアクセスすると

なるほど。表示されるね。
気を良くして今度はnginxからuwsgiを通してpyページを表示させることに挑戦。
/etc/nginx/nginx.confを編集して

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
#include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

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

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
#    tcp_nopush          on;
#    tcp_nodelay         on;
    keepalive_timeout   65;
#    types_hash_max_size 2048;

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

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
	listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            include uwsgi_params;
            uwsgi_pass unix:///var/tmp/uwsgi.sock;
       }

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

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

このように。
で、

$ sudo systemctl start nginx.service
$ uwsgi --socket /var/tmp/uwsgi.sock --wsgi-file ./foovar.py --chmod-socket=666

このように起動してみたところ

あれえ?