ksaitoの日記

日々試したことの覚え書き

UbuntuのApache2で$HOME/public_htmlを有効にする

UbuntuのApache2は、デフォルトでは各ユーザディレクトリ下のpublic_htmlを公開できるようになっていません。

$ curl http://localhost/~<ユーザ>/ 2>&1 | grep title
<title>404 Not Found</title>
$

設定

Apache2のモジュールは、a2enmodで有効にできます。
ユーザディレクトリの公開は、userdirモジュールを有効にすることで使えるようになります。

$ sudo a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
  service apache2 restart
$ sudo service apache2 restart
 * Restarting web server apache2
 ... waiting    ...done.
$ curl http://localhost/~<ユーザ>/ 2>&1 | grep title
  <title>Index of /~<ユーザ></title>
$ 

CGIを有効にする

ファイルの拡張子CGIを有効にするには、設定ファイルを追加してApacheを再起動する必要があります。
AddHandler拡張子を指定し、どのディレクトリでCGIを有効にするか

$ cat /etc/apache2/conf.d/cgi.conf 
AddHandler cgi-script .cgi
<Directory /home/*/public_html/cgi>
        Options ExecCGI
        <Limit GET POST OPTIONS>
               Order allow,deny
               Allow from all
        </Limit>
</Directory>
$ sudo vi /etc/apache2/conf.d/cgi.conf 
$ sudo service apache2 restart
 * Restarting web server apache2                                                                    ... waiting                                                                                [ OK ]
$ 

これで、$HOME/public_html/cgiに格納されている.cgiファイルをCGIとして実行できるようになります。

$ ~/public_html/cgi/test.cgi 
Content-type: text/plain

Hello, World!
2012年  5月 13日 日曜日 15:47:35 JST
$ curl http://localhost/~<ユーザ>/cgi/test.cgi
Hello, World!
Sun May 13 15:47:22 JST 2012
$

*1336923342*[Twitter]2012年05月13日のツイート
><div class="twitter-tweet-wrapper">
[twitter:201447225698693121:tweet]
[twitter:201349161377996801:tweet]