apacheubuntu

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]
タイトルとURLをコピーしました