web-dev-qa-db-ja.com

標準のHello World CGIスクリプトを実行するには、どのような手順に従う必要がありますか?

ストックUbuntuの最新リリースのインストールが完了し、次のスクリプトがあるとします。

#!/bin/sh
echo "Content-type: text/html\n"
echo "<html><body>Hello world</body></html>"

このスクリプトを使用して http:// localhost から "Hello world" Webページを提供するようにApacheをインストールおよび構成するにはどうすればよいですか?

7
Jjed

クイックウェイ

Apache Webサーバーをインストールする

コマンドライン(ターミナル)アプリケーションで:

Sudo apt-get install Apache2

Apacheでスクリプトを実行可能にする

この例では、CGIスクリプトの名前はtest.shであり、個人のホームフォルダーに保存されていると仮定します。 Apacheがtest.shを使用するには、スクリプトに最初に実行可能権限が必要です。

chmod 755 $HOME/test.sh

また、Apacheが指定したCGIフォルダーに移動する必要があります。 Ubuntu(および他のDebianベースのオペレーティングシステム)の場合、これは/usr/lib/cgi-bin/ですが、HTMLおよびその他のコンテンツは/var/wwwに格納されます。

Sudo mv $HOME/test.sh /usr/lib/cgi-bin/

ローカルサーバーの出力にアクセスします

Apacheは、 http://localhost/cgi-bin/test.shtest.sh- generated HTMLを提供します。 Apacheが自分のマシン以外の場所にある場合は、「localhost」をサーバーのURLまたはIPアドレスに置き換えます。

/ usr/lib/cgi-bin /ではなく/ var/www/test-cgiにCGIスクリプトを保存する

CGIスクリプトを別のフォルダーに保存するには、Vanilla Apacheの構成を変更する必要があります。

sudoedit /etc/Apache2/sites-enabled/000-default

<VirtualHost>ディレクティブ内に次を追加します。

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

次に、コマンドラインで:

Sudo mkdir /var/www/test-cgi
sudoedit /var/www/test-cgi/test.sh

次に、コマンドラインでApacheを再起動します。

Sudo apachectl restart

The Quick Wayと同様に、CGI出力は http://localhost/test-cgi/test.sh で提供される必要があります=(リモートで開発している場合は、「localhost」をサーバードメインに置き換えます)。

トラブルシューティング

問題がある場合は、 Apacheの公式ドキュメント を参照してください。

9
Barbarrosa