
PHPの代わりにPythonをサーバースクリプト言語として使用しようとしています。
localhostを設定し、その下でPHPファイルが正しく実行されています。
ファイルを作成すると、.../localhost/temp/test.cgi(実行可能になります):
#!/home/mike/python_venvs/test_venv369/bin/python
print( """Content-type:text/html\n\n
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
TEST
<title>My server-side template</title>
</head>
<body>""" )
print( "</body></html>")
...Pythonスクリプトでは実行されません。ファイルのテキストはブラウザにのみ表示されます。
私はこれについてたくさんの検索をしました。 httpd.confのようなファイルはありません。私のApache2設定は次のとおりです。 /usr/sbin/apache2で実行可能で、ほとんどの設定ファイルは明らかに/etc/apache2の下にあります。特に/sites-availableのように見えます。 000-default .conf と default という 2 つのファイルがあります。 -ssl.conf.
私は間違っているかもしれませんが、httpd.confはこれを行う「古い」Apacheメソッドだと思います。
000-default.confの下部で完全に混乱していますが、(ただ)可能性のある行を見つけました。
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
...それでapache2サービスのコメントを外して再起動しました。変わりません。
000-default.confの詳細
(/etc/apache2/sites-availableから)。 localhostディレクトリを変更しようとすると、このファイルの変更がうまくいくようです。
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that...
ServerAdmin webmaster@localhost
DocumentRoot "/media/mike/W10 D drive/My Documents/localhost"
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /media/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
...
CGIスクリプトがどこに行くのか、どこで設定するのかはわかりませんが(下の最初の答えを確認しますが)、上記のように... / localhost /の下の.htmlファイルで作業したいことを考えると、場所を「CGI有効」に設定したいです。
〜の後<Directory>
私の場合、この質問に対する短い答え(具体的には)は、タグやブロック、または何と呼ばれるかを「オプション」の1つとして「ExecCGI」を単純に追加することでした。
答え1
いくつかの追加措置を講じる必要があります。
- CGIサブシステムの有効化
a2enmod cgid
mods-enabled/mime.conf
特定のvHostセクションでCGIハンドラのコメントを削除するか、このディレクティブを含めます。AddHandler cgi-script .cgi
Options ExecCGI
これらのプログラムを使用できる仮想ホストまたは最上位ディレクトリに含まれています。
テストのために私がしたことは、私のファイルExecCGI
にCGIハンドラとステートメントを含めることでした。sites-enabled/000-default.conf
<VirtualHost *:80>
...
AddHandler cgi-script .cgi
<Directory "/var/www/html">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
</VirtualHost>
その後、次の実行可能スクリプトを作成して実行できました。time.cgi
答え2
あなたのApache設定はDebianにあるように見え、私のシステムでは有効になっています。つまり、toがserve-cgi-bin.conf
あります。/etc/apache2/conf-enabled/serve-cgi-bin.conf
../conf-available/serve-cgi-bin.conf
システムにシンボリックリンクがない場合は、以下を実行します。
sudo a2enconf serve-cgi-bin
その行のコメントを削除する必要はありません000-default.conf
。
ファイルは次のようになります。
$ cat /etc/apache2/conf-available/serve-cgi-bin.conf
<IfModule mod_alias.c>
<IfModule mod_cgi.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>
<IfModule mod_cgid.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>
<IfDefine ENABLE_USR_LIB_CGI_BIN>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
</IfDefine>
</IfModule>
cgiディレクトリから/usr/lib/cgi-bin
実行可能ファイルをそのディレクトリに移動します。有効にする必要があります。module_cgiまたはmod_cgid、最初の項目を選択してサーバーを再起動します。
sudo a2enmod cgi
sudo systemctl restart apache2
行くhttp://localhost/cgi-bin/test.cgi「テスト」が表示されます。
別のディレクトリまたは別のパスを使用するには、無効にし()、内容をディレクトリにコピーして、必要ScriptAlias
に応じて場所を変更できます。serve-cgi-bin.conf
sudo a2disconf serve-cgi-bin
serve-cgi-bin.conf
VirtualHost