wiki.zope.jp
ZopeStartup
RecentChanges
WikiHelp
WikiPractice
JumpSearch
Zopeの起動プロセス
2002/04/22
cheeseshop
- 大雑把かついい加減ですが、起動時にどのようなことをやっているか調べてみました。
z2.py
sys.pathに必要なパスを追加する
$SOFTWARE_HOME/lib/python、$SOFTWARE_HOME
Win32バイナリの場合、$SOFTWARE_HOME/bin/lib、$SOFTWARE_HOME/bin/lib/plat-win、$SOFTWARE_HOME/bin/lib/win32、$SOFTWARE_HOME/bin/lib/win32/lib
setcheckinterval(120)
hereにz2.pyの位置をセット
コマンドラインや環境変数からパラメータをセット
ロケールの設定
サーバとサーバマネージャとにforkする
サーバマネージャはサーバの正常/異常終了を待ち、再度プロセスを立ち上げる
ロガーを設定
Zopeパッケージ
ZODB、OFS.Application、AccessControlパッケージを取り込む
各プロダクトのインポート(初期化はまだ行わない)
PluginIndexes
?
を優先させる
ストレージの設定(custom_zodb、なければFileStorageを使う)
ストレージにClassFactoryをセット
AccessControl
?
でユーザ名systemにログインする
OFS.Applicationパッケージ
ZODBのキャッシュをクリア
次のオブジェクトがなければ作成
/Control_Panel
/Control_Panel/Products
/temp_folder
/temp_folder/session_data
/browser_id_manager
/session_data_manager
/Examples(※Zopeが最初にインストールされたときのみ)
Ownerロール、Authenticatedロールがなければ__ac_roles__に追加
Globalsをセット
/acl_users と inituser ファイルがあれば初期ユーザ(admin)を作る
各プロダクトのインストール
/misc_ にプロダクトと同じ名の属性をセット
Productオブジェクトの作成(initializeProductメソッド)
version.txtを読み込み、version属性値と変わっていれば初期化する
product.datファイルがあればそこからインポートする
importエラーメッセージがあればTracebackタブをセット
README.txtがあればREADMEタブをセット
refresh.txtがあればRefreshタブをセット
ZEOの場合、強制ロードがセットされていなければ ここまでのZODB操作を破棄する
__init__で定義したinitializeメソッドがあれば ProductContext
?
オブジェクトを渡して呼び出す
__ac_permissions__、meta_types、methodsがあれば それぞれ新しい属性スタイルに置き換える
standardオブジェクト(OFS/standard/以下)がなければ作成
/index_html
/standard_error_message
/standard_html_footer
/standard_html_header
/standard_template.pt
ZClass
の依存関係を調べ、クラスレジストリを再構築する
開発モードであればプロダクトの自動リフレッシュをセットする
AccessControl
?
でユーザ名systemからログオフする
MainモジュールをZopeモジュールとみなす
ZPublisher
のトランザクションマネージャを差し替える
ZPublisher
の検証メソッドにセキュリティマネージャをセット
Zopeのスレッド数を設定
DNS逆引きキャッシュを設定
asyncoreライブラリを使い、必要なサーバのインスタンスを作る
HTTPサーバ
WebDAV
サーバ
FTPサーバ
PCGIサーバ
FastCGI
サーバ
モニタサーバ(accessファイルがあるときだけ)
setuid/setgidする
Z2.pidファイルにプロセス番号を書き込む
ここまででエラーが発生していればサーバマネージャごと終了
asyncoreのメインループに入る
コメントをどうぞ
subtopics:
ClassFactory
Last edited Tue, 12 Sep 2006 11:48:54 +0900
Edit this page