彩音のBSD日記
そろそろ webサーバ として機能させたいので
Apacheをインストールします。
先日セッティングした ports からのインストールを試みてみましょう。
apache-2.2 のインストール
apache-2.2.11 をインストールします。
# cd /usr/ports/www/apache22
# make
エラー
makeinfoが古いようです。
texinfo をインストールします。
# /usr/ports/print/texinfo
# make
# make install
# rehash
/usr/bin/makeinfo から /usr/local/bin/makeinfo へシンボリックリンクを張ります。
ln -s /usr/local/bin/makeinfo /usr/bin/makeinfo
改めて apache-2.2.11 をインストールに挑戦します。
# cd /usr/ports/www/apache22
# make
# make install
# rehash
うまく行ったようです。
細かい設定はともかく使ってみたいので簡単に設定を済まします。
httpd.conf の設定
FreeBSD-5.5 で ports から apache-2.2.11 を入れたとき、httpd.conf は /usr/local/etc/apache22/httpd.conf にあります。
とりあえず、サーバー管理者とルートの確認、ドキュメントディレクトリの設定だけします。
# cd /usr/local/etc/apache2/
# cp httpd.conf httpd.conf.bak
# vi httpd.conf
初期設定ではこうなっていました。
ServerRoot "/usr/local"
Listen 80
User www
Group www
ServerAdmin you@example.com
DocumentRoot "/usr/local/www/apache22/data"
<Directory />
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/usr/local/www/apache22/data">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
サーバールートは /usr/local
ポートは 80番で
ユーザー、グループとも www で動作
サーバー管理者は you@example.com
ドキュメントルートは /usr/local/www/apache22/data
ルートディレクトリのアクセスは全て無効にしておき
/usr/local/www/apache22/data ディレクトリ設定で
ディレクトリのファイル一覧表示を ON
.htaccess は無効
アクセス制限は許可してから拒否で全てからアクセスを許可に。
とりあえず動くか確認するだけなので、サーバー管理者のメールアドレスのみ変更して保存。
ここで、httpd.conf の構文チェック
# httpd -t
Syntax OK
デーモンですので、rc.conf に設定を追加します。
apache22_enable="YES"
apache22_http_accept_enable="YES"
起動確認
FreeBSD で Apache を制御する場合、 /usr/local/etc/rc.d/apache22 を使います。
起動
/usr/local/etc/rc.d/apache22 start
停止
/usr/local/etc/rc.d/apache22 stop
再起動
/usr/local/etc/rc.d/apache22 restart
ステータス表示
/usr/local/etc/rc.d/apache22 status
rc.d の項目を表示
/usr/local/etc/rc.d/apache22 rcvar
起動してみましょう。
# /usr/local/etc/rc.d/apache22 start
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
ここで、ブラウザからアクセスしてみます。
お〜!ちゃんと通っています。
ステータスと rc.d の項目を確認
#/usr/local/etc/rc.d/apache22 status
apache22 is running as pid 68450.
# /usr/local/etc/rc.d/apache22 rcvar
# apache22
$apache22_enable=YES
よさそうですね。
サーバーの時間がずれているとサーバーアタックの隙を与えるというお話を聞きます。
どういう理屈なのかは詳しくは知りませんが、とりあえず防御のために
時刻同期を自動で行うようにしましょう。
時刻同期は ntpdate と ntpd で出来るそうで、
ntpd はデーモンなのでこいつを起動しておけば常に監視をしてくれるらしいです。
その方が楽なのでこいつを利用しましょう。
まず、ntpd が入っていない事を確認。
# top
案の定入っていません。
念のため、現在時刻がずれているのか確認。
# date
うわぁ…結構ずれています。
とりあえず設定に入ります。
ntp.conf を編集
ntpd の設定ファイルは /etc/ntp.conf なんだそうです。
ここに参照先のサーバーリストを書き込みます。
複数のサーバーを指定すると一番信頼出来ると思われるサーバーを自動的に選択、同期してくれるそうです。
指定先は、日本標準時プロジェクト さんあたりに。
# vi /etc/ntp.conf
server 133.243.238.244 # ntp.nict.jp
server 133.243.238.163 # ntp.nict.jp
server 133.243.238.164 # ntp.nict.jp
server 133.243.238.243 # ntp.nict.jp
server 127.127.1.0
fudge 127.127.1.0 stratum 10
driftfile /etc/ntpd.drift
fudge は優先順位の指定みたいです。大きくすれば後回しになるようです。
一応保険のために、ローカルファイルを一番優先順位を下げて指定しておきます。
driftfile はこのファイルがあると同期が早くなるんだそうです。
動作原理は知りません。
是非、同期を早くしたいので、空ファイルを作っておきます。
# touch /etc/ntpd.drift
そして、デーモン設定の為に /etc/rc.conf に以下を書き込む。
# vi /etc/rc.conf
ntpd_enable="YES"
ntpd_program="/usr/sbin/ntpd"
ntpd_config="/etc/ntp.conf"
ntpd_sync_on_start="YES"
ntpd_flags="-p /var/run/ntpd.pid -f /etc/ntpd.drift"
準備はできたので起動してみましょう。
# /etc/rc.d/ntpd startStarting ntpd.
正常に起動したかログを見てみます。
# tail /var/log/messagesJan 16 11:23:11 ntpd[13702]: ntpd 4.2.0-a Tue May 23 13:17:40 UTC 2006 (1)
大丈夫のようです。
一応デーモンリストを見てみましょう。
# top
いますいます。
起動後、参考にするサーバーにアクセスするまでにしばらく時間がかかるようです。
しばらく待った後、動作を確認してみましょう。
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+ntp-a3.nict.go. .NICT. 1 u 41 256 17 21.960 106193. 1.167
+ntp-b2.nict.go. .NICT. 1 u 38 256 17 24.144 106193. 1.520
+ntp-b3.nict.go. .NICT. 1 u 43 256 17 23.821 106193. 0.994
*ntp-a2.nict.go. .NICT. 1 u 46 256 17 22.168 106192. 1.921
LOCAL(0) LOCAL(0) 10 l 42 64 37 0.000 0.000 0.002
『*』 がついているサーバーと同期しているそうです。
『+』は次候補のサーバーにつくそうです。
更に同期開始までもう少し時間がかかるようです。
ちょっと待ってから、時刻を確認してみましょう。
# date
大丈夫のようです。
これで、自動的に時刻同期が行われるようになります。
portversionはpkg_versionの高機能版。
portversionはportsdbで作成されたデータベースを元にアップグレード可能なpackageをリストアップしてくれる。
- portversion -v
とすると以下のような感じに出力される。
cvsup-without-gui = up-to-date with port
db41 = up-to-date with port
ezm3 = up-to-date with port
fastest_cvsup > succeeds port (port has 0.2.9_5)
gettext > succeeds port (port has 0.16.1_3)
gmake > succeeds port (port has 3.81_2)
libiconv = up-to-date with port
libtool > succeeds port (port has 1.5.24)
linux_base-8 = up-to-date with port
perl > succeeds port (port has 5.8.8_1)
portupgrade-devel > succeeds port (port has 2.4.3_1)
ruby > succeeds port (port has 1.8.6.111_2,1)
ruby18-bdb > succeeds port (port has 0.6.2)
packageごとに「=」「<」「>」のようにインストールしてあるpackageと最新のportsのバージョンを比較してくれる。
現在インストールされているpackageを基準にすると、「=」が同じ、「<」が古い(アップグレード対象)、「>」が新しい(通常は出ない)になる。