質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2357閲覧

プログラムが実行されない。

pastelkona

総合スコア31

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/01/13 12:10

編集2020/01/14 12:52

Ubuntu server 18.04.3 LTS
Apache/2.4.29 (Ubuntu)
which python3 => /usr/bin/python3
python3 -V => Python 3.6.9
installは、apt tasksel > lamp serverでインストール。

http://www.w3big.com/ja/python3/python3-cgi-programming.html
上記サイトの通りにしているのですが、pythonファイルが実行されません。
hello.pyを保存しますか、開きますかと聞かれます。
ブラウザでcontent-typeを確認するとtext/x-pythonとなっています。
/etc/mime.typesの
text/x-python .py
を、
text/html .py
とすると、content−typeは、text/htmlになるのですがうまく表示されるわけではありません。
どうすれば、上手く上のサイトのように実行されるでしょうか?

上手くcontent-typeがセット出来ていないとq&aに書かれていたのですが、、

EDIT1:
192.168.xxx.xxx/
にアクセスし、/var/www/html/index.html
が表示されるのは確認済み。

やったこと

1。/etc/apache2/apache2.confに、下の二行を追加。

ScriptAlias /cgi-bin/ /var/www/cgi-bin/
AddHandler cgi-script .cgi .pl .py

2。上二行を下のように少し変えて試す。

.cgi .pl .py => cgi pl py

3。下の六行を追加。

<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>

hello.pyのcontent~~~のところをいじる。

print("Content-Type: text/html")
print("content-type: txt/html")
print('Content-type: text/html')
print("Content_type: text/html")
print()をけして、print("Content-type: text/html\n")

4。chomd 755で実行可能にしました。

EDIT2:
apache2.confです。#から始まる部分は消しました。

DefaultRuntimeDir ${APACHE_RUN_DIR} PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} HostnameLookups Off ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf Include ports.conf <Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ScriptAlias /cgi-bin/ /var/www/cgi-bin/ AddHandler cgi-script .cgi .pl .py <Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> AccessFileName .htaccess <FilesMatch "^.ht"> Require all denied </FilesMatch> LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %O" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent IncludeOptional conf-enabled/*.conf IncludeOptional sites-enabled/*.conf

EDIT3:
azure virtual machinesで同じことをしてみました。
apt update
apt upgrade
apt install tasksel
ufw allow 80
apache2.conf は、上と同じ。

which python3 => /usr/bin/python3
python3 -V => Python 3.6.9
apachectl -v => Apache/2.4.26 (Ubuntu)
apatchectl configtest => Syntax OK

しかしうまくいきません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/01/13 12:29 編集

「上記サイトの通りにしている」のを第三者が検証できるために、やったことを具体的に列挙してください。実行環境がWindowsなのかMacOSなのかCentOSなのか、Pythonの実行パスが実在するのかどうか、など。
cateye

2020/01/13 12:24

環境が書いてないのですが?・・・/usr/bin/にpython3と言う実行ファイルはありますか?
guest

回答1

0

ベストアンサー

Order allow,deny
Allow from all

の下りは、

Require all granted

となります。
また、AddHandlerの記述位置も下記の箇所になります。

<Directory "/var/www/cgi-bin">

AllowOverride None
Options +ExecCGI
Require all granted
AddHandler cgi-script .py
</Directory>

参考:【apache】2.4系はアクセス許可の設定の書き方が違うので注意 at softelメモ

2.の試しは、元に戻してください。
.cgi .pl .py
で良いです。

察するにPythonってprint文は改行込みで出力するため、
特にhello.pyはいじらなくてよいはずですが。

chmodにて実行権限を与えるのを忘れないでください。

投稿2020/01/13 12:36

編集2020/01/14 06:38
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pastelkona

2020/01/13 13:09

与えたのですが、だめでした。
退会済みユーザー

退会済みユーザー

2020/01/13 13:26

コンソールから httpd -tで定義ファイルの文法チェックだったかな
退会済みユーザー

退会済みユーザー

2020/01/14 13:07

変更を加えたhttpd.confが正しく反映できているかを、文法チェックで軽く探ってはいかがかと。(お済みでしたらすみません。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問