Apache HTTP Server 2.4.1 on Ubuntu
Apache HTTP Server 2.4.1 を Ubuntu 10.04 LTS (Sakura VPS 512MB)に入れてみました。
今回試したかったことは、
です。
必要となるパッケージをインストール
aptitude install libreadline6-dev # for lua
aptitude install gcc
aptitude install libpcre3 libpcre3-dev
aptitude install openssl libssl-dev
必要となるソースをダウンロード・展開
cd /usr/local/src wget http://www.lua.org/ftp/lua-5.1.5.tar.gz tar zxf lua-5.1.5.tar.gz wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//httpd/httpd-2.4.1.tar.gz tar zxf httpd-2.4.1.tar.gz wget http://ftp.riken.jp/net/apache//apr/apr-1.4.6.tar.gz tar zxf apr-1.4.6.tar.gz wget http://ftp.riken.jp/net/apache//apr/apr-util-1.4.1.tar.gz tar zxf apr-util-1.4.1.tar.gz
Lua5.1 コンパイル・インストール
- 最新の5.2を導入したかったが、ApacheModuleとしてうまく動かなかったため5.1.5で導入
- /usr/local/lua へインストール
cd ./lua-5.1.5
64bitOSの場合は src/Makefile を修正する (参考)
- (org)-> CFLAGS= -O2 -Wall $(MYCFLAGS)
- (new)-> CFLAGS= -O2 -Wall -fPIC $(MYCFLAGS)
コンパイル・インストール
make linux make install INSTALL_TOP=/usr/local/lua
apr/apr-util コンパイル・インストール
cd ./apr-1.4.6 ./configure --prefix=/usr/local/apr make make install cd .. cd ./apr-util-1.4.1 ./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr make make install
httpd-2.4.1 コンパイル・インストール
cd .. cd ./http-2.4.1 ./configure --prefix=/usr/local/apache24 --with-apr=/usr/local/apr --with-lua=/usr/local/lua --enable-so --enable-ssl=shared --enable-proxy=shared --enable-lua make make install /usr/local/apache24/bin/apachectl start
mod_lua を試す
/usr/local/apache24/conf/httpd.conf を編集(以下の2行を追加)
LoadModule lua_module modules/mod_lua.so AddHandler lua-script .lua
/usr/local/apache24/htdocs/example.lua を新規作成 (参考)
require "string" function handle(r) r.content_type = "text/plain" r:puts("Hello Lua World!\n") if r.method == 'GET' then for k, v in pairs( r:parseargs() ) do r:puts( string.format("%s: %s", k, v) ) end elseif r.method == 'POST' then for k, v in pairs( r:parsebody() ) do r:puts( string.format("%s: %s", k, v) ) end else r:puts("unknown HTTP method " .. r.method) end end
変更の反映
/usr/local/apache24/bin/apachectl configtest /usr/local/apache24/bin/apachectl stop /usr/local/apache24/bin/apachectl start
mod_sed を試す
/usr/local/apache24/conf/httpd.conf を編集
<Directory "/usr/local/apache24/htdocs/sed"> AddOutputFilter Sed html OutputSed "s/TAITO/ZUNTATA/g" OutputSed "s/SEGA/SST/g" OutputSed "s/FALCOM/JDK/g" </Directory>
/usr/local/apache24/htdocs/sed/example.html を新規作成
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"> <title>sed sample</title> </head> <body> KONAMI<br/> TAITO<br/> SEGA<br/> GEMADELIC<br/> T&E<br/> FALCOM1.6.0<br/> </body> </html>
変更の反映
/usr/local/apache24/bin/apachectl configtest /usr/local/apache24/bin/apachectl stop /usr/local/apache24/bin/apachectl start
備考:Lua 5.2.0 について
Lua 5.2.0 のコンパイル・インストール、および httpd-2.4.1 のコンパイル・インストールまでは問題ないが、LoadModule で mod_lua.so を有効にしようとすると以下のエラーが発生した
/usr/local/apache24/bin/apachectl configtest httpd: Syntax error on line 148 of /usr/local/apache24/conf/httpd.conf: Cannot load /usr/local/apache24/modules/mod_lua.so into server: /usr/local/apache24/modules/mod_lua.so: undefined symbol: lua_objlen
- 5.1.5 で同様の手順を行った場合にはエラーが発生しなかった