ツイストをルートとして実行していますが、モジュールが見つかりません

StackOverflow https://stackoverflow.com/questions/1807484

  •  05-07-2019
  •  | 
  •  

質問

Twistedで書かれたシンプルなWebサーバーがあり、 twistd でデーモン化して起動しようとしています。すべてが reactor.run()で正常に動作しますが、として twistd -y を使用すると、直接の子ディレクトリにあるパッケージが見つかりません。サーバーがポート80で実行されているため、rootとしてtwistdを実行しています。 twistdのマンページのコメント:

twistdがルートとして実行される場合、作業ディレクトリではPythonモジュールが検索されないことに注意してください。

それは素晴らしいですが、なぜですか?そして、どうすれば回避できますか? twistdは、オプションを明示的に設定しても、-rundir。を無視しているようです。

役に立ちましたか?

解決

一般的なUNIXの知恵は、rootが悪い考えであるときに実行するものを作業ディレクトリで検索することです。議論は、トロイの木馬への扉を開くということです。 rootとして実行しているときにPythonモジュールのインポート検索パスに作業ディレクトリを追加しないために、twistdは基本的にこの知恵に従っています。

別のコメンターが言ったように、PYTHONPATHを自分で明示的に設定して、アプリに必要なコードを含むディレクトリを含めることができます。

また、rootとしての実行を完全にスキップし、 authbind を使用して、スーパーユーザー権限なしで小さい番号のポートをバインドすることもできます。これにより、すべてのサーバーがデプロイされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top