On this page |
概要
スタジオにセントラルヘルプサーバーをセットアップすれば、マシン毎に各Houdiniが各自のヘルプサーバーを実行させることなく、 複数のHoudiniユーザーにヘルプを提供することができるようになります。 これは、ユーザー間のサイト固有のドキュメントを共有するのに役立ちます。
wikiマークアップリファレンス, アセットのドキュメントを作成する方法, サンプルファイルを作成する方法も参照してください。
Warning
デフォルトのサーバーセットアップではhou
パッケージをインポートします。つまり、Houdini外でヘルプサーバーを実行させるとバッチライセンスが使用されます。
この回避策に関しては、以下のバッチライセンスを使用しない方法を参照してください。
コマンドライン
-
Houdiniシェルを開きます。
Windows
スタート ▸ すべてのプログラム ▸ Side Effects Software ▸ Houdini X.X.XXX ▸ Utilities ▸ Command line tools をクリックします。
Mac
ファインダーから Applications ▸ Houdini ▸ HoudiniX.X.X ▸ Utilities ▸ Houdini Terminal を開きます。
Linux
bash
シェルで、cd
でHoudiniインストールディレクトリに移動し、source houdini_setup
をタイプします。 -
Houdiniシェルで、以下をタイプします:
hhelp serve --bgindex=true
これは、バックグラウンドのインデックス化を有効にしてヘルプサーバーを立ち上げます。
-
ブラウザを開いて、以下のURLにアクセスします。
http://localhost:8080/
hhelp serve
--host=0.0.0.0
サーバーのIPアドレス。
-
コンピューターに複数のネットワークコントローラーがあれば、ヘルプサーバーにListenさせたいアドレスを指定することができます。
-
ヘルプサーバーを他のコンピュータから利用可能にするには、
0.0.0.0
(デフォルト)を使用します。 -
ヘルプサーバーをあなたのコンピュータでのみ利用可能にするには、
localhost
または127.0.0.1
を使用します。
--port=8080
サーバーのポート番号。デフォルトは8080
です。
--debug
情報のデバッグを有効にして、サーバーを実行します。
--bgindex
サーバーが実行中にバックグラウンドで変更のあったドキュメントのインデックスを再生成します。
--config=path
(オプション) コンフィグオプションを読み込むファイル。
--logfile=path
(オプション) サーバーログの書き出し先のファイル。
--loglevel=DEBUG|INFO|WARNING|ERROR
(オプション) この重要度レベルでメッセージをログにします。
hhelp index
このコマンドは、手動で検索インデックスを更新します(--bgindex
オプションでサーバーを実行していない場合)。デフォルトでは、このコマンドは--clean
オプションを指定しない限り、変更のあったファイルのみを更新します。
--clean
ドキュメントの変更の有無に関わらず、ゼロからすべてのドキュメントのインデックスを再生成します。
--usages
サンプルファイルで使用されているノードに関する情報を生成します。
--config=path
(オプション) コンフィグオプションを読み込むファイル。
--logfile=path
(オプション) サーバーログの書き出し先のファイル。
--loglevel=DEBUG|INFO|WARNING|ERROR
(オプション) この重要度レベルでメッセージをログにします。
Pythonによる実行
PYTHONPATH
にHoudiniのPythonライブラリがあれば、アプリケーションサーバー(例えば、ModWSGIを使ったApache)で使用するためのHoudini WSGIアプリケーションを取得することができます:
from houdinihelp.server import get_houdini_app wsgi_app = get_houdini_app( config_file=None, # コンフィグファイルまでの文字列パス use_houdini_path=True, # 以下を参照してください log_file=None, # Noneでない場合は、デフォルトのログファイルパスが上書きされます log_level=None # Noneでない場合は、デフォルトのログレベルが上書きされます )
代わりにビルトインのサーバーを実行させるには:
from houdinihelp.server import start_server start_server( host="0.0.0.0", # Listenするネットワークインターフェース port=48626, # Listenするポート debug=False, # サーバーをデバッグモードで実行させるかどうか bgindex=None , # バックグラウンドインデックスを行なうかどうか config_file=None, # コンフィグファイルまでの文字列パス use_houdini_path=True, # 以下を参照してください )
-
config_file
がNone
でuse_houdini_path
がTrue
の場合には、そのコードはhou
を使用して、Houdiniパスからconfig/Help/bookish.cfg
コンフィグファイルを検索します(以下のコンフィグを参照してください)。これはhou
がまだインポートされていない時にバッチライセンスを使用します。その引数にコンフィグファイルを指定していれば、このことについて心配する必要はありません。 -
bgindex
キーワード引数には、True
,False
,None
を指定することができます。None
は、設定ファイルの値を使用し、True
またはFalse
は、その設定を上書きするかどうかです。
あなたのサーバーからHoudiniドキュメントを配信する方法
あなたのサーバー上でWSGIアプリケーションを配信することができます。例えば、ApacheのModWSGIや、アプリケーションを実行するuWSGIのインスタンスをリバースプロキシにすることで、アプリケーションを配信することができます。
コンフィグ
-
hhelp
コマンドラインユーティリティの--config
オプションを使用したり、またはコードにhoudinihelp.server.get_houdini_app
やhoudinihelp.server.start_server
のconfig_file
パラメータを使用することで、コンフィグファイルを指定することができます。 -
コンフィグファイルを指定せず、且つ
HOUDINIPATH/config/Help/bookish.cfg
が存在する場合、サーバーは、(use_houdini_path=False
を渡さない限り)それを読み込みます。 -
ヘルプサーバーはFlaskをベースにしており、Flaskのコンフィグファイルは実際にはPythonです。
例えば、$HOME/myfiles
にあるファイルのディレクトリを追加するには、コンフィグファイルに以下のコードを配置します:
EXTRA_DOCUMENTS = ["$HOME/myfiles/"]
いくつか役立つコンフィグキーは、以下を参照してください。
役立つコンフィグキー
DOCUMENTS = [...]
デフォルトのドキュメントソースのリストには、Houdiniパスのhelp
ディレクトリと、アセットとシェルフツールの内部からヘルプを読むことができる特別なソースが含まれています。
このリストをあなたのディレクトリ のみ を提供したディレクトリパスのリストに置換することができます。例:
DOCUMENTS = ["/my/dir"]
コンフィグファイル内のこのリストを置換ではなく拡張させることができますが、その場合はEXTRA_DOCUMENTS
を使用した方が簡単です(以下参照)。
EXTRA_DOCUMENTS = []
DOCUMENTS
のデフォルトのリストに追加する"余分な"ドキュメントソースのリスト。これはデフォルトのリストだけでなく、さらにディレクトリを追加したい時に役立ちます。
(デフォルトのリストにはHOUDINIPATH/help
が含まれているので、Houdiniパスを拡張することで同じ事ができます。)
EXTRA_DOCUMENTS = ["/my/dir"]
ENABLE_BACKGROUND_INDEXING = False
変更のあった内容のインデックスを再生成するためのスレッドをバックグラウンドで実行させるかどうか。これは、コマンドラインの--bgindex
オプションで上書きされます。
BACKGROUND_INDEXING_INTERVAL = 60
バックグラウンドインデックスが有効な時に、インデックスを再生成する間隔の秒数。
EXTRA_SHORTCUTS = []
検索ショートカットを参照してください。
CACHE_DIR = "$HOUDINI_USER_PREF_DIR/config/Help"
Wikiソースファイルから生成された.json
ファイルをサーバーがキャッシュ化する場所。
INDEX_DIR = "$HFS/houdini/config/Help/index"
検索インデックスを含んだディレクトリ。
バッチライセンスを使用しないようにセントラルサーバーを設定する方法
デフォルトのサーバーは、次の特定の機能のためにhou
を使用します:
-
Houdiniパスのコンフィグファイルを検索します。
-
HOUDINIPATH/help
, ノード, シェルフツールを、ドキュメントソースのリストに追加します。 -
サンプルファイルをインデックス化します。
サーバーがバッチライセンスを使用しないようにするには、次のことをする必要があります:
-
サーバー用のコンフィグファイルを作成します。
-
そのコンフィグファイルで、ドキュメントソースのデフォルトのリストを置換し、デフォルトの
PAGES_CLASS
コンフィグキーを変更します。 -
通常のPythonを使ってサーバーを実行するためのスクリプトを作成します(
hhelp
またはhython
を使ってサーバーを実行すると、自動的にhou
がインポートされてライセンスが使用されます)。
このコンフィグファイルを使用することで、hou
に依存した機能を無効にすることができます:
-
ノードの Help タブとシェルフツールからヘルプを読むことができなくなります。
-
opdef:
へのヘルプのリンクと参照が動作しなくなります。 -
サンプルファイルのインデックス化が動作しなくなります。
ライセンスを使用しないようにヘルプサーバーを実行する方法
以下の手順は、ヘルプサーバーを実行したいコンピュータ上にHoudiniがインストールされていることを想定しています。 技術的にはHoudiniから必要なファイルすべてをコピーすることができますが、このドキュメントの範囲を越えておりサポートしていません。 インストーラ(無料のAprrenticeでも可)を使った方が簡単で便利です。
-
(
$HFS
などの環境変数を利用可能にしたいので)Houdiniシェルからサーバーを実行します。Houdiniに同梱されているユーティリティからシェルを実行することで、Houdiniシェル環境が得られます。
Mac
Applications/Houdini/Current/Utilities/Houdini Terminal X.X.X
Windows
スタートメニュー > Side Effects Software > Command Line Tools X.X.X
Linux
cd
でHoudiniインストールディレクトリに移動し、source ./houdini_setup
を実行します。または、あなたの環境で
$HFS
変数を設定してください。 -
実行には以下のスクリプトを使用します。(
hython
ではなく ) 通常のPython 2.7 を使ってスクリプトを実行できることを忘れないでください。import argparse import sys from os.path import expandvars # HoudiniライブラリをPythonパスに追加します。 sys.path.append(expandvars("$HFS/houdini/python2.7libs")) # HoudiniのサードパーティPythonライブラリを追加します。 # 残念なことに、このパスはプラットフォーム依存です。 if sys.platform in ("linux", "linux2"): sys.path.append(expandvars("$HFS/python/lib/python2.7/site-packages-forced")) elif sys.platform == "darwin": sys.path.append( expandvars( "$HFS/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages-forced" ) ) elif sys.platform in ("win32", "win64"): sys.path.append(expandvars("$HFS/python27/lib/site-packages-forced")) from houdinihelp.hconfig import HoudiniAppConfig from houdinihelp.server import get_houdini_app class MyConfig(HoudiniAppConfig): # 供給させたいディレクトリ DOCUMENTS = [ # $HFS/houdini/help内の"ばらばらな"(ZIP圧縮されていない)ファイル expandvars("$HFS/houdini/help"), { # これは、$HFS/houdini/help内の.zipファイルから # ドキュメントを読み込めるようにします。 "type": "object", "classname": "bookish.stores.ZipTree", "args": { "dirpath": expandvars("$HFS/houdini/help"), } }, # これは、ユーザープリファレンスのhelpディレクトリ下にファイルを追加します。 expandvars("$HOUDINI_USER_PREF_DIR/help"), # サーバーに追加したい他のディレクトリ... "/my/dir", ] # ユーザープリファレンスディレクトリ内にキャッシュを格納します。 CACHE_DIR = expandvars("$HOUDINI_USER_PREF_DIR/config/Help") # 使用するフルテキストインデックス INDEX_DIR = expandvars("$HFS/houdini/config/Help/index") # houを使用しないページマネージャを指定します。 PAGES_CLASS = "houdinihelp.hpages.HoudiniPagesWithoutHou" if __name__ == "__main__": parser = argparse.ArgumentParser(description="Starts bookish help server") parser.add_argument("--host", metavar="HOSTNAME", default="0.0.0.0", help="IP address to serve on.") parser.add_argument("--port", metavar="NUM", type=int, default=8888, help="Port number to serve on.") parser.add_argument("--config", metavar="FILE", default=None, help="Configuration file to override defaults.") parser.add_argument("--log", metavar="FILE", default=None, help="File to output the log to.") parser.add_argument("--loglevel", default="INFO", help="The verbosity of the log: DEBUG, INFO, WARNING, or ERROR.") args = parser.parse_args() app = get_houdini_app( use_houdini_path=False, config_obj=MyConfig, config_file=args.config, logfile=args.log, loglevel=args.loglevel, debug=False, ) app.run(host=args.host, port=args.port, threaded=True)
(Pythonが
houdinihelp
をインポートできない旨のエラーが出た場合、Houdiniのライブラリのパスが正しいかチェックしてください。flask
をインポートできない旨のエラーが出た場合、サードパーティのライブラリのパスが正しいかチェックしてください。) -
スクリプトを実行後、ブラウザアプリケーション(例えば、ChromeやSafari)を開いて、
http://localhost:8888/
にアクセスしてみてください。 -
以下の単純なサンプルスクリプトは、コマンドライン上でホスト名とポート番号を設定することができますが、ディレクトリや他のオプションはハードコーディングで指定します。
必要に応じて、コマンドラインオプションからもっと多くのオプション(例えば、ホスト名やポート番号)を取得できるようにスクリプトを編集することができます(Pythonの
argparse
モジュールのドキュメントを参照してください)。コンフィグファイルを使うことでオプションを上書きすることもできます。例えば、コンフィグファイルの引数を使って上記のスクリプトを実行することができます:
python runserver.py --config /Users/matt/helpserver.cfg
そして、そのコンフィグファイルの中で、オプションを上書きすることができます:
EXTRA_DOCUMENTS = ["/path/to/my/help_dir/"]