見出し画像

初めてのNGINX UNIT。

はじめに

ハローワールド!マイクです。
 Python+FLASKを勉強している今日この頃です。Pythonのアプリケーションサーバは何種類かあるようですが、ウェブサーバをNGINXにしたいと思っているので今回はNGINX UNITをセットアップしてみました。そのときの記録です。

今回の環境です

Python 3.10.6
Ubuntu Server 20.04 
NGINX UNIT 1.29.0

まずはインストール

 公式ドキュメントどおりに操作したら普通にインストールできました。

1.鍵をダウンロードします。これがないとパッケージをインストールするときにWARNINGがでるようです。

sudo curl --output /usr/share/keyrings/nginx-keyring.gpg
https://unit.nginx.org/keys/nginx-keyring.gpg

2.NGINX UNITのリポジトリを追加します。
/etc/apt/source.list.d/unit.listというファイルを作成して、

debとdeb-srcから始まる行を追加して保存します。Ubuntuのバージョンによって書く内容が違いますので注意が必要です。

deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ jammy unit

deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ jammy unit

3.Ubuntuのパッケージを更新しておきます。

sudo apt update
sudo apt upgrade

4.いよいよNGINX UNITのインストールです。

sudo apt install unit

5.言語パッケージを追加します。今回はPythonしかインストールしていません。unit_devってなんとなく必要そうに見えたので入れてあります。この人が何者なのか判明したら追記したいと思います。w

sudo apt install unit-dev unit-python3.10

6.NGINX UNITを再起動します。再起動することで、言語パッケージを入れたときの変更が反映されるそうです。
再起動が完了したらNGINX UNITのインストールは完了です。

sudo systemctl restart unit

Pythonのサンプルアプリを追加してみましょう。

 NGINX UNITはcurlコマンドをつかってアプリを登録するようです。登録するアプリの定義はjson形式で書きます。
サンプルがありましたので、test_appというディレクトリを作成して、ここを作業ディレクトリにしました。
 今回サンプルコードは上手に追加したり削除したりできたのですが、自分で作成したアプリは登録でエラーになってしまい、原因の調査をしています。原因が分かり次第、記事を書きたいと思っています。
追伸:どうも自分で作成したアプリが登録できない理由には.pyファイルと設定ファイル、.pyファイルの設置場所に関係があったようです。Flaskを追加したときに解決できましたので、参考までにそちらの記事もどうぞ。

1.サンプルの定義ファイル(unit.config)をコピーしてきました。

sudo cp /usr/share/doc/unit-python3.10/examples/unit.config ./

unit.configの中身はこんな感じです。pathの先にmoduleが無いと登録の際にエラーになるそうなので、moduleも確認しておきます。

wsgi.pyの中身はこんな感じです。

2.PUTコマンドでアプリケーションを追加します。

sudo curl -X PUT --data-binary @unit.config --unix-socket /var/run/control.unit.sock http://localhost/config

3.アプリケーションを呼んでみましょう。動きました。w

4.NGINX UNITに登録済みのアプリとリスナーを確認します。上で登録したアプリのそのアプリのリスナーが見えます。

sudo curl --unix-socket /var/run/control.unit.sock http://localhost

サンプルアプリを削除してみましょう。

1.リスナーから削除します。アプリを先に消そうとしたらエラーが発生しました。

sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/config/listeners/*:8400/

sudo curl --unix-socket /var/run/control.unit.sock http://localhost

2.次にアプリを削除します。これで、今NGINX UNITにはアプリは登録されていません。

sudo curl -X DELETE --unix-socket /var/run/control.unit.sock http://localhost/config/applications/example_python

sudo curl --unix-socket /var/run/control.unit.sock http://localhost

最後に

 お疲れ様でした。以上がNGINX UNITのインストールとアプリの追加・削除の方法でした。
アプリを登録するときに使う定義ファイルを、もう一度見ておきましょう。

次回はここの環境にFLASKを入れてみたいと思います。最後まで読んで頂きありがとうございます。

参考

履歴

2023年02月12日:投稿


いいなと思ったら応援しよう!