2016-12-19 13 views
3

私のLEDライトストリップのコントロールを持つラズベリーパイのフラスコウェブアプリをホストします。 rootユーザーとしてpythonを使用してサーバーを稼働させるとすばらしいことですが、Apache mod_wsgiを使用してサーバーを展開するのは難しいです。私はhtttpsを使用したいので、それを配備する必要があるようですが、Apacheはroot権限でサーバを稼働させることができないようです。フラスコサーバーにインポートされたライブラリを介してライトを制御するには、ルートが必要です。ルート特権を持つフラスコアプリのデプロイ

フラスコサーバーをルート特権で展開する方法はありますか?そうでない場合は、展開せずにhttps(letsencrypt.orgから)を使用することは可能ですか?この問題を回避する他の方法はありますか?

答えて

2

セキュリティ上の理由から、Webサーバーをrootとして実行しません。

その代わり、私がすることをお勧め:

  1. の/ etc/sudoersファイルにWebユーザを追加 - パスワードなし。理想的には、rootとして実行したいコマンドだけを許可してください。
  2. は、あなたがRPMにこれをパッケージ化している場合、私は/etc/sudoers.d/youpackage

    にsudoの定義をかけることになり、

あなたが言及[コマンド]展開をsudoを使ってコマンドを実行します。

もう1つの選択肢は、アプリケーションを分割して、データベーステーブルに行を入れたり、rabbit mqなどのメッセージングサーバーを使用してメッセージングシステムを使用することです(他のサーバーもありますが、 。ルートとして実行されている別のプロセスは、実際のライトのオン/オフを行います。フロントエンドは単に「消灯」のようなメッセージを送信し、ルートとして実行されている他のプロセスには必要なときにメッセージが表示されます。この方法の利点は、Webプロセスにroot権限がないことと、穴があっても損傷が限られていることです。

+0

"sudo [コマンド]でコマンドを実行する"と言うときは、サブプロセス呼び出しでライトコントロールを行うか、またはsudoでサーバーを起動する必要がありますか? – Xergiok

+0

rootとして何をする必要があるのか​​分かりません - 私はコマンド/シェルスクリプトを呼び出していると仮定しました。セキュリティ上の理由からWebサーバーをrootとして使用したくない。もう1つの選択肢は、アプリを分割して、何らかのメッセージング(データベーステーブルまたはrabbit mqのようなメッセージングサーバー)を使用し、他のプロセスをルートとして実行することです。あなたのフロントエンドは単に "消灯"のようなメッセージを送り、他のプロセスはそれを受け取るでしょう –

+0

私は/ dev/memへのアクセスが必要なpython LEDライブラリを持っています。通常、私はそれをインポートして使用しますが、それはサーバー全体をrootとして実行する必要があります。ライト側からウェブ側を分離するという考えは論理的だと思います。私はプロセス間通信を研究します。ありがとう! – Xergiok

関連する問題