3

私は元PHP開発者であり、nginx構成スクリプトを記述し、ディレクトリを作成し、nginx + PHP-FPMを起動し、コードをアップロードして実行できるという考え方を乗り越えるのに苦労しています。Pythonを試して、Pythonの感触をつかみ、Webアプリケーションの作成を開始したいのですが、すべてを機能させる方法について少し迷っています。

Djangoのようなフレームワークを使用することを常に勧める人もいますが、これがどのように機能するかをボトムアップで確認したいと思います。

Python Webサーバーの比較に出くわしましたが、geventが私が探しているもののようです。しかし、それはどのようにすべて一緒に収まるのでしょうか?リバースプロキシとしてnginx(静的コンテンツを除く)が必要ですか、それとも別のことをしますか?私は「初心者の失明」に直面しており、それがどのように組み合わされているかを確認するのに苦労しています。

4

3 に答える 3

2

私自身はPythonの初心者開発者なので、同じ質問があります。おそらく、より上級のユーザーが詳細を入力できます。これが私がこれまでにしたことです:

開始する最も簡単な方法は、実行可能なPythonスクリプト(.py)を作成し、それをcgi-binにドロップすることです。その後、yourhost.com / cgi-bin/your_script.pyからアクセスできます。簡単に実行でき、フォームの処理などに簡単に使用できます。

一部のサーバーでは、新しい.pyスクリプトを「表示」する前にサーバーを再起動する必要があります。これは、迅速な開発には非常に煩わしい場合があります。これが、多くの人がWSGIなどのミドルウェアを使用する理由の1つです。WSGIを有効にするためにApache構成を変更した方法は次のとおりです。

LoadModule wsgi_module libexec/apache2/mod_wsgi.so

<VirtualHost *:80>

WSGIScriptAlias /myapp /Library/WebServer/wsgi-scripts/views.wsgi

<Directory /Library/WebServer/wsgi-scripts>
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

views.wsgiは単なるPythonスクリプトです。ここで、localhost / myapp / anythingに移動すると、views.wsgiにリダイレクトされます。このファイルをルートディレクトリに配置しないことをお勧めします。そうしないと、静的ファイルを参照できなくなります。

単純なアプリは次のようになります。

def application(environ, start_response):
    start_response('200 OK', [('content-type', 'text/html')])
    return ['Hello world!']

environには、ユーザーが到達しようとしているパスに関する情報が含まれているため、URLのリストを設定し、要求されたURLに基​​づいて呼び出す関数をプログラムに指示することができます。このようなもの:

 path      = environ.get('PATH_INFO','')
 if path.startswith('/helloworld'):
  # call your function that returns HTML code

フレームワーク(Djangoなど)についてはまだあまり扱っていませんが、スクリプトから渡される変数を使用してHTMLテンプレートに簡単に入力できるという利点の1つがあると思います。Djangoのテンプレートエンジンでは、変数とロジック(if、forなど)をHTMLに混在させることができます。関数が呼び出されると、関数が返すものはすべてクライアントに送信されます。

私はまだこれらすべてにかなり慣れていないので、ここでエラーがあれば修正してください...

于 2011-06-12T00:10:28.487 に答える
0

PythonとPHPでは少し違います。Pythonの良いところは、共通のインターフェースが標準で定義されており、一方の側でさまざまなPythonアプリケーションを使用し、もう一方の側で異なるWebサーバーを使用できることです。これはWSGIと呼ばれ、ここで詳細を読むことができます

そして、 ngnixを介したDjangoアプリケーションのデプロイに関する良い投稿があります。

于 2011-06-11T23:45:49.253 に答える
0

pytonコードを実行するソフトウェアが必要です。

竜巻で100%Pythonスタックを試すことができます

または、Apache、Nginx、またはLighttpd(すべてCで記述されていると思います)を使用してから、いくつかのmod(mod_wsgi、fgci、またはuWsgi)を使用して、このWebサーバーにwsgiインターフェイスを使用してコードを実行させることができます。この2番目のオプションは、apache+some_modがPHPコードを実行するために行うことと似ています。

Apache+mod_wsgiとNginx+uWsgiで稼働している本番サイトがあります

于 2011-06-17T20:54:28.947 に答える