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

Last modified: 2011-03-20 by Unknown