Apacheと朔を組み合わせて使う方法
2005-11-25, 2007-01-05
Apacheのリバースプロキシ機能を使って、 朔のURIからポート番号を消してかっこよくします。 RSSを静的生成するので負荷を低くする効果も期待できます。
この例ではDNS名が bbs.shingetsu.info 、 Apacheでのドキュメントルートが /srv/www/shingetsu です。 LAN上のIPアドレスは 192.168.1.2 です。
朔では server_name 等を設定してください。
[Gateway] server_name: bbs.shingetsu.info proxy_destination: 192.168.1.2:8000 [Path] apache_docroot: /srv/www/shingetsu
Apacheの設定
プロキシモジュールとリライトモジュールを読み込みます:
LoadModule cache_module /usr/lib/apache2/modules/mod_cache.so LoadModule disk_cache_module /usr/lib/apache2/modules/mod_disk_cache.so LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
プロキシとリライトの設定はこんな感じ:
<VirtualHost *>
ServerAdmin webmaster@shingetsu.info
DocumentRoot /srv/www/shingetsu
ServerName bbs.shingetsu.info
ServerAlias bbs.shingetsu.info
ErrorLog /var/log/apache2/shingetsu.error.log
CustomLog /var/log/apache2/shingetsu.access.log combined
RewriteMap escape int:escape
<Directory "/">
<Limit POST>
Include /etc/apache2/acl
</Limit>
</Directory>
<Directory "/srv/www/shingetsu">
Options -Indexes -ExecCGI
AddType text/xml;charset=UTF-8 .rdf
RewriteEngine on
RewriteRule gateway.cgi/rss rss.rdf
RewriteRule server.cgi - [F]
RewriteRule ^([^/]*).js$ /STATIC/$1.js
RewriteRule ^([^/]*).css$ /STATIC/$1.css
RewriteRule favicon.ico /STATIC/favicon.ico
RewriteRule rss1.xsl /STATIC/rss1.xsl
RewriteRule ^thread.cgi/(thread_[0-9A-F]*)/([0-9a-f]*)/([0-9]*).(.*) \
/CACHE/$1/attach/$3_$2.$4
<IfModule mod_proxy.c>
RewriteRule gateway.cgi(.*) \
http://192.168.1.2:8000/gateway.cgi${escape:$1} [P,NE]
RewriteRule thread.cgi(.*) \
http://192.168.1.2:8000/thread.cgi${escape:$1} [P,NE]
</IfModule>
</Directory>
Alias /STATIC/ /usr/local/share/saku/www/
<Directory "/usr/local/share/saku/www">
Options -Indexes -ExecCGI
</Directory>
Alias /CACHE/ /var/local/spool/saku/
<Directory "/var/local/spool/saku/">
Options -Indexes -ExecCGI
</Directory>
</VirtualHost>
<VirtualHost *>
ServerAdmin webmaster@shingetsu.info
DocumentRoot /srv/www/shingetsu
ServerName node.shingetsu.info
<Directory />
RedirectMatch ^/$ http://shingetsu.info/
</Directory>
</VirtualHost>
この例ではbbs.shingetsu.infoへのアクセスを朔に飛ばします。 ただしRSSは飛ばしません。 server.cgiは見せません。
aclというのは次のようなファイルです。 Spamを送ってくる相手を手作業でブラックリストに入れます。
Order Allow,Deny Allow from All Deny from 10.0.0.0/8 Deny from 192.168.0.0/16
これらの設定例は朔の2.0.0以降に同梱されています。
RSSとサイトマップの静的生成
朔の2.0.0以降に同梱されている mkrss.pyをcronで定期的(1時間に1回くらい)に動かします。 デフォルトでは /usr/local/lib/saku/mkrss にインストールされます。