Hatena::Grouplinux2

Going My Linux Way このページをアンテナに追加 RSSフィード

2013年11月24日(日)

Ubuntu での Apache2 のCGIの設定

| 18:51 |  Ubuntu での Apache2 のCGIの設定 - Going My Linux Way を含むブックマーク はてなブックマーク -  Ubuntu での Apache2 のCGIの設定 - Going My Linux Way  Ubuntu での Apache2 のCGIの設定 - Going My Linux Way のブックマークコメント

自宅サーバでの設定メモ。

とりあえず、CGI をうごかすまで。

ドキュメントは $HOME/public_html/ に置いているが、~ (チルダ) でのアクセスは使わない方針なので、/var/www にリンクを張る。URI は mysite にしている。

$ cd /var/www
$ sudo ln -s ~/public_html mysite

ホームディレクトリのpermissionを設定しておく。(不要かも)

$ chmod go+x ~

Apache の設定をすこし変える。

まず /etc/apache2/sites-enabled/000-default を変える。以下のようにすると $HOME/public_html/.htaccess での設定が有効になる。

<VirtualHost *:80>
       :
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        #AllowOverride None    # <--- ここをコメントアウト
        AllowOverride All      # <--- ここを追加。
        Order allow,deny
        allow from all
    </Directory>

モジュールの server-info と acrions を有効にする。

$ sudo a2enmod info
$ sudo a2enmod actions

Apache2 は再起動する。

$ sudo service apache2 restart

$HOME/public_html/.htaccess の内容は以下のようにする。

Options All
AddHandler cgi-script .cgi

テスト用の CGI $HOME/public_html/cgi-bin/hello.cgi を作る。

#!/bin/bash

echo -en "Content-Type: text/plain\r\n"
echo -en "\r\n"

echo "hello, world"

CGIプログラムに実行権をつけておく。

$ chmod +x ~/public_html/cgi-bin/hello.cgi

これで、

Firefox などでアクセスすると、CGI からの出力「hello, world」が表示される。

----

gzip で圧縮した HTML を表示する CGI を作ってみる。

まず、テスト用に次の内容の $HOME/public_html/sandbox/htmlgz/hello.html をつくる。

<!DOCUTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	<title>hello, world</title>
</head>
<body>
        <p>hello, world (gzipped)
</body>
</html>

これを gzip で圧縮する。サフィックスに gz を指定して、hello.htmlgz になるようにする。

$ gzip -S gz hello.html
$ ls hello.htmlgz
hello.htmlgz

次に、以下の内容のCGI を作る。パスは $HOME/public_html/cgi-bin/html-gzipped.cgi

#!/bin/bash

echo -en "Content-Type: text/html\r\n"
echo -en "\r\n"

/bin/zcat $PATH_TRANSLATED

最後に、$HOME/public_html/.htaccess の設定をする。以下の行を追加する。

AddHandler html-gzipped .htmlgz
Action html-gzipped /mysite/cgi-bin/html-gzipped.cgi

これで、

にアクセスすると、HTMLとして処理されて「hello, world (gzipped)」が表示される。

もちろん mysite/ 以下の .htmlgz がサフィックスのファイルならば、みな同じように処理される。

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20131124