基本的な流れ
Tornadoでの開発開始までのセットアップは通常以下のような流れになります。
- 仮想環境の構築(必要な場合)
- パッケージのインストール
- アプリケーションファイルの設置
- サーバー起動スクリプトの作成
- サーバーのデーモン化
パッケージの導入は以下のようなコマンド操作の流れを実行します。(下の例では仮想環境を .venv
に導入)
仮想環境の導入と有効化
$ python -m venv .venv
$ source .venv/bin/activate
仮想環境でのTornadoの導入
(.venv)$ pip install tornado
これでTornadoの導入は終了です。ちなみに、仮想環境から抜ける場合は、コマンドラインで deactivate
を実行します。
DeracioTSS
DeracioTSSはTornadoでのアプリケーション開発のセットアップの中で、アプリケーションファイルの設置からサーバーの起動用シェルスクリプトの作成までを対話式CLIで自動化し、サーバーのデーモン化に必要な .service
ファイルの作成までを行います。
インストール
スクリプトファイル tss.py
をGitHubからダウンロードします。
wget https://raw.githubusercontent.com/DERaC-IO/DeracioTSS/f6691d177de800434593cb336f102c1181c73439/tss.py
次に、スクリプトの実行には subprocess
と questionary
が必要になるので、それらを仮想環境に導入します。
(.venv)$ pip install subprocess questionary
必要なライブラリの導入が完了したあと tss.py
を実行します。
(.venv)$ python tss.py
正常に起動すれば、以下のようなバナーが現れるはずです。
_____ ______ __ __
/ ) , / / ) / )
---/----/----__---)__----__----__--------__---/-------\--------\-----
/ / /___) / ) / ) / ' / / ) / \ \
_/____/___(___ _/_____(___(_(___ _/___(___/_/______(____/___(____/___
Tornado Startup Script v1.0.0
Copyright (c) 2023 DERaC, LLC.
MIT License
? Starting a new project?
対話式プロセス
CLIアプリケーションは、アプリケーションを実行したディレクトリ <PROJECR_ROOT>
の中に、対話式で以下のファイルとフォルダを生成します。(ファイル・フォルダ名はデフォルト)
<PROJECR_ROOT>
│
├─ app.py (Tornadoアプリケーション)
│
├─ server.sh (サーバー起動シェルスクリプト)
│
├─ tornadod.service (システムデーモンファイル)
│
├─ templates (テンプレートフォルダ)
│ │
│ └─ index.html (トップページ)
│
└─ static (静的ファイルフォルダ)
このプロセスの中で、以下の質問があるので、順番に答えていきます。(パスなどは自動的に推測されて表示されます)
- プロジェクト名
- テンプレート名
- 静的ファイルフォルダ名
- 起動するポート番号
- アプリケーションファイル名
-
python3
へのパス - 使用するシェルの種類
- シェルへのパス
- サーバー起動シェルスクリプトファイル名
- サーバー起動シェルスクリプトのパーミッション
- システムデーモンファイル名
- デーモン化するシステムの説明(名称)
- サーバー起動シェルスクリプトがあるディレクトリへのパス
- サーバー起動シェルスクリプトへのパス
- デーモンを起動するユーザー名
- デーモンを起動するグループ名
- システムデーモンファイルのパーミッション
デーモン化
対話式でのプロセスが完了したら、システムデーモンファイルをシステムデーモンが認識できるフォルダ(この例では /etc/systemd/system/
)に移動させて起動します。( daemon-reload
を忘れずに)
$ sudo mv tornadod.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl start tornadod
正常に起動したら、以下のコマンドで自動的に起動できるようにします。( --now
オプションは自動起動の設定と同時にシステムを起動させる場合に付与)
$ sudo systemctl enable tornadod --now
起動が成功したら、localhost:8000
などにアクセスすれば、下のようなページが表示されるはずです。(プロキシの設定などは別トピックなのでここでは省きます)
これでTornadoアプリケーションの開発準備が整いました。 tss.py
が導入済みの環境ではTornado開発初心者の開発者でも10分以内で起動できると思います!