3

Flask で構築した動的 Web サイトを実行する Amazon EC2 インスタンスがあります。

同じ ec2 インスタンスから異なる webapps を実行する最良の方法が何であるかはわかりません。ここでアプリケーションのディスパッチについて読みました: http://flask.pocoo.org/docs/patterns/appdispatch/および Apache2 仮想ホストについて: http://blog.agdunn.net/?p=162

メインのウェブサイト www.mydomain.com を ec2 インスタンス (これは既に動作しています) から実行してから、構築した他の Flask アプリ (www.subdomain.mydomain.com など) にリンクしたいと考えています。

これは、仮想ホストを使用するか、アプリケーション ディスパッチを使用して wsgi レイヤーで実行できますか? もしそうなら、どちらが良いですか?

いつものように、ヘルプとアドバイスは大歓迎です。

編集:返信ありがとう

今のところ、に保存されているフラスコアプリであるメインサイトをvar/www/mysiteメインドメインから実行しdomain.co.za、別のアプリをvar/www/flaskhello/flaskhelloサブドメインから実行しようとしていhello.domain.co.zaます。今のところ、テスト サブドメイン アプリは単なるフラスコの Hello World アプリです。以下に示すように、apache2 構成ファイルと wsgi ファイルをセットアップしました。

私が抱えている問題は、flaskello アプリが と の両方から表示されることdomain.co.zaですhello.domain.co.za。何らかの理由で、var/www/flaskhello/flaskhello/index.wsgiファイルが よりも優先されるようで、そこの行にvar/www/mysite/index.wsgi加えた変更のみが有効であるようです。sys.path.insert...

編集 2

これは、私がやろうとしていることと似ていますが、DJango を使用していますまだ成功していませんが、それがWSGIApplicationGroup %{GLOBAL}問題の原因であるかどうか疑問に思いました. これを少し変更してみましたが、何をしているのか完全にはわかりませんし、WSGI で ApplicationGroups を使用する方法に関する適切なドキュメントも見つかりません。

助けてくれてありがとう。

--

次のファイルがあります

etc/apache2/sites-enabled/019-domain.co.zaetc/apache2/sites-available/domain.co.za

<VirtualHost *:80>
     WSGIDaemonProcess index
 WSGIScriptAlias / /var/www/mysite/index.wsgi

 <Directory /var/www/index>
        WSGIProcessGroup index
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
 </Directory>
</VirtualHost>

etc/apache2/sites-enabled/018-hello.domain.co.zaetc/apache2/sites-available/hello.domain.co.za

<VirtualHost *:80>
 WSGIScriptAlias / /var/www/flaskhello/flaskhello/index.wsgi

 <Directory /var/www/index>
        WSGIProcessGroup index
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
 </Directory>
</VirtualHost>

var/www/mysite/index.wsgi

import sys
sys.path.insert(0,'/var/www/mysite')

from index import app as application

var/www/flaskhello/flaskhello/index.wsgi

import sys
sys.path.insert(0,'/var/www/flaskhello/flaskhello')

from index import app as application
4

2 に答える 2

2

最終的にこれが機能するようになりました
参考資料: Aagudnn.net ブログ投稿およびGoogle グループに関する Graham の回答

私のパスの 1 つが間違っていて、設定ファイルのServerNameと ServerAlias の部分を設定する必要があったことがわかりました。また、2 つの別個の DaemonProcesses に同じ名前を使用することはできませんでした。

現在、すべてが完全に機能しています。

私の最終的な構成ファイル:

<VirtualHost *:80>
    ServerName www.domain.co.za
    ServerAlias domain.co.za
         WSGIDaemonProcess www.domain.co.za
     WSGIScriptAlias / /var/www/mysite/index.wsgi
     <Directory /var/www/mysite/index>
            WSGIProcessGroup index
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
     </Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName www.hello.domain.co.za
    WSGIDaemonProcess www.hello.domain.co.za
 WSGIScriptAlias / /var/www/flaskhello/flaskhello/index.wsgi
 <Directory /var/www/flaskhello/flaskhello>
        WSGIProcessGroup www.hello.domain.co.za
    Order deny,allow
    Allow from all
 </Directory>
</VirtualHost>
于 2013-01-30T22:44:41.803 に答える
1

これは絶対に実行可能です。もちろん、異なるドメインを使用する場合は、vhostsを使用する必要があります。また、アプリケーションのPythonスタック(またはセキュリティを少し強化するためにLXCコンテナー)を分離するためにvirtualenvを調べることもできます。異なるアプリケーションを使用することを計画している場合、それらには個別のディスパッチ名前空間があるため、引数としてurl_forを使用せずに、実際のハードリンクされたURLを使用してリダイレクトを使用する必要があります。これは非常に典型的な設定であり、非常に簡単に実行できるはずです。最初の具体的な問題に遭遇したら、私たちに戻ってください:)

于 2013-01-25T11:42:34.357 に答える