JavaScript が無効になっているよ!

OpenLiteSpeed で Falcon を動かす

 ·  ☕ 2 分(読了時間)  ·  🐨 Puliyo

目的

Python で動作するウェブフレームワーク、Falcon。

最速と謳っている。

https://falcon.readthedocs.io/en/stable/index.html

WSGI 経由で実行することができる。

OpenLiteSpeed は WSGI に対応している。

OpenLiteSpeed で実行させちゃおう。

手順

1. lswsgi をインストール

lswsgi は要は、OpenLiteSpeed 版の WSGI 実行バイナリ。

下記リンクの手順に従い、“Install WSGI” まで完了させてしまう。

https://openlitespeed.org/kb/python-wsgi-applications/

lsws の技術情報ページは古い場合が多いのでここから最新の lswsgi をダウンロードしよう。

https://www.litespeedtech.com/open-source/litespeed-sapi/download

2. 仮想環境と Falcon のインストール

1
2
3
4
5
6
mkdir -p /srv/vhadm
mkdir /srv/vhadm/html
cd /srv/vhadm
python3 -m venv venv
source ./venv/bin/activate
pip install falcon

3. wsgi.py スクリプトを作成

OpenLiteSpeed は wsgi.py を探して実行する。(設定で別のファイルに指定可能)。

また、wsgi.py 内の application インスタンスを呼び出すので、wsgi ウェブインスタンスは application という名前で定義しておく。

1
2
cd /srv/vhadm/html
nano wsgi.py

wsgi.py の中身はこれ ↓

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import falcon

class ThingsResource(object):
        def on_get(self, req, resp):
                """Handles GET requests"""
                resp.status = falcon.HTTP_200
                resp.body = ('\nHello World\n')

application = falcon.API()
things = ThingsResource()
application.add_route('/things', things)

4. lswsgi を設定

lsws の管理コンソールにアクセス。

サーバーもしくは仮想ホスト、どちらでも設定可能。

今回は仮想ホスト (vhost) の vhost root を /srv/vhadm document root を /srv/vhadm/html に設定して構築。

vhost Basic タブ

“Enable Scripts/ExtApps” は enabled にしておく。

vhost basic tab

vhost General タブ

vhost general tab

vhost Context タブ

Context タブを開き、プラスのボタンを押し、App Server を選択して Next。

下記のように App Server を設定する:

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

変更を保存。

※ lsws 技術情報ページでは PYTHONPATH を Environment で指定しているがこれは無くてもいい。ちゃんと動く。

5. ファイルのパーミッションを確認

vhost Basic タブで External App Set UID Mode が Not Set になっているので lsws のユーザーでスクリプトが実行される。

lsws ユーザーがファイルを読めるようにパーミッションを変更しておく。

自分の場合、lsws ユーザーは www-lsws なので以下のように実行:

1
2
chgrp -R www-lsws /srv/vhadm/html
chmod -R 750 /srv/vhadm/html

6. listener を設定して lsws をリスタート

7. 実行テスト

上記 wsgi.py スクリプトは “/things” しか受け付けていないので、下記URLをたたく:

http://<ホスト名>:<ポート>/things

“Hello World” が表示されれば成功。

シェア
支援