JUDstyle 自宅サーバ構築 All your MML R belong 2 us.
SNS
Dialies
昔の駄日記
日常堕日記
Twitter Log
Musics
PMD関連
雑多
Computers
Games


since 8,Aug,1999
1st written at Jul,7,2005
Last update at Apr,26,2006

動機

サーバの必要性

自宅の内外かかわらず、ちょっと思い立ったこととかある程度のドキュメントを作らないと作業が落ち着かないような場合、いちいちHTMLでマークアップしたりプレーンテキストで一生懸命書いたりする非効率さに疲れてきたので、wikiクローンを使ってこれらテキスト作成の手間を軽減しようというのが狙い。それにサークル内で文書を共用できるというのも魅力的。

wikiクローン選定

wikiクローンは様々あるが、普段使っていて記述がしやすいということ、親切なマニュアルがWikipedia内にあるということから、Mediawikiに決定。多くの場合仕事場で使っていたのはpukiwikiだが、このpukiwikiのマークアップはあまり強力でないし使いづらいので却下。

OS選定

必要なものがそろっていること、日本語の文書量が多いこと、UTF-8が使えること、自身の使用実績があることからFedora Coreに決定。他に候補としてはVine Linuxもあったが、癖が強いというのと、デスクトップ環境を使わないというのでこちらに決定した。保守用と緊急時のツールとして、といっても何に使うわけでもないがWindows2000もインストールしておくことにする。

必要なもの

サーバ用ハードウェア

用途も考えればたいしたことがないものでも良いのだろうが、おおよそ24時間動作させっぱなしなので、HDDと空調だけは新品を用意する。また、空調は大径低回転のものを用意しないと、夜も眠れなくなる。電源装置は静音のものを用意する。

グローバルIPアドレスを伴ったインターネット接続

ADSL/VDSL共存を参照。

OS

FTPダウンロードする。

wikiクローンアプリ

FTPダウンロードする。

努力と根性

そしてtry and error。

ハードウェア

サーバPC

サーバ用PCは、過去普通に使用していたPCから掃きだされた余りパーツで1台組み上げた。これのために新規で買ったパーツは一切ない、安上がりなものである。電源は静かなファンレス電源が余っていたのでこれを使う。スペックは以下の通りだが、ここには構築上あんまり関係のない、排気ファンやキーボード・マウスなどは書いていない。
Case/Power
自作用ATXケース+120WファンレスACアダプタ電源
MainBoard
ASUS CUSL2
CPU
intel Celeron 1GHz
Memory
512MBytes PC133
HDD
80GB 流体軸受5400RPM
Video
onboard VGA
NIC
onboard 100Base/TX
という感じで、本体背面の大型ファンがゆっくり回っているのと、CPUファンが回っているだけなので、静かだ。本当はHDDもフラッシュメモリにしてしまいたいが、本格的に予算を立てなければならないので今回は見送り、安くて静かな流体軸受け5400RPMのHDDを使用した。

ネットワーク設定(Router編)

インターネット接続

インターネット接続はdionのADSL1.5Mを契約した。経緯はADSL/VDSL共存にて紹介している。ADSL契約後、工事完了を待って接続確認を行い、サーバがまだできていないのでノートPCを接続して動的ではあるがグローバルアドレスが付与されることや、DNSの確認、HTTPやFTPなど最低限の接続がうまくいくことを確認した。

Router

dionから貸与された、RJ11が1個、RJ45が1個だけ装備されているRouterをそのまま使った。物理的なネットワークは従来の室内LANと同じラインを使うので、Hub内蔵のものをわざわざ買い求めたりはしない。

ネットワーク接続図

ネットワークの概念的な接続は右の通り(ただし、物理的な部屋内アイテムの配置により、詳細は異なる)。ADSL-Routerが提供する仮想DMZ機能により、2つのネットワークを共存させている。

DMZ

仮想DMZ機能により、対象のサーバが外部からアクセスできるようにしなければならない。ADSL-RouterのLAN側ポートは、VDSL-RouterのDHCPにより自動付与するため、室内LANと同じセグメントに配置されることになる。これは多少セキュリティに不安が出ることは出るが、仮想DMZ内のサーバから室内LANへはRoutingしないことで問題はなくなる。

セキュリティ

DMZへのアクセスは基本的に通すが、使用できるポートには当然制限をかける。無条件に通すのはHTTPのみで、それ以外はアクセス先を限定してsFTPやSSHを通すくらい。

サーバ構築(1)

OS(Win)

まず、16GBのパーティションを作成して、Windows2000を入れておく。接続テストとか、ドキュメントの閲覧とか、緊急時の雑用とか、何かと便利。こちら側で起動する際は、セキュリティ対策も何にもしていないので、ネットワークはファイアウォールの内側にある室内LANを使い、アドレスもDHCP任せ。最低限ServicePackやらセキュリティパッチを当てて、終了。WINNYでも入れてみようかと思ったが、そんな暇はないので放置。

OS

引き続きOSのインストールを行う。FedoraCore4を使用する。特に何も考えずにFedora JPから適当に辿り、最新のものをダウンロード。i386だけでCDイメージが4枚あるが、時間がかかってしょうがない。これをダウンしたらCD-Rに焼いて、インストールする。もちろん、ディスクチェックはやっておくこと。本当はDVDを使って1枚で済ませたかったのだが、困ったことにCUSL2ではDVDブートができず、DVD-Rメディアを1枚損しただけだった。

ネットワーク設定

通常室内のLANには192.168.1.255のネットワークを使用しているが、仮想DMZとして192.168.129.255のネットワークを使用する。そのために、ADSL-Routerの設定を以下のように変更する。
仮想DMZネットワーク
192.168.129.255/255.255.255.0
DMZ側アドレス
192.168.129.1
DMZホスト
192.168.129.33
一方、Server側のネットワーク設定だが、
IPアドレス
192.168.129.33/255.255.255.0
DNS(1)
192.168.129.1
DNS(2)
192.168.1.1 ←室内LAN用DNS

iptables

外部からこれでもかこれでもかといろんなAttackが予想されるので、通すパケットは当然制限してしかるべき。基本的にはINの80のみ、あとはいつも通りの設定。FTPやSSH、それにいろいろと今のうちに設定しておきたいところだが、最初に大穴を空けてしまうと問題が発生したときに問題点を見つけ辛くなるので、あとまわし。

apache

FedoraCore4のインストール時に設定しておいて、後はxinetdを起動するように設定するだけ。最初はHTTPサーバが立ち上がることだけを確認していきたいので、これといって特段難しいことはしていない。

その後行った設定は以下の通り。
CGI動作
全てのディレクトリで動作するように設定
Indexes
余計な情報公開は禁止
DocumentRoot
深いところだと面倒なので浅いところに変更

MySQL

起動の確認をしたのみ。バージョンはFedoracore4をインストールしたまま。

PHP

確認すらしてない・・・・。バージョンはFedoracore4をインストールしたまま。

その他

FTP
内部LAN向けだけ許可。ProFTPDを使いたかったのでインストールしようとしたが、vsftpdとコンフリクトしたので、vsftpdをremoveした。最初から入れなければいいんだけど、インストール時の設定が面倒で「全てのパッケージ」をインストールしてしまったから。
SSH
内部LAN向けだけ許可

サーバ構築(1)確認

ここで、外部からHTTPサーバに繋がるかどうか確認しておかなくてはならない。ADSL-Routerの設定を確認して、RouterのグローバルIPアドレスをメモしておく。次にVDSLを使ってinternet接続しているPCから、IPアドレス直入力でAPACHE(というかFedoraCore4の)初期設定通りにHTMLが表示されればOK。ついでにVAIOノートからPHSでダイヤルアップして同様確認。PHSデータカードない人は携帯電話のブラウザでもいいだろうけど。

サーバ構築(2)

MediaWiki

まずはWikipediaから辿ってMediawikiを手に入れるところから始める。

前準備(SQLサーバ)

まずはMySQLの設定。
起動
まずはMySQLを起動するようにサービスの設定をする。
DB作成
データベース wikidb を作成。
ユーザ作成
ユーザ wikiuser を作成。権限はALLにすること。

MediaWiki導入

ようやく、MediaWiki導入。初期設定における説明で省略されている項目は、全てデフォルト値を使用した。
ダウンロード
MediaWiki 1.5.7 をダウンロードし、mediawiki-1.5.7.tar.gzを解凍。
展開
mediawiki-1.5.7/ ディレクトリが作成されるので、これをDocumentRootに移動する。この際、名前もwiki/に変更しておく。これが、MediaWikiにアクセスしたときのURLになるので、あんまり長くない方がいいだろう。
configディレクトリ設定
wiki/config/ ディレクトリを、パーミッション 777 に変更しておく。
初期設定
http://127.0.0.1/wiki/にアクセスすると、「You'll have to set the wiki up first!」と表示されるので、リンクをクリックすると初期設定画面に誘導される。ちなみに、URLの「wiki」部分は、ひとつ前の項目で設定したディレクトリ名だ。
Site name
サイト名を入力する。適当にただ名前を付けるだけ。HTMLヘッダのTITLEに使われたりもする。
Language
Ja 日本語 を選択する。日本人じゃない人は適当にやってくれ。
Sysop account name
アカウント名はデフォルトのままで、パスワードを適当に考えて2回入力。
DB password
2回入力。MySQLでwikiuserユーザを作成したときのパスワードを入力すればよい。
Database table prefix
他にもMySQLを使うアプリがあると衝突するので、某かの名前は付けておこう。ここまで確認したら、「install!」のボタンをクリックする。
結果
Success! Move the config/LocalSettings.php file into the parent directory, then follow this link to your wiki と表示されれば、初期設定は成功。そうでないときはエラーの内容が表示されるので、頑張って直すこと。
ローカル設定
wiki/config/LocalSettings.php を wiki/ にコピーしておく。

構築後にとりあえずすること

表示確認
wiki/ をブラウザから表示して、上手く表示されていることを確認すること。ダメな場合は、まず文字コードを疑うこと。UTF-8だから。
ロゴ画像
メインページの左上に表示されるロゴ画像は DOCROOT/wiki/skins/common/images/wiki.png なので、適当に作るなりして差し替えておく。
IPユーザ編集を禁止
wiki/LocalSettings.php に 「$wgGroupPermissions['*']['edit'] = false; 」という行を挿入して、IPユーザの編集を禁止する。IPアドレスが編集者名として出てくると、なんか萎える、という人向け。

ログ

MediaWikiを導入した際のログを一部残しておく。どうもDBの設定やユーザの作成に困っている人が多いようだ。


[root@localhost www]# chmod 777 wiki/config
[root@localhost www]# mysqladmin create wikidb-cc
[root@localhost www]# mysql -uroot -p wikidb-cc
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 649 to server version: 4.1.11

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> GRANT ALL PRIVILEGES ON *.* TO wikiuser@localhost
-> IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.05 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.03 sec)

mysql> quit
Bye
[root@localhost www]# cd wiki

  [ ここでブラウザを使ってMediaWikiのセットアップをする ]

[root@localhost wiki]# cp config/LocalSettings.php .

課題

バックアップ

ファイル単位? ディスク丸ごと? Mediawikiの機能を使う?
written by JUD / powered by FreeBSD, FedoraCore, APACHE, MediaWiki.