localhostで実行しようとしています。簡単な紹介。投稿前に読んだリンク: How to run Python CGI script How can I run Python CGI scripts on my web server? 最も正確: Python で記述された CGI スクリプトを実行するように apache サーバーを構成するためのヘルプが必要 また、公式http://httpd.apache.org/docs/1.3/misc/FAQ.html#CGIoutsideScriptAlias http://www.editrocket.com/記事/python_apache_windows.html およびその他...
.cgi および .py スクリプト用に Apache を構成するために提案されているすべての手順: 1)
libapache2-mod-wsgi をインストールします
[完了] 2) スクリプトが実行可能であり、Apache で使用できることを確認します ~$ ls -lah /var/www/cgi-bin/cgi101.py
-rwxrwxr-x 1 user user 318 2012-11-27 03:03 /var/www/cgi-bin/cgi101.py
3) /etc/apache2/sites-available/default[実際に更新]を編集:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
# <Directory /var/www>
<Directory /var/www/cgi-bin>
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride None
Order allow,deny
allow from all
AddHandler cgi-script .cgi .py
# AddHandler wsgi-script .wsgi
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
または
<Directory /var/www/cgi-bin>
次にApacheを再起動します
sudo /etc/init.d/apache2 restart
最後に、スクリプトを試してください。[実際に更新]のようなもの:
#!/usr/bin/python3
import cgi
form = cgi.FieldStorage()
# parse form data
print('Content-type: text/html\n')
# hdr plus blank line
print('<title>Reply Page</title>')
# html reply page
if not 'user' in form:
print('<h1>Who are you?</h1>')
else:
print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form['user'].value))
私が得る出力で
404お探しのページが見つかりませんでした
エラー。え?と /var/www の両方を試しました。そしてpython3への私のpythonパス:
~$ ls -lah /usr/bin/python*
...
lrwxrwxrwx 1 root root 9 2011-10-05 23:53 /usr/bin/python3 -> python3.2
lrwxrwxrwx 1 root root 11 2012-10-20 06:17 /usr/bin/python3.2 -> python3.2mu
-rwxr-xr-x 1 root root 2.8M 2012-10-20 06:17 /usr/bin/python3.2mu
...
だから私は使う
#!/usr/bin/python3
前もって感謝します!
[更新] /var/log/apache2/error.log
[Tue Nov 27 13:47:56 2012] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/script.py, referer: http://localhost/cgi1$
/usr/lib/ で script.py を探すのはなぜですか??
【更新】台詞を読みながら目を閉じた
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
/var/www/cgi-bin 内の実行可能な .cgi または .py へのパスである必要があります。エバートとみんなありがとう!