ubuntu上のapacheでCGI(Perl)を動かす。

ubuntu、apache、Perlのバージョンは以下です。
ubuntu 18.04 LTS + Apache 2.4.29 + perl 5, version 26

■手順

1.rootにスイッチ
$ su –

2./etc/apache2/conf-available 配下に移動。
# cd /etc/apache2/conf-available

3.cgi-enabled.conf を conf-available の下に新規作成する(cgi-enabled.confとしているが名前はなんでもよい)。
# touch cgi-enabled.conf
# vi cgi-enabled.conf (中身は以下)
==============================
#拡張子 がcgi、および、 pl であるものを CGI として扱います
<Directory "/var/www/html"> (ドキュメントルートにあわせること)
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
</Directory>

(cgi-enabled.confを保存する。)
==============================

4.cgi-enabled を有効にする。
# a2enconf cgi-enabled

5.CGIモジュールを有効にする。
# a2enmod cgi

6.apacheを再起動する。
/etc/init.d/apache2 restart

これで完了。

ちなみに、perl 5, version 26 だとapacheで以下のエラーとなってしまった。
Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at ./lib/jcode.pl line …

この場合は、jcode.plを以下のようになおす。
(2箇所あります。有名な話題らしくネットで検索すると同じ話題が見つかります。)

修正前:&init_z2h_euc unless defined %z2h_euc;
修正後:&init_z2h_euc unless defined $z2h_euc_inited;

修正前:&init_z2h_sjis unless defined %z2h_sjis;
修正後:&init_z2h_sjis unless defined $z2h_sjis_inited;

※jcode.plにもバージョンがあるので、新しいものを使用する。
※古いものを使うと上記の修正をしてもエラーなってしまいます(以下)。
syntax error at ./lib/jcode.pl line 299, near "do convf(": …

Apacheのドキュメントルートの変更

CentOSとubuntuにインストールされたApacheのドキュメントルートの変更方法です。OS、Apacheの組み合わせは以下です。

CentOS 6.10 + Apache 2.2.15
ubuntu 18.04 LTS + Apache 2.4.29

rootユーザで作業します。

■CentOS 6.10 + Apache 2.2.15 の場合

# cd /etc/httpd/conf
# vi httpd.conf
==============================
(httpd.conf を以下のように編集。2箇所を修正する。)

変更前:DocumentRoot "/var/www/html"
変更後:DocumentRoot "/var/www/html/XXX" ※XXXは任意のディレクトリ

変更前:<Directory "/var/www/html">
変更後:<Directory "/var/www/html/XXX"> ※XXXは任意のディレクトリ

(httpd.conf を保存する。)
==============================
# apachectl configtest (httpd.conf に間違いがないかチェックする)
# /etc/rc.d/init.d/httpd restart (Apacheの再起動)

■ubuntu 18.04 LTS + Apache 2.4.29 の場合

# cd /etc/apache2/sites-available
# cp -p 000-default.conf 001-default.conf (000-default.confを修正するのではなく残しておく)
# vi 001-default.conf
==============================
(001-default.conf を以下のように編集。1箇所を修正、1箇所を追加する。)

※修正するほう。
変更前:DocumentRoot "/var/www/html"
変更後:DocumentRoot "/var/www/html/XXX" ※XXXは任意のディレクトリ

※追加するほう。
<Directory>・・</Directory> を付け加える。
/etc/apache2 配下に apache2.conf があるので、そこからもってくればよい。

こんな感じのものを 001-default.conf に貼り付ける。
<Directory /var/www/html/XXX> ※XXXは任意のディレクトリ
    Options FollowSymLinks
    
</Directory>

(001-default.confを保存する。)
==============================
# a2dissite 000-default.conf (000-default.confの設定を無効化する)
# a2ensite 001-default.conf (001-default.confの設定を有効化する)
# apache2ctl configtest (conf に間違いがないかチェックする)
# service apache2 restart (Apacheの再起動)