ブログサイト(笑)構築のため、tDiary を FreeBSD 機にインストールする。
まず、最新安定版をダウンロードしてくる。
http://www.tdiary.org/download/tdiary-full-2.0.0.tar.gz
serv2# pwd
/usr/local/src/tdiary
serv2# lynx http://www.tdiary.org/download/tdiary-full-2.0.0.tar.gz
展開。
serv2# ls -la
total 1684
drwxr-xr-x 2 root wheel 512 Nov 3 08:12 .
drwxr-xr-x 16 root wheel 1024 Nov 3 08:11 ..
-rw-r--r-- 1 root wheel 1694168 Nov 3 08:12 tdiary-full-2.0.0.tar.gz
serv2# tar xvzf tdiary-full-2.0.0.tar.gz
tdiary-2.0.0/
tdiary-2.0.0/ChangeLog
tdiary-2.0.0/README
tdiary-2.0.0/dot.htaccess
tdiary-2.0.0/index.rb
<略>
tdiary-2.0.0/theme/yukon/yukon_dayback.jpg
tdiary-2.0.0/theme/yukon/yukon_divbodyback.jpg
tdiary-2.0.0/theme/yukon/yukon_h1back.jpg
う〜む。index.rb か・・・。Ruby だな。(笑)
展開してみるまで、tDiary が Ruby で書かれているとは知らなかった。(笑)
ということで、Ruby のインストールから始めないといけないが、FreeBSD には packages があるので楽だ。
インストーラを使って、ネットワーク経由で packages のインストールを行う。(ちなみに、tDiary にとっては、Ruby 1.6.3 以降のバージョンでないとよろしくないそうだ)
serv2# /stand/sysinstall
'Configure' → 'Packages' → 'FTP' → 'Japan' → 'ruby' → 'ruby-1.8.1.p2' の順にメニューを辿る。で、インストール。(ruby-1.6.8.2003.10.15 もあるが、こっちが安定版なのかな?)
Ruby のインストール終了。
serv2# pkg_info | grep ruby
ruby-1.8.1.p2 An object-oriented interpreted scripting language
serv2# rehash
serv2# which ruby
ruby: Command not found.
あり?
serv2# ls -la /usr/local/bin/ruby*
-rwxr-xr-x 1 root wheel 3380 Dec 5 2003 /usr/local/bin/ruby18
む〜ん?ruby18 などという名前で入っているとは!!シンボリックリンクを張ります。
serv2# ln -s /usr/local/bin/ruby18 /usr/local/bin/ruby
serv2# rehash
serv2# ruby -v
ruby 1.8.1 (2003-10-31) [i386-freebsd5]
で、tdiary のファイル群を /usr/local/share/apache/cgi-bin/tdiary 以下にコピー。
serv2# cd /usr/local/share/apache/cgi-bin/
serv2# mkdir tdiary
serv2# cd t*
serv2# chown www .
serv2# cp -r /usr/local/src/tdiary/tdiary-2.0.0/* /usr/local/share/apache/cgi-bin/tdiary
serv2# ls -la /usr/local/share/apache/cgi-bin/tdiary
total 138
drwxr-xr-x 9 www wheel 512 Nov 3 11:09 .
drwxr-xr-x 8 root wheel 512 Nov 3 11:07 ..
-rw-r--r-- 1 root wheel 55028 Nov 3 11:09 ChangeLog
-rw-r--r-- 1 root wheel 287 Nov 3 11:09 README
drwxr-xr-x 2 root wheel 512 Nov 3 11:09 doc
-rw-r--r-- 1 root wheel 478 Nov 3 11:09 dot.htaccess
drwxr-xr-x 2 root wheel 512 Nov 3 11:09 erb
-rwxr-xr-x 1 root wheel 2955 Nov 3 11:09 index.rb
drwxr-xr-x 6 root wheel 512 Nov 3 11:09 misc
drwxr-xr-x 5 root wheel 512 Nov 3 11:09 plugin
drwxr-xr-x 2 root wheel 1024 Nov 3 11:09 skel
drwxr-xr-x 4 root wheel 512 Nov 3 11:09 tdiary
-rw-r--r-- 1 root wheel 12657 Nov 3 11:09 tdiary.conf.sample
-rw-r--r-- 1 root wheel 38633 Nov 3 11:09 tdiary.rb
drwxr-xr-x 197 root wheel 3584 Nov 3 11:09 theme
-rwxr-xr-x 1 root wheel 2759 Nov 3 11:09 update.rb
コマンドラインから試しに実行してみる。
serv2# ./index.rb
(offline mode: enter name=value pairs on standard input)
Content-Type: text/plain
No such file or directory - tdiary.conf (Errno::ENOENT)
./tdiary.rb:471:in `initialize'
./tdiary.rb:471:in `open'
./tdiary.rb:471:in `load'
./tdiary.rb:399:in `initialize'
./index.rb:21:in `new'
./index.rb:21
Ruby のスクリプトを CGI として実行出来るかブラウザからアクセスして試してみる。(ま、httpd.conf を見ればわかるんじゃけどね(^^;)
で、IE で http://www.netandfield.com/cgi-bin/tdiary/index.rb にアクセスしてみると、無事(?)、
No such file or directory - tdiary.conf (Errno::ENOENT)
/usr/local/share/apache/cgi-bin/tdiary/tdiary.rb:471:in `initialize'
/usr/local/share/apache/cgi-bin/tdiary/tdiary.rb:471:in `open'
/usr/local/share/apache/cgi-bin/tdiary/tdiary.rb:471:in `load'
/usr/local/share/apache/cgi-bin/tdiary/tdiary.rb:399:in `initialize'
/usr/local/share/apache/cgi-bin/tdiary/index.rb:21:in `new'
/usr/local/share/apache/cgi-bin/tdiary/index.rb:21
というエラーが表示された。
CGI として実行出来るということじゃね。
では、設定を。
まずは、httpd.conf を編集し、
・コンテンツスケルトンファイル(*.rhtml)を直接参照出来ないようにする。
・外部モジュール(?)や設定ファイルを直接参照出来ないようにする。(tdiary.* ファイル)
・index.rb をインデックスファイルとする。
という設定を行う。
<VirtualHost www.netandfield.com:80>
ServerAdmin webmaster@netandfield.com
DocumentRoot /usr/local/share/apache/htdocs
ServerName www.netandfield.com
ErrorLog /var/log/apache/logs/www.netandfield.com/error_log
CustomLog /var/log/apache/logs/www.netandfield.com/access_log combined
ScriptAlias /cgi-bin/ "/usr/local/share/apache/cgi-bin/"
<Directory "/usr/local/share/apache/cgi-bin">
DirectoryIndex index.rb
Options ExecCGI
<Files "*.rhtml">
deny from all
</Files>
<Files "tdiary.*">
deny from all
</Files>
</Directory>
</VirtualHost>
次に、日記データを置くディレクトリを作成する。
セキュリティ上は、Apache のドキュメントルート以下のディレクトリには置かないほうが良いんだが、今回は複数のユーザーに「ブログ屋」的にブログ運用サービスをしようと思っているので、なるべくユーザー毎のファイルを一カ所にまとめておきたい。
つーことで、CGI のディレクトリ下に置くことにする。(試しに)
serv2# pwd
/usr/local/share/apache/cgi-bin/tdiary
serv2# mkdir diary
serv2# ls -la diary
total 4
drwxr-xr-x 2 root wheel 512 Nov 3 16:55 .
drwxr-xr-x 10 www wheel 512 Nov 3 16:56 ..
serv2# chown www diary
serv2# ls -la diary
total 4
drwxr-xr-x 2 www wheel 512 Nov 3 16:55 .
drwxr-xr-x 10 www wheel 512 Nov 3 16:56 ..
これでOK。
次に、設定ファイル(tdiary.conf)の作成を行う。
サンプルが付いてきているので、これを修正する。
serv2# cp tdiary.conf.sample tdiary.conf
serv2# vi tdiary.conf
#@data_path = '/home/foo/diary'
@data_path = '/usr/local/share/apache/cgi-bin/tdiary/diary'
あとの項目は設定 CGI で変更出来るそうなので、これだけ修正。
で、ブラウザで先ほどの URL にアクセスしてみる。
あ、表示された。
で、ここから README ファイルを読もうとすると、http://www.netandfield.com/cgi-bin/tdiary/doc/README.html へのアクセスで 'Internal Server Error' が・・・。
確かに、cgi-bin の下じゃ、html ファイルの閲覧なんか許してないけんね。(基本的に、cgi-bin ディレクトリに Options ExecCGI しか指定していないから、このディレクトリにあるファイルは全部実行ファイルとみなされちゃうけんね)
つーことで、HTML ファイルなどは実行ファイルではなく、本来の MIME タイプでハンドリングさせるよう、AddHandler default-handler .html .htm .gif .jpg という設定を httpd.conf に追加する。
httpd.conf の当該部分は、最終的に以下のような形に。(他の CGI に設定が影響を受けないように、cgi-bin と、その子の tdiary ディレクトリでディレクティブを分けた)
<VirtualHost www.netandfield.com:80>
ServerAdmin webmaster@netandfield.com
DocumentRoot /usr/local/share/apache/htdocs
ServerName www.netandfield.com
ErrorLog /var/log/apache/logs/www.netandfield.com/error_log
CustomLog /var/log/apache/logs/www.netandfield.com/access_log combined
ScriptAlias /cgi-bin/ "/usr/local/share/apache/cgi-bin/"
<Directory "/usr/local/share/apache/cgi-bin">
Options ExecCGI
</Directory>
<Directory "/usr/local/share/apache/cgi-bin/tdiary">
AddHandler cgi-script .rb
AddHandler default-handler .html .htm .gif .jpg
DirectoryIndex index.rb
<Files "*.rhtml">
deny from all
</Files>
<Files "tdiary.*">
deny from all
</Files>
</Directory>
</VirtualHost>
これで、
serv2# /usr/local/apache/bin/apachectl configtest
Syntax OK
serv2# /usr/local/apache/bin/apachectl restart
serv2# ps -ax | grep httpd
2241 ?? Ss 1:58.98 /usr/local/apache2/bin/httpd -k start
85452 ?? S 0:00.00 /usr/local/apache2/bin/httpd -k start
85453 ?? S 0:00.00 /usr/local/apache2/bin/httpd -k start
85454 ?? S 0:00.00 /usr/local/apache2/bin/httpd -k start
85455 ?? S 0:00.00 /usr/local/apache2/bin/httpd -k start
85456 ?? S 0:00.00 /usr/local/apache2/bin/httpd -k start
85458 p2 RV 0:00.00 grep httpd (csh)
と、Apache を再起動してやれば、HTML ファイルの閲覧で 'Internal Server Error' が出ることはなくなった。
さて、次は細かい設定を・・・
|
|