OpenLiteSpeed+Flaskをしてみる

Python
この記事は約5分で読めます。

以前、

これらの記事を投稿しました。

今回は、これらを組み合わせ、OpenLiteSpeedでFlaskを使えるようにしていきたいと思います。

(FastAPIはUvicornじゃないと動かないっぽいのでFlaskにしました。)

この記事が向いている人

  • OpenLiteSpeedを使っている人
  • PythonでAPIを作ってみたい人

用意するもの

  • Ubuntu / Debian
  • インストール済みOpenLiteSpeed(インストール方法はこちらから)
  • Python3環境(3.5以上、pip)

実際にやってみる

必要なライブラリのインストール

sudo apt install build-essential
sudo apt-get install python3-dev

Pythonの拡張機能を構築するためのものをインストールします。

WSGIをインストール

Pythonのプログラムとリクエストの橋渡し的なものですね。

curl -O http://www.litespeedtech.com/packages/lsapi/wsgi-lsapi-2.1.tgz
tar xf wsgi-lsapi-2.1.tgz
cd wsgi-lsapi-2.1
python3 ./configure.py
make
cp lswsgi /usr/local/lsws/fcgi-bin/

今回、筆者のPythonのバージョンが3.10だったためwsgi-lsapi-2.1をインストールしましたが、ここは環境によりけりなのでご自分で調整してください。

このリリースノートを見ながら行いましょう。

仮想ホストを作る

[WebAdmin] > [仮想ホスト] を開き、[追加] をクリック。

そして以下のように入力していきます。

「スクリプト/外部アプリを有効にする」を有効にしないと使えませんのでご注意ください。

そして [コンテキスト] タブに移動&以下のように設定

URI = /
Location = $DOC_ROOT
Binary Path = <lswsgiまでのパス>  (/usr/local/lsws/fcgi-bin/lswsgi)
Application Type = WSGI
(Environment = LS_PYTHONBIN=/srv/vhadm/venv/bin/python)

最終的には以下のようになります。

リスナーの作成

省略します。

Pythonファイル作成

まず仮想環境をセットアップします。

$DOC_ROOTに入った状態で作業してください。

virtualenv -p python3 venv
source venv/bin/activate
which python

このコードでPythonのパスが$DOC_ROOT以降になっていたらOKです。

この状態でFlaskをインストール

pip install flask

次に、$DOC_ROOTwsgi.pyを作成します。

#!<自分のドキュメントルートのパス>/env python
import sys

sys.path.insert(0, '<自分のドキュメントルートのパス>')

from app import app as application

また、$DOC_ROOT/appには、__init__.pyを作成

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello Flask!"

これでライブラリとして読み込めるようにします。

その後所有権の変更

sudo chown -R nobody:nogroup <ドキュメントルートパス>

これで完了です。

アクセス

<IPアドレス>:<ポート>にアクセスしてみてください。

成功すると、Hello Flask!が表示されるはずです。

もしそうならない場合はサーバーの再起動などをしてみてください。(あとPythonのログの確認とか)

おわりに

いかがでしたでしょうか?

だらだらと書いてしまいすみません。

途中から何をしているのかわからなくなってきたためどこかおかしいところがあると思います。

疑問に思ったところがありましたらコメントでお教えください。

それでは快適なFlaskライフを!

さよなら~

参考にさせていただいた記事

Python LSAPI | Application Server | Configuration | OpenLiteSpeed Documentation | OpenLiteSpeed Documentation
Using Python WSGI Apps with LSAPI and OpenLiteSpeed
OpenLiteSpeed で Falcon を動かす
OpenLiteSpeed を使い、Python ウェブフレームワーク Falcon を 仮想環境 (virtualenv) 内で動かす方法を紹介

コメント

タイトルとURLをコピーしました