ApacheでCGIを動かす

2022-04-12

Apache でCGIを動作する環境を作る(CentOS 6 , CentOS 7 , CentOS 8)

最近、滅多に使うことがなくなったCGIの設置依頼が久しぶりに来ました。CGI設定て何年ぶりだろう。

お客様ではWordpressで使っていて、メールフォームをCGIで動作しているようです、そのサイトのリニューアルでの引越し作業の依頼です

ApacheでCGIを動作する設定

要件としては「メールフォーム」のディレクトリのみCGIを動作するようにする。
下記のような設定にして「Options ExecCGI」としてCGIを許可すればOKです。

また、下記の設定では「/var/www/html/wordpress/mailform/」以下にメールフォームのCGIを設定します

# Cent OS 6
$ sudi vi /etc/httpd/conf/httpd.conf
 <Directory "/var/www/html/wordpress/mailform/">
    AllowOverride All
    Options ExecCGI FollowSymLinks
    Order allow,deny
    Allow from all
    AddHandler cgi-script .pl .cgi
  </Directory>

# apache 再起動(reloadでもOK)
$ sudo /etc/init.d/httpd restart

# CentOS 7 , CentOS 8
$ sudi vi /etc/httpd/conf/httpd.conf
 <Directory "/var/www/html/wordpress/mailform/">
    AllowOverride All
    Options ExecCGI FollowSymLinks
    Require all granted
    AddHandler cgi-script .pl .cgi
  </Directory>

# apache 再起動
$ sudo systemctl restart httpd

CGIを動作確認する

CGIが動作するかテスト用のプラグラムを作ります。まずがwhichコマンドで、perlのフルパスを確認します

$ which perl
/usr/bin/perl

このサーバだと、「/usr/bin/perl 」がperlのパスなのでそのパスを指定して、「Hello World!」を表示する簡単なCGIを作製します

$ vi /var/www/html/wordpress/mailform/test.cgi

#!/usr/bin/perl

print "Content-type:text/html\n\n";
print "<html><body>\n";
print "Hello World!";
print "</body></html>\n";

ブラウザで作製した「test.cgi」にアクセスして表示されればCGIの動作確認はOKです