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なら問題なさげ。
