cherrypy に trac を載せた話
どういうこと?
仕事では受託開発をしており、プロジェクトにより開発環境が変わるのでポータブルなツールを利用することを心がけています。
最近は作業の管理に Issue Tracking System を利用しているのだが、(客先でのセキュリティポリシーなどの話もあり)外部のサービスは利用できません。
世間的には ITS としては Redmine が有力だと思うのですが、別途 DB が必要だったり機能が多すぎたりするので、最近勢いはないですが Python だけあれば利用できる Trac を使っています。
私が Ruby(on Rails) より Python が好きというのも大きいですが
いつもは、組み込みの Web サーバである tracd を利用しているのですが、 WSGI サーバである CherryPy を利用する場合についてまとめておきます。
プロジェクトをデプロイする
> trac-admin path\to\trac_project deploy path\to\deploy
上記のコマンドを実行すると、 path\to\deploy\cgi-bin\trac.wsgi
が生成されます。
trac.wsgi
を CherryPy から利用するために、 wsgi.py
にリネームしておきます。
CherryPy をインストールする
> pip install CherryPy
だけで OK です。
サーバスクリプトを作成する
以下のようにサーバスクリプトを作成しました。
- path\to\deploy\cgi-bin\server.py
# Import your application as: # from wsgi import application # Example: from wsgi import application # Import CherryPy import cherrypy if __name__ == '__main__': # Mount the application cherrypy.tree.graft(application, "/") # Unsubscribe the default server cherrypy.server.unsubscribe() # Instantiate a new server object server = cherrypy._cpserver.Server() # Configure the server object server.socket_host = "0.0.0.0" server.socket_port = 80 server.thread_pool = 30 # Subscribe this server server.subscribe() # Start the server engine (Option 1 *and* 2) cherrypy.engine.start() cherrypy.engine.block()
完全に公式のサンプルそのままです(笑)
CherryPy を利用したのは、更に Windows サービス化を行うための前フリだったりします。
Windows サービス化については後日まとめます。