apache2 パッケージ版に移行
ximapdやらRastやら、いくつか試したいものが出てきた。 ximapdはRastが必須で、Rastはaprが必要らしい。 aprは、今インストールしてあるapacheにも入っているのだが、 こうやっていちいち調べたり、無かったらコンパイルしたりはいい加減面倒くさい。 サーバにDebianを入れた時点では、Woodyにapache2が無くて仕方なく ソースからインストールしたのだが、もはやパッケージを使わない理由は無い。
今までのソースからインストールしたapache-2.0.53では、わけのわからんものを含めて たくさん動いてるものがあるのだが、移行が必須なのは、
- Hiki
- tDiary
- sqwebmail
- WebDAV
- qwikWeb
mod_rubyとWebDAV、SSLがあれば問題ないはずだ。
apache2本体のインストール
まずは本体パッケージ。
# apt-get install apache2 apache2-common
設定ファイルを眺めてみる。 設定ファイルの場所は/etc/apache2/。 httpd.confは5行コメントがあるだけで何も書いてない。 メインはapache2.confらしいので、こいつの中身を眺めてみる。 DocumentRootが無い?
#AddDefaultCharset ISO-8859-1
AddDefaultCharsetはコメントアウトされている。とりあえず 問題無さそうなので気にせず先へ進む。
各種moduleのインストール
davとsslはapacheとapache2で共通らしい。共存しても 大丈夫なのか? つーか、今まで入ったままになってたapacheを消すわけではないので 共存させることになるわけだが。
# apt-get install libapache2-mod-encoding libapache2-mod-php4 libapache2-mod-ruby libapache-mod-dav libapache-mod-ssl
libapache-mod-davのconfigureで、
mod_encoding.so does not have corresponding .info file.
とか言われる。.info fileって何だ? ようわからんがこれも気にせず先へ進む。
tDiary & Hiki
apache2.confの中から、いろんなものをincludeしていて、
# Include module configuration: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf # Include all the user configurations: Include /etc/apache2/httpd.conf # Include ports listing Include /etc/apache2/ports.conf # Include generic snippets of statements Include /etc/apache2/conf.d/[^.#]*
AP固有の設定は /etc/apache2/conf.d/ に置けば読み込んでくれるらしい。
今まで /usr/local/apache2/conf/httpd.conf に追加してた tDiary の設定と
Alias /hdiary "/home/httpd/tdiary" <Directory "/home/httpd/tdiary"> AllowOverride None Options +ExecCGI #AddHandler cgi-script .rb RubyRequire apache/ruby-run <Files *.rb> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> DirectoryIndex index.rb Order allow,deny Allow from all <Files update.rb> AuthName tDiary AuthType Basic AuthUserFile /home/.htpasswd.md5 Require user hao </Files> </Directory>
Hikiの設定を、
Alias /hiki "/home/httpd/hiki08" <Directory "/home/httpd/hiki08"> AllowOverride None Options +ExecCGI +FollowSymLinks #AddHandler cgi-script .cgi RubyRequire apache/ruby-run <Files *.cgi> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> DirectoryIndex index.cgi Allow from all </Directory> <Directory /home/httpd/hiki08/rto> <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY AuthType Basic AuthName "WebDAV Security" AuthUserFile /home/.htpasswd.md5 Require valid-user </Limit> </Directory>
それぞれ、/etc/apache2/conf.d/ の下に、tdiary、hikiという名前で置く。 これで、tDiaryとHikiの移行が終了。認証/アクセス制限を含めて問題ない。
sqwebmail
sqwebmailも設定ファイルをそのまま/etc/apache2/conf/sqwebmailに移行して そのまま動く。
Alias /sqwebmail "/home/httpd/sqwebmail"
SSL
まずは証明書を作る。
# apache2-ssl-certificate
いろいろ聞かれることに答えると、/etc/apache2/ssl/apache.pemに 秘密鍵ができる。
次に /etc/apache2/ports.confに
Listen 443
を追加。
/usr/share/apache2/config/default-443 を /etc/apache2/sites-available/ssl にコピーして書き換える。
<IfModule mod_ssl.c> <VirtualHost pegandgiff.dyndns.org:443 192.168.253.254:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem SSLCertificateKeyFile /etc/apache2/ssl/apache.pem BrowserMatch "MSIE [1-4]" nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [5-9]" ssl-unclean-shutdown SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP ServerAdmin root@pegandgiff.dyndns.org ServerName pegandgiff.dyndns.org DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> # ScriptAlias /cgi-local/ /var/vhosts/::VHOSTNAME::/cgi-bin-443/ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # <Directory "/var/vhosts/::VHOSTNAME::/cgi-bin-443"> # AllowOverride None # Options None # Order allow,deny # Allow from all # </Directory> <Directory "/usr/lib/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error-443.log LogLevel warn CustomLog /var/log/apache2/access-443.log combined ServerSignature On Alias /icons/ "/usr/share/apache2/icons/" Alias /manual/ "/usr/share/doc/apache2-doc/manual/" <Directory "/usr/share/apache2/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> </IfModule>
moduleをloadしてSSLを有効に。
# a2enmod ssl
作成した設定ファイルも有効に。
# a2ensite ssl
これでSSLが有効になった。
WebDAV
これも既存の設定を /etc/apache2/conf.d/dav へ。
Alias /dav "/home/httpd/dav" <Location /dav> DAV On <Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY AuthType Basic AuthName "WebDAV Security" AuthUserFile /home/httpd/dav.htpasswd Require valid-user </Limit> </Location>
このままだと、WindowsXPからの認証はpegandgiff.dyndns\\ユーザ名が 必要になってしまう。これを解決するのがmod_encodingなのだが、 既に入れているはずだ。やっぱり最初に出た.info fileがどーたらという エラーがまずいのか? と、思ったら、肝心のEncodingの指定をしていなかった。 /etc/apache2/conf.d/dav にこれを追加。
<IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS SJIS AddClientEncoding "Microsoft .* DAV" SJIS AddClientEncoding "xdwin9x/" SJIS AddClientEncoding "cadaver/" EUC-JP </IfModule>
せっかくなので SubVersionも試してみたい。
# apt-get install subversion libapache2-svn
そのうち...
quickWeb
/etc/apache2/conf.d/qwik を追加。既存の設定ファイルでは <VirtualHost>を有効にすると 動かなくなるのでコメントアウトしてあったのだが、 とりあえず移行を優先してそのまま。
#<VirtualHost pegandgiff.dyndns.org> ProxyPass /.theme/ http://127.0.0.1:9190/.theme/ ProxyPass /qwik/ http://127.0.0.1:9190/ #ProxyPass / http://127.0.0.1:9190/ ProxyPass /qwik-test/ http://127.0.0.1:9191/ #</VirtualHost>
これで/qwik/にアクセスすると、Forbiddenでダメ。 /etc/apache2/mods-available/proxy.confのdefaultで Deny from allしてる。特定のクライアントからのみ許可せよ、 という意図なのだろうが、やりたいのはreverse proxyなので... とりあえずAllow from all。行き先を制限する方法は無いのか? それは個別の設定か。どのへんが危険なのかわからんので回避のしようが...
<Proxy *> Order deny,allow Deny from all #Allow from .your_domain.com Allow from all </Proxy>
Apacheドキュメント を見ると、危険なのはProxyRequestsらしい。わかったようなわからんようなだが、 reverseなら問題なさげ。