Mitamaは、Webベースの社内システムを構築するためのPython製フレームワークです。
macOSから利用する場合、以下のライブラリを追加でインストールする必要があります。
- libmagic
MitamaはPythonパッケージとして開発されているので、pipでインストールすることができます。
$ pip install mitama
下記のコマンドでバージョンが出てきたら、インストール成功です。Mitamaデビューおめでとうございます。
$ mitama version
4.3.0
無事インストールができたら、「プロジェクト」を作成してみましょう。プロジェクトとは、Mitamaを稼働させる時の単位で、プロジェクトごとにユーザーや組織の情報が生成されたり、アプリをインストールすることができます。アプリ内で使用するデータやリソースファイルもプロジェクトのフォルダ内に生成・設置されます。
$ mitama new myfirstproject
$ ls myfirstproject
project.py
コマンドを叩くとディレクトリが作成され、中にproject.pyというファイルが置いてあると思います。
ローカルで試しにサーバーを起動してみましょう。
$ python project.py run
デフォルトでは8080番ポートにサーバーが起動しますので、ブラウザで開いてみてください。
uwsgiを使ってnginxなどで配信する場合は、次のような設定ファイルを作成し、起動します。
[uwsgi]
chdir=/path/to/project.py
socket=127.0.0.1:8080
master=true
vacuum=true
pidfile=/tmp/uwsgi.pid
module=project:application
$ uwsgi --ini /path/to/uwsgi.ini
project.pyを編集し、DatabaseManagerの引数に指定しているtypeを*"mysql"または"postgresql"*に変更してください。
## project.py
...
DatabaseManager({
"type":"mysql",
"host":"localhost",
"name":"mitama",
"user":"mitama",
"password":"mitama",
})
...
対応しているデータベースそれぞれに対応したDockerイメージが存在します。
- SQLite3: mitamaorg/mitama:latest
- MySQL: mitamaorg/mitama:latest-mysql
- PostgreSQL: mitamaorg/mitama:latest-postgresql
利用したいデータベース似合わせてイメージを選択してください。
また、これらのイメージは自動的にPoetryによる依存解決を試みますので、サードパーティ製のMitamaアプリケーションを利用する場合などはpyproject.tomlを設置しておくと良いかもしれません。
$ poetry init
$ poetry add izanami
$ ls
pyproject.toml poetry.lock project.py
プロジェクトが準備できたら、ディレクトリをコンテナの/projectにマウントして起動してください。
$ docker run -itd --name mitama_project \
-v "./:/project" \
-p 127.0.0.1:8080:80 \
mitamaorg/mitama:latest
docker-composeを使うと、データベースなどの接続が楽にできます。
version: "3"
services:
mitama:
image: mitamaorg/mitama:latest-mysql
ports:
- 8080:80
volumes:
- ./:/project
mysql:
image: mysql:latest
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=yes
- MYSQL_USER=mitama
- MYSQL_PASSWORD=mitama
- MYSQL_DATABASE=mitama
project.pyの中に設定を記述することで、自作、またはサードパーティ製のアプリケーションを配信できます。
以下のように*include("パッケージ名", path="配信先サブディレクトリ")*を記述してください。
## project.py
#!/usr/bin/python
import os
from mitama.project import Project, include
from mitama.db import DatabaseManager
project_dir = os.path.dirname(os.path.abspath(__file__))
DatabaseManager({
"type":"sqlite",
"path": project_dir+'/db.sqlite3',
})
project = Project(
include("mitama.portal", path="/"),
include("thirdpartyapp", path="/thirdpartyapp"),
project_dir = project_dir
)
application = project.wsgi
if __name__ == "__main__":
project.command()
自作のアプリケーションの場合、project.pyと同じディレクトリにPythonパッケージを設置することでもインストールが可能です。
.
├── madebyme/
├── db.sqlite3
└── project.py
## project.py
#!/usr/bin/python
import os
from mitama.project import Project, include
from mitama.db import DatabaseManager
project_dir = os.path.dirname(os.path.abspath(__file__))
DatabaseManager({
"type":"sqlite",
"path": project_dir+'/db.sqlite3',
})
project = Project(
include("mitama.portal", path="/"),
include("madebyme", path="/"),
project_dir = project_dir
)
application = project.wsgi
if __name__ == "__main__":
project.command()
リファレンス、アプリ作成、その他詳細は公式ドキュメントをご参照ください。
- Seisuke Ito様
MIT License