Raspberry Pi & Nginx サーバに uWSGI の追加
お父ちゃんから「サーバでPythonを動かしたい」との依頼があったので、
Raspberry Pi で運用中の Nginxサーバに uWSGIをインストールしました。
久々にupdate
1 2 |
sudo apt-get update apt-get upgrade |
目次
uWSGI のインストール
1 |
sudo pip install uwsgi |
Nginxの設定変更
Nginx 設定ファイルに設定の追加
1 2 3 4 |
location /uwsgi(動かすパス)/ { include uwsgi_params; uwsgi_pass 127.0.0.1:3031; } |
nginxの再起動
1 |
sudo service nginx restart |
uWSGI の設定
Nginx で設定した、サーバ上のuwsgiを動かすディレクトリを作成し、
uwsgi.ini と index.py を作成する。
uwsgi.ini
1 2 3 4 |
[uwsgi] socket = 127.0.0.1:3031 chdir = /var/www/html/PATH/ wsgi-file =/var/www/html/PATH/index.py |
PATH は 、サーバ上のuwsgiを動かすディレクトリ(現在のディレクトリをフルパスで)
index.py
1 2 3 |
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] |
uWSGI の起動
作成したディレクトリに移動し、設定ファイルを読み込んでuWSGIの起動
1 2 |
cd /PATH/ uwsgi --ini uwsgi.ini |
ブラウザでアクセスすると、「Hello World」が表示された。
嵌った所
1.Nginxのエラー
uWSGI とは関係無かったのだけど、Nginx の再起動で何故か急にエラーが出た。
apt-get upgrade したらファイルの場所が変わった??と思ったら下記の設定してたの忘れてた。
/usr/local/nginx/ に変更したのが、/etc/nginx/ に戻ってしまったようで、設定ファイルのエラーが出てしまった。
とりあえず今は モジュールを使っていないのでデフォルトの /etc/nginx/ に戻すことにした。
設定ファイルをバックアップ&コピーしたら無事再起動出来た。
1 2 3 4 5 |
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf_bk sudo cp -r /usr/local/nginx/conf.d /etc/nginx/conf.d_bk sudo cp /usr/local/nginx/conf/nginx.conf /etc/nginx/nginx.conf sudo cp /usr/local/nginx/conf.d/*/etc/nginx/conf.d/ |
2. Internal Server Error
uwsgi を起動して index.py にアクセスするも、「Internal Server Error」と表示されて困った。
404 Not Found ではないので一応動いてはいる。
index.py と uwsgi.ini を色々変更して試して、uwsgi.ini にフルパスの追加をしたところ、 Hello World が表示された。
1 2 |
chdir =/var/www/html/PATH/ wsgi-file =/var/www/html/PATH/index.py |
が、ちょっとわからないのが、今は上記の設定を外しても Internal Server Error にならない。(キャッシュ?)