web-dev-qa-db-ja.com

Apache仮想ホストでのPythonスクリプトの解析

Centos 6サーバー上のPHPで動作するApacheサーバーが稼働しています。 Apacheはyum -y install httpd mod_sslを使用してインストールされました。 Pythonを追加したいと思います。

次のようにPythonをインストールしました。

wget http://python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tar xf Python-3.3.5.tar.xz
cd Python-3.3.5
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall

yum install mod_pythonを使用してmod_pythonをインストールしました。

/etc/httpd/conf/httpd.confには次の行Include conf.d/*.confが含まれているため、/etc/httpd/conf.d/python.confが含まれていることがわかります。 /etc/httpd/conf.d/python.confには変更を加えていませんが、コメント化されていないディレクティブは次のとおりです。

LoadModule python_module modules/mod_python.so
<Directory "/var/www/manual/mod/mod_python">
        <Files *.html>
                SetHandler default-handler
        </Files>
</Directory>

次に、次のVirtualHostを追加しました。

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/python/html
    <Directory /var/www/python/html/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
      AddHandler mod_python .py
      PythonHandler mod_python.publisher
      PythonDebug On
    </Directory>
    AddHandler mod_python .py    
    #DirectoryIndex index.html index.php index.py
</VirtualHost>

http://example.com/testphp.phpにアクセスすると、PHPとして解析されますが、http://example.com/testpython.pyにアクセスすると、404 Not Foundエラーが返されます。 PythonHandler mod_python.publisherをコメントアウトすると、Pythonスクリプトが解析されずに返されます。

仮想ホストでPythonを使用するにはどうすればよいですか?

編集。 testpython.pyがスクリプトprint( 'xxxx' )で構成されている場合、404エラーが表示されます。以下で構成される場合、Test successfulを返します。

def index(req):
  return "Test successful";

どちらも/var/log/httpd/error_logで次の通知を生成します。

[Mon Dec 07 07:03:14 2015] [notice] mod_python (pid=16441, interpreter='example.com'): Importing module '/var/www/python/html/testpython.py'
2
user1032531

私はまだmod_pythonを使用しませんでしたが、スクリプトはreturn(印刷ではなく)提供されるテキストを期待し、達成するindex関数を含むように思われますこの。

index関数を定義しない場合、mod_pythonはモジュールについて何をすべきかを知りません。

1
Tobias

確認するいくつかのこと:

  1. スクリプトは実行可能です
  2. var-wwwにアクセスする権限があります

スクリプトの権限を確認してください。ルートのみが読み取れるように設定できます。

0
isaac kinyua