2011-01-03 3 views
0
#!/usr/bin/env python 
# -*- coding: UTF-8 -*- 

# enable debugging 
import cgitb 
cgitb.enable() 

print "Content-Type: text/plain;charset=utf-8" 
print 

print "Hello World!" 

私の目標は、PHPをPythonに置き換えることです。私はPHPにかなり慣れていて、自分のローカルマシンでPythonを使うことができますが、私はそれを自分のWebサーバーで動作させることはできません。私のウェブホストは彼らがPythonをサポートしていると言っているので、私は間違ったことをしているに違いない。ここにPython noobがあります:Python対応のWebサーバーでは、どのようにPythonを使用しますか?

ここで、PythonはCGIに関連付けられています。 pythonファイルは私のcgi-binフォルダに入っていなければなりませんか?私はpy拡張子やcgi拡張子を持つWebファイルを見たことがない、私はこれらのことがどのように動作するかわからない、私は本当にPHPに精通しています。

私はGoogleの「Learn Python」クラスの最初の1時間を見ましたが、これはPythonをローカルで実行することについて話しています。

:(申し訳ありませんが、私はそうナブ、私を修正してくださいよ。完全に許容可能なCGIスクリプトです

+0

あなたはDjangoのようなフレームワークを使用する必要があります。 – Falmarri

+1

Djangoのようなフレームワークを使用する必要があるのはなぜですか?私は効果があると主張しているわけではありませんが、なぜですか? PHPでcodeigniterとkohanaを使用していますが、私はフレームワークでうまくいきます。しかし、なぜ私はDjangoを使用しなければなりませんか? – MALON

+2

あなたはDjango(またはそれに関するフレームワーク)を使用する必要はありませんが、通常のCGIよりも扱いが簡単です。また、あなたのWebホストがmod_pythonなどを実行していることを意味していて、実際にフレームワークを使用したいと思うかもしれません。 – Epcylon

答えて

7

を。Apacheを使用している場合、それはあなたのcgi-binのに移動する必要があります、(実行する必要があります私は)これで間違っている可能性があり、あなたは言語.pyのための共通の拡張子を持つ、または.cgiでそれに名前を付ける必要があります。

あなたのウェブサーバがCGIを検討するどのファイルを制御することができた場合、あなたが好きな場所にファイルを配置することができます可能性はありますが、それを制御することはできません。ApacheのCGIに関する詳細はこちらをご覧ください:http://httpd.apache.org/docs/2.2/howto/cgi.html

2つの条件が満たされない限り、ApacheはファイルをCGIファイルとして扱わないということです。cgi-scriptAddHandlerまたはSetHandlerディレクティブを使用してアクティブ化する必要があり、OptionsディレクティブでExecCGIを有効にする必要があります。通常、これは共有ホスティング環境のユーザーは利用できません。

EDIT:明確にするために、CGIは任意の言語でスクリプトを作成し、ウェブサーバーに実行させ、そのスクリプトからの出力をクライアントに送信するためのメカニズムです。シンプルなスクリプト以外は何も推奨されていません。なぜなら、1回のリクエストごとにサーバーがインタプリタの新しいインスタンスを起動するからです。 Pythonの場合、Flask,Bottle、またはDjangoのようなWSGI互換フレームワークが最適なソリューションです。最初の2つはあなたのやり方から離れようとするマイクロフレームワークですが、Djangoはフルスタックフレームワークであり、非常に多くの接着剤を提供します。

+0

ご回答ありがとうございます、私はさらにあなたが言ったことを調べます。 「PHPを忘れて、代わりにPythonを使う」と聞いている限り、私はPHPをPythonに置き換えるための初心者向けのドキュメントはほとんど見当たりません。 – MALON

+0

私は、mod_phpがApacheで動作する方法の一部に起因すると思います。 HTMLとIt Just WorksにPHPを書くことはできますが、Pythonでは実際には当てはまりません。私は、FlaskやBottleなど、あまりにも多くの決定にあなたを強制することなく、細部のいくつかを抽象化するPythonのマイクロフレームワークを調べることをお勧めします。 –

2

Webアプリケーションを行うPythonの方法は、CodeIgniterやCake PHPのようなものとよく似ています。

Djangoから始めてください。チュートリアルを試してみてください。ダイハードPHP開発者からのDjangoに関する最も一般的な苦情は、DjangoがコードとHTMLを混ぜ合わせないことです。それは良いことです。

もちろん、古いCGIを使用することはできますが、難しい方法です。

0

あなたのウェブホスティング会社によっては、#!/ usr/bin/env python行が少し違った読みをする必要があります。いくつかは "python"のバージョン番号を含み、いくつかは別のディレクトリにpythonを持っています。あなたのプロバイダに確認する必要があります。

また、スクリプトを実行する人がいらっしゃいますので、ファイルに対して実行権限(書き込み禁止)の権限を与える必要があります。

あなたのcgi-binフォルダに.cgiまたは.py拡張子を付けたコードをアップロードしてブラウザに移動するとどうなりますか?

また、Googleの「python cgi」を使用すると、多くのチュートリアルが見つかります。たくさんのヒットのない単純なものについては、cgiはうまくいくでしょうが、他の人が言っているように、必要な時にはもっとリソース効率が良い他のメカニズムがあります。

同じページにpythonとhtmlを混在させることはできませんが、pythonプログラムを呼び出すplacemarkを持つhtmlページを作成するメカニズム(PythonとサーバーサイドインクルードまたはSSIを参照)があります。 pythonプログラムが結果として表示されるHTMLに表示されます。

関連する問題