LoginSignup
0
0

[構築・初期設定] Apache + cgi を繋ぐ (動作確認のスクリプトあるよ)

Last updated at Posted at 2024-04-13

今回はapache とcgi を繋げてみて、動作確認まで実施していきます。今更cgi かよ!!とか思わず、最後まで見ていただけますと幸いです。apache はデフォルトでcgi-bin の設定ができている状態なので、vhost を立てて、cgi を通していきます。

apache と cgi を繋ぐ

DocuemntRoot は任意で作成してください。私はテストでここに作成しました。

# DocumentRoot 作成
mkdir -p /var/www/example.com/public_html/

# conf ファイル作成
touch /etc/httpd/conf.d/example.com.conf

とりあえずファイル作成してみたら、vhost の設定していきます。
以下のconf の内容を貼り付けます。ここで一番重要なのが、Options のExecCGI とAddHandler cgi-script .pl .cgi になります。この設定をいれることによって、cgi の実行を明示的に許可することができます。

<VirtualHost *:80>
   ServerName example.com
   DocumentRoot "/var/www/example.com/public_html/"
   DirectoryIndex index.php index.html index.xml
   <Directory /var/www/example.com/public_html/ >
           Options FollowSymLinks ExecCGI
           AllowOverride all
           AddHandler cgi-script .pl .cgi
   </Directory>
   CustomLog "/var/log/httpd/example.com-access_log" combined
   ErrorLog "/var/log/httpd/example.com-error_log"
</Virtualhost>

この設定をいれたら、保存して、設定反映のためにapache の再起動を実施してください。そして、cgi のプログラムを配置していきます。cgi のプログラム自体は、public_html などのDocumentRoot におく必要はなく、/var/www/cgi-bin/ 配下にcgi のプログラム配置ファイルをおく必要があります。

public_html に置かなくても、cgi のプログラムを許可してるので、cgi の実行は外部ディレクトリから参照してくれて、実行することが可能です。便利ですね。ちょっとわかりづらいですが。

cgi-bin のディレクトリの権限と、cgiのファイルに実行権限を与えて上げます。

# 権限変更
chmod 2775 /var/www/cgi-bin/

# ファイル作成
touch /var/www/cgi-bin/test.cgi

簡単なプログラム内容

~~~~~~~~~~~~~~~~~~
#!/usr/bin/perl --

print "Content-Type: text/html\n\n";
print "test";
exit;
~~~~~~~~~~~~~~~~~~

# 実行権限付与
chmod +x /var/www/cgi-bin/test.cgi


そして、自分のドメインで以下のようにアクセスしてください。そうするとcgi が動作していると思います。

まとめ

cgi の構築とかあまりしたことがないので、仕組みがよくわかりませんでしたが、cgiを知るとfastcgi の理解もしやすいだろうと思い、少し勉強してみました。cgiのセキュリティ対策にはお気を付けて、良いcgi ライフを!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0