FreeBSD

apache2

  1. インストール
  2. バーチャルドメイン
  3. CGI & ベーシック認証
  4. Nucleus
  5. PukiWiki
  6. Webalizer
  7. GsBlog
  8. Estraier

1. インストール

まずは、apache2 をインストールします。www.kncn.net にログインし ports/www/apache2/ で何も考えずに make install しました。ディレクトリのファイルの一覧を表示しないようするため /usr/local/etc/apache2/httpd.conf に若干の変更を加えました。
Options Indexes FollowSymLinks
Options -Indexes FollowSymLinks
他、ServerAdmin などを適切に(適当に?)設定し、/etc/rc.conf
apache2_enable="YES"
を追記してリブートすれば /usr/local/sbin/httpd が起動すると思います。ブラウザから http://www.kncn.net/ にアクセスしてこんなページがご覧いただければインストールは成功です。

2. バーチャルドメイン

DNS の設定でも述べたように、このサーバでは2つのドメインを運用します。バーチャルドメインを運用するということです。www.kncn.net でアクセスすれば /usr/local/www/data/ 以下のページを、www.example.net でアクセスすれば /usr/local/www/data/example/ 以下のページを表示するようにします。そのためには /usr/local/etc/apache2/httpd.conf で以下をコメントアウトし
# ServerAdmin webmaster@kncn.net
# DocumentRoot "/usr/local/www/data"
# CustomLog /var/log/httpd-access.log combined
# ErrorLog /var/log/httpd-error.log
以下を追加します。
NameVirtualHost 192.168.0.130

<VirtualHost 192.168.0.130>
	ServerAdmin webmaster@kncn.net
	DocumentRoot /usr/local/www/data
	ServerName www.kncn.net
	ErrorLog /var/log/httpd-error.log
	CustomLog /var/log/httpd-access.log combined
</VirtualHost>

<VirtualHost 192.168.0.130>
	ServerAdmin webmaster@kncn.net
	DocumentRoot /usr/local/www/data/example
	ServerName www.example.net
	ErrorLog /var/log/httpd_example-error.log
	CustomLog /var/log/httpd_example-access.log combined
</VirtualHost>
ログファイルは分ける必要もないのかもしれませんが、後ほど Webalizer でドメイン各々の利用統計をとるために別々としました。
また、http://www.kncn.net/example〜 でのアクセスを http://www.example.net に振り向けるために、以下を追加しました。
Redirect permanent /example http://www.example.net
Redirect temp /example http://www.example.net

3. CGI & ベーシック認証

ゲストルーム(要するに掲示板ですね)を運営するために CGI を許可しなければいけません。httpd.conf に以下のよう追加し特定のディレクトリ以下での CGI の実行を許可しました。
<Directory "/usr/local/www/data/guest">
	Options -Indexes FollowSymLinks ExecCGI Includes
	AddHandler cgi-script .cgi
</Directory>
また、先ほど述べた Webalizer のディレクトリを公開するのもいかがなものかと思いますので、簡単に認証機構をつけてみました。httpd.conf を以下のように変更し
AllowOverride None
AllowOverride All
当該ディレクトリに .htaccess を以下の内容で作成しました。
AuthType Basic
AuthName "www.kncn.net webalizer"
AuthUserFile /usr/local/etc/apache2/.htpasswd
Require valid-user
続いてパスワードファイルを作成しました。

# htpasswd -mc /usr/local/apache2/.htpasswd oyaji
New password: ********
Re-type password: ********
Adding password for user oyaji

これで、当該ディレクトリにアクセスしようとした場合、ユーザ名・パスワードを求めるようになります。

4. Nucleus

流行の blog システムを作るため Nucleus をインストールしました。MySQL が必要とのことなので、ports/database/mysql40-server で

# make WITH_CHARSET=ujis install

を行いました。また Nucleus は php で書かれていますので、ports/lang/php5-extentions を MBSTRING と MYSQL をつけて(他のオプションはそのままで)インストールしました。続いて httpd.conf に以下を変更・追記しました。
# LoadModule php5_module libexec/apache2/libphp5.so
のコメントをはずし
LoadModule php4_module libexec/apache2/libphp5.so
をコメントアウト
DirectoryIndex index.html index.html.var
DirectoryIndex index.html index.html.var index.php
に変更
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
を追記

リブートして、MySQL の root のパスワードの設定と、ユーザ作成・パスワード設定を行いました。

# mysql -u root mysql mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
mysql> GRANT ALL ON *.* TO user@localhost;
mysql> SET PASSWORD FOR user@localhost=PASSWORD('user_password');

これで準備は整いました。こちらから Nucleus3.1_ja_euc.zip をダウンロードし、こちらのページを参考にしながら、インストール、初期設定を行いました。こちらでご覧いただけます。

5. PukiWiki

blog があるなら wiki もということで、PukiWiki をインストールしてみました。すでに、Nucleus のところで環境はそろっているので、pukiwiki-1.4.4_php5.tar.gz をダウンロード・展開し、こちらに従ってファイルを配置して終了です。

6. Webalizer

アクセス解析をするために、Webalizer を使っています。FreeBSD では日本語化された ports が用意されていますので、ports/japanese/webalizer/ で make install しました。webalizer 用のディレクトリ /usr/local/www/data/example/webaliser を作り、/usr/local/etc/ja-webalizer.conf-dist を /usr/local/etc/webalizer.conf にコピーし、変更・追記しました。
LogFile		/var/log/httpd_example-access.log
OutputDir	/usr/local/www/data/example/webalizer/
Incremental	yes
HostName	www.example.net
PageType	htm*
PageType	cgi
PageType	php
PageType	pl
DNSCache	dns_cache.db
DNSChildren	10
HTMLHead	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-euc-jp">
HideSite	*.kncn.net
HideSite	192.168.0.*
HideSite	*.example.net
HideSite	localhost 
HideReferrer	www.example.net/ 
HideURL		*.gif
HideURL		*.GIF
HideURL		*.jpg
HideURL		*.JPG
HideURL		*.png
HideURL		*.PNG
HideURL		*.ra
HideURL		*.css
HideURL		*.CSS
HideURL		*.ico
SearchEngine	yahoo.com	p=
SearchEngine	altavista.com	q=
SearchEngine	google.com	q=
SearchEngine	eureka.com	q=
SearchEngine	lycos.com	query=
SearchEngine	hotbot.com	MT=
SearchEngine	msn.com		MT=
SearchEngine	infoseek.com	qt=
SearchEngine	webcrawler	searchText=
SearchEngine	excite		search=
SearchEngine	netscape.com	search=
SearchEngine	mamma.com	query=
SearchEngine	alltheweb.com	query=
SearchEngine	northernlight.com	qr=
SearchEngine	yahoo.co.jp	p=
SearchEngine	google.co.jp	q=
SearchEngine	infoseek.co.jp	qt=
SearchEngine	msn.co.jp	q=
SearchEngine	goo.ne.jp	MT=
SearchEngine	biglobe.ne.jp	q=
SearchEngine	nifty.com	Text=
SearchEngine	excite.co.jp	search=
SearchEngine	livedoor.com	q=
SearchEngine	jp.aol.com	query=
以下のようなスクリプトを作り cron でまわしています。
#!/bin/sh
/usr/local/bin/ja-webalizer -c /usr/local/etc/webalizer.conf > /dev/null 2>&1

7. GsBlog

Nucleus に使いにくさを感じてしまった私は、別の blog システムもインストールしてしまいました。GsBlog です。こちらも MySQL を使うようで、あらかじめデータベースを作成しておく必要があるようです。

% mysql -h host -u username -p
Enter password: ********
mysql> CREATE DATABASE dbname;

で、データベースを作成しました。後はこちらのサイトの説明どおりに設置して、テンプレートをチョコチョコっと変更しました。成果はこちらです。

8. Estraier

全文検索エンジンとして Estraier を使いました。例によって ports/japanese/estraier/ で make install すると何事もなくインストール終了。早速こちらを参考にしながら、転置インデックスを作成しようとしました。しかし、
estindex: QDBM does not feature iconv
とのエラーが出てしまいます。qdbm が iconv を使えないとのこと? pkg_remove qdbm 後 ports/database/qdbm/ で make CONFIGURE_ARGS+=--enable-iconv install でインストールしなおしました。
# 2004/12/12 追記
ports/japanese/estraier/ は ports/textproc/estraier/ に移動しました
qdbm の問題も解決されたようです
再度 ports/japanese/estraier/ で make install しました。今度は、
chasen: can't open .chasenrc, .jumanrc
とのエラー。chasen を使うのですが、ここまでの状態では chasen 用の辞書もなく .chasenrc もありません。ports/japanese/ipadic/ で make install しました。これで無事、転置インデックスも作成完了できました。情報の更新があった時のために、下記のスクリプトを cron で廻しています。
#!/bin/sh
cd /home/aaa/bbb/
/usr/local/bin/estindex purge casket
/usr/local/bin/estindex register casket
/usr/local/bin/estindex optimize casket
/usr/local/bin/estindex relate casket