10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspberryPI で nginx + uwsgi 最小構成

Posted at

はじめに

今回は最小構成で nginx と uwsgi を raspberry pi 上で動かしたいと思います。
ブラウザから80番ポートで「http://(IP address)/uwsgi 」にアクセスして、「Hello World」 が表示できたら完成とします。

nginx の準備

まずは nginx を準備します。

インストール

apt-get で nginx インストールします。

 $ sudo apt-get install nginx

conf の設定

インストールが完了すると /etc/nginxディレクトリ作成されるので conf を作成していきます。
base と なる conf は /etc/nginx/nginx.conf となりますが、中を見てみると、下記のように include しているので、
include 先に conf ファイルを追加していきます。


include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

sites-enabled/default の無効化

今回は /etc/nginx/conf.dに conf を追加するのですが、 include /etc/nginx/sites-enabled/default という conf がすでに存在していたので、そちらを無効化しておきます。
sites-enabled の下には sites-available からの シンボリックリンクが貼られています。
このシンボリックシンクを削除することで、無効化します。


$ ls -al /etc/nginx/sites-enabled/default
lrwxrwxrwx 1 root root 34  3月  5 19:22 /etc/nginx/sites-enabled/default -> /etc/nginx/sites-available/default

$ sudo unlink /etc/nginx/sites-enabled/default

nginx の起動

それでは nginx を起動させてみます。


$ sudo /etc/init.d/nginx start
[ ok ] Starting nginx (via systemctl): nginx.service.

問題なく起動できたら、ブラウザから http://(IP address) にアクセスすると 「Welcome to nginx!」 と表示されます。
これで nginx は問題なく起動できました。

uwsgi の準備

次に uwsgi を 準備していきます。
公式のクイックスタートを参考にしていきたいと思います。

インストール

pip で uwsgi をインストールします。


$ sudo pip install uwsgi

application の用意

次に 「Hello World」と表示する application を用意します。
内容は公式にのっとって作成します。

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

試しに uwsgi 単体で起動

では、試しに uwsgi 単体で起動して、接続確認をして見ます。


$ uwsgi --http :9090 --wsgi-file /home/pi/web/foobar.py
*** Starting uWSGI 2.0.17 (32bit) on [Tue Mar  6 11:36:09 2018] ***

起動できたら、ブラウザから http://(IP address):9090 にアクセスすると、「Hello World」が表示されました。
これで uwsgi も単体で問題なく動作することが確認できました。

nginx と uwsgi を繋げる

では、最後に nginx がリクエストを受け付けて、uwsgi に渡すように設定して行きます。

/etc/nginx/conf.d に conf の追加

では nginx に設定を追加するために、/etc/nginx/conf.d/default.confを作成します。
80番ポートで http://(IP address)/uwsgi にアクセスが来た時に、uwsgi にリクエストを渡すように location を設定します。

/etc/nginx/conf.d/default.conf
server {
    listen 80 default;
    server_name 127.0.0.1 localhost;

    location /uwsgi/ {
        include uwsgi_params;
        uwsgi_pass unix:/home/pi/web/web.sock;
    }
}

uwsgi.ini を追加

次に uwsgi にも設定を行うために、 /etc/uwsgi/uwsgi.iniを追加します。

/etc/uwsgi/uwsgi.ini
[uwsgi]
socket = /home/pi/web/web.sock
chmod-socket = 666
chdir = /home/pi/web/
wsgi-file = /home/pi/web/foobar.py

nginx と uwsgi を起動

conf の追加が完了したら、nginx と uwsgi を起動させてみます。

nginx の起動

$ sudo /etc/init.d/nginx start
[ ok ] Starting nginx (via systemctl): nginx.service.

uwsgi の起動
uwsgi は /etc/uwsgi/uwsgi.ini を指定して起動させます。

$ uwsgi /etc/uwsgi/uwsgi.ini
[uWSGI] getting INI configuration from /etc/uwsgi/uwsgi.ini
*** Starting uWSGI 2.0.17 (32bit) on [Tue Mar  6 11:48:44 2018] ***

ブラウザから確認

それでは、ブラウザから http://(IP address)/uwsgiにアクセスして見ます。
そうすると 「Hello World」 が表示されました。

ログの確認

念のためログも確認して見ます。

nginx

nginx は access.log を確認してみると ログが確認できます。

$ tail -f /var/log/nginx/access.log
172.00.0.100 - - [06/Mar/2018:11:51:43 +0900] "GET /uwsgi/ HTTP/1.1" 200 42 "-" "... 

uwsgi

uwsgi は先ほど起動させた画面に直接ログが出ています。

[pid: 7451|app: 0|req: 1/1]172.00.0.100 () {40 vars in 701 bytes} [Tue Mar  6 11:51:43 2018] GET /uwsgi/ => generated 11 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (2 switches on core 0)

これで nginx + uwsgi の最小構成の完成です。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?