私のbashスクリプトがネットワーク上で実行でき、/ cgi-binディレクトリに配置されていないことをどのように保証できますか?

私のbashスクリプトがネットワーク上で実行でき、/ cgi-binディレクトリに配置されていないことをどのように保証できますか?

私のドキュメントルートは

 /0/

cgi-binディレクトリがありません。

これは私のApache仮想ホストです。

Listen *:80
DirectoryIndex 1

<VirtualHost *:80>
DocumentRoot /0
ServerName domain.tld
ServerAlias www.domain.tld
</VirtualHost>

私が望むのは、このディレクトリにbashスクリプトを配置することです。

ドキュメントルートは...

その中に私は..(test.sh)を持つでしょう

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "test"

それはすべてです。

この行を追加する必要があると思います。

/etc/sudoers

文書..

 apache ALL=NOPASSWD:/0/test.sh

これらすべてがbashスクリプトとpythonスクリプトを使って実際に私のウェブサイトを実行できることを保証するのに十分ですか?

これがうまくいけば…

mod_wsgi and python for the web ?

test.shも実行可能にする必要があると思います。

chmod +x test.sh

これが機能し、ドキュメントルートを次のように設定すると

index.sh

PythonをWebフレームワークとして使用して時間を無駄にするのはなぜですか?あるいは、Python自体も同様です。これはbashのWebバージョンがより簡単で、したがってより速いからです。 ?

ベストアンサー1

<Directory "/0" >ファイル内の項目を編集し、httpd.conf以下を追加します。

Options +ExecCGI
AddHandler cgi-script .sh 

次のような内容が表示されます。

<Directory "/0" >
    ...
    Options +ExecCGI
    AddHandler cgi-script .sh 
    ...
</Directory>

サーバーを再起動してください。

# service httpd restart

すべてのCGIファイルは実行可能でなければなりません(chmod +x <cgi file>)。このファイルはapacheユーザーとグループで実行されますapache

ブラウザで次をポイントします。http://<name or IP>/test.sh

CGIは、各リクエストが新しいプロセス(この場合はPythonまたはbash)を開始するため、スクリプトを実行する最も効率的な方法ではありませんが、スクリプトの実装を容易にします。 WSGIこれは基本的なCGIスクリプトよりもPythonを実行するより効率的な方法です。

おすすめ記事