2020年1月12日現在
VALUE-SERVERでPython
VALUE-SERVERではpython3が使用できる。
$ python3 --version
Python 3.6.8
VALUE-SERVERではapacheが動いていて、WSGIが使えない。
$ apachectl -M 2>/dev/null | grep wsgi
$
VALUE-SERVERではapacheが動いていて、CGIが使える。
$ apachectl -M 2>/dev/null | grep cgi
cgi_module (shared)
$
つまり、django、flask、bottleなどのPython向けWeb Frameworkを使いたい場合の選択肢は、CGIのみということ。
Webサーバとの接続では軽量な順に
言語独自I/F ≧ WSGI > FastCGI > CGI
だと思うので、I/Fとしては最重量。そこで今回は最も軽量なFrameworkであるbottleでのHello, World!をやってみる。
bottleでのHello, World!
python3ではvenvが標準装備なので、これを使って仮想環境を構築し、そこにpipでbottleを入れる。
ディレクトリ構成は以下な感じ。
~/ # ホーム
~/public_html/ #
~/public_html/domain/ # Webの公開ルートフォルダ
~/public_html/domain/cgi-bin # CGI実行するファイルを置くフォルダ
~/public_html/domain/cgi-bin/forcgi # venvで構築する仮想環境
venvによる仮想環境作成とbottleインストール
$ cd ~/public_html/domain/cgi-bin
$ python3 -m venv forcgi
$ . ./forcgi/bin/activate
(forcgi)$ pip install --upgrade pip
(forcgi)$ pip install bottle
(forcgi)$ deactivate
bottleを使ったhello, worldアプリをpythonで書く(拡張子はCGIなので.cgiにしてます)。
#!$HOMEの内容/public_html/domain/cgi-bin/forcgi/bin/python
from bottle import route, run
@route('/')
def hello():
return "Hello World!"
run(server='cgi')
シバンで、仮想環境のpythonを指定しているのが味噌で、こうしておくと、activateしなくてもpipで入れたパッケージをちゃんと見てくれます。
cgi-binディレクトリで、ちゃんとCGIが機能する設定を入れるため、.htaccessを書いておきます。
AddHandler cgi-script .cgi
これで、拡張子.cgiなパスはそのファイルで処理されます。後は先に作成したhello.cgiの実行権を与えればOK。
$ chmod u+x hello.cgi
このサーバにあるので、ConoHa VPSに引っ越したので、確認は/cgi-bin/hello.cgi/で出来ますせん。
ConoHa VPSで(WSGIですが)bottleを扱った記事は以下にあります。