初めての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日:投稿