私の最初の投稿で、PythonとApacheの両方に慣れていないので、気楽にやってください。コンダ環境にPython Webアプリケーションがあります。これはFlaskを使用してコンテンツを問題なく提供します。FlaskではなくApacheですべてを提供する必要があります。Apacheをmod_wsgiで実行させることができますPython、ただしvirtualenvでのみ。virtualenvをインストールしてみましたアナコンダですが、そのような設定はサポートされておらず、推奨されないという警告を受け取りました。私の質問は次のとおりです。
Conda環境でアプリケーションを実行するようにApacheを設定するにはどうすればよいですか?
ここ 、仮想環境での作業に関するセクションがあり、Activate_this.pyの場所を示す行をwsgiファイルに入力する必要があると書かれています。 virtualenv仮想環境にはactivate_this.pyがありますが、conda環境にはありません。仮想環境をアクティブ化するための正しい手順がないと、ブラウザにエラー500が表示され、httpderror_logに「インポートエラー:flaskという名前のモジュールがありません」というエラーが表示されるようです。
これは私のhttpd.confファイルにあります:
<VirtualHost *:80>
DocumentRoot /var/www
WSGIScriptAlias / var/www/tsm.wsgi
<Directory /var/www/tsm>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
そしてここにtsm.wsgiがあります:
import sys
import site
site.addsitedir('~/.conda/envs/tsm/lib/python2.7/site-packages')
sys.path.insert(0, '/var/www/tsm/server/time_series_machine')
sys.stdout = sys.stderr
from app import app as application
何か案は?あなたが提供できるどんな助けにも感謝します。
私はこれについてパーティーに遅れましたが、私は同じ問題を抱えていました。その価値のために、私は何も再コンパイルする必要はなく、システムにインストールされたmod_wsgiを使用してVirtualHost構成に次のようなものを含めることでこれを機能させることができました:
WSGIDaemonProcess mysite python-path=/path/to/anaconda2/lib/python2.7/site-packages
これはsite-packages
ディレクトリを指していることに注意してください。
@dinoの回答に追加するには、ルートconda環境にmod_wsgi
をインストールすることもできます。
# Instal `mod_wsgi`
$ pip install mod_wsgi
# Find the full path to installed `mod_wsgi`
$ which mod_wsgi-express
# Install and register the `mod_wsgi` module with Apache
$ Sudo /full/path/to/installed/mod_wsgi-express install-module
次に、複数のサイトのconda環境を作成できます。
# Create 3 conda environments
conda create -n mysite1 python Django
conda create -n mysite2 python Django
conda create -n mysite3 python Django
そして、Apacheサイト構成ファイルでWSGIDaemonProcess
を設定して、各サイトに適切な環境を使用します。
# /etc/Apache2/sites-enabled/mysite1.conf
WSGIDaemonProcess mysite1 python-path=/path/to/anaconda3/envs/mysite1/lib/python3.5/site-packages
# /etc/Apache2/sites-enabled/mysite2.conf
WSGIDaemonProcess mysite2 python-path=/path/to/anaconda3/envs/mysite2/lib/python3.5/site-packages
# /etc/Apache2/sites-enabled/mysite3.conf
WSGIDaemonProcess mysite3 python-path=/path/to/anaconda3/envs/mysite3/lib/python3.5/site-packages
Mod_wsgiは、システムPythonではなく、Anaconda Pythonから開始する必要があります。つまり、システム提供のmod_wsgiパッケージを使用することはできませんが、自分でコンパイルする必要があります。それはで言います:
つまり、デーモンモードを使用し、python-home
オプションをWSGIDaemonProcess
に使用します。
Anaconda Pythonが何らかの方法で壊れており、Pythonを組み込みたいシステムでは機能しないことを示唆する報告があることに注意してください。したがって、とにかく機能しない可能性があります。
ところで、WSGIスクリプトファイルのパスで「〜」を使用することはできません。ホームディレクトリに展開されることはありません。しかし、その後、その投稿に従ってください。そうすれば、それは必要ありません。