2026年6月17日
2026年6月17日
Apacheのmod_cgi でCGIスクリプトを実行する方法
ステップ1: mod_cgiモジュールの有効化
まず、Apacheにmod_cgiモジュールを有効にする必要があります。多くのLinuxディストリビューションでは、mod_cgiは既定でインストールされていますが、有効化が必要な場合があります。
# Apache2の場合
sudo a2enmod cgi
service apache2 restart
# Apache 2.4以降の場合
sudo a2enmod cgid
service apache2 restart
ステップ2: CGIスクリプトの配置と実行ファイル属性設定
次に、CGIスクリプトをウェブドキュメントルートに配置します。通常、CGIスクリプトは/var/www/html/cgi-binディレクトリに配置されます。
# CGIスクリプトを作成して保存
echo '#!/bin/bash' > /var/www/html/cgi-bin/hello.sh
echo 'echo "Content-type: text/plain"` >> /var/www/html/cgi-bin/hello.sh
echo 'echo' >> /var/www/html/cgi-bin/hello.sh
echo 'echo "Hello, World!"' >> /var/www/html/cgi-bin/hello.sh
# 所有者とグループを設定し、実行権限を付与します
sudo chown www-data:www-data /var/www/html/cgi-bin/hello.sh
sudo chmod +x /var/www/html/cgi-bin/hello.sh
ステップ3: ApacheのCGIディレクトリ設定
Apacheのhttpd.confファイルまたはvirtual host設定ファイルに、CGIスクリプトが実行されるディレクトリを指定します。
# httpd.confファイルを開く
sudo nano /etc/apache2/apache2.conf
# CGIスクリプトが実行されるディレクトリを追加
ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/
<Directory "/var/www/html/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ステップ4: テストとトラブルシュート
最後に、CGIスクリプトを実行してテストします。ウェブブラウザからhttp://yourdomain.com/cgi-bin/hello.shとアクセスすると、"Hello, World!"というメッセージが表示されるはずです。
# ターミナルで確認
curl http://localhost/cgi-bin/hello.sh
注意事項
- セキュリティ: CGIスクリプトには十分な注意を払ってください。不正なコードの実行により、サーバーに深刻な脅威が及ぶ可能性があります。
- パフォーマンス: CGIスクリプトは重いI/O操作や複雑な処理を行う場合、サーバーの性能が低下する可能性があるため、適切に管理することが重要です。
- デバッグ: エラーメッセージの表示を有効にして、問題を特定しやすいようにします。
まとめ
1. mod_cgiモジュールの有効化: ApacheのCGI機能を使用するためにはまずmod_cgiモジュールを有効にする必要があります。
2. CGIスクリプトの配置と実行権限設定: CGIスクリプトを適切な場所に配置し、実行権限を付与します。
3. ApacheのCGIディレクトリ設定: ApacheでCGIスクリプトが実行されるディレクトリを指定します。
4. テストとトラブルシュート: カスタマイズ後の設定を確認するための基本的なテストを行います。
関連記事: