自宅サーバ設置 その3

今日はApacheのための準備をして chroot空間(/home/r/)のライブラリ群の設定。めんどくさい場合はchrootしたい環境の下にmake worldをして適当に削る。この場合の作業はざっくりこんな感じ。

# D=/home/r
# cd /usr/src
# mkdir -p $D
# make world DESTDIR=$D
# cd /usr/src/etc
# make distribution DESTDIR=$D

と言う感じ。うちのマシン(Celeron 1GHz)だとだいたいmake worldが3時間程度の模様。(make worldみたいな操作は寝ている間にがんばってもらう。) 終わったところで、chroot環境として動いてもらわねばならないので、/r/dev以下を生成する。FreeBSDの場合はDevfsになっているので、こんな感じにする。

# mount -t devfs devfs /r/dev
# devfs rule -s 10 delset
# devfs rule -s 10 add hide
# devfs rule -s 10 add path null unhide
# devfs rule -s 10 add path zero unhide
# devfs rule -s 10 add path random unhide
# devfs rule -s 10 add path uraondom unhide
# devfs -m /r/dev rule -s 10 applyset

/r/dev以下はnullとzeroとrandomとurandomのみにしてあとは隠すと言うルール。実際はこのコマンドは装置起動時もしくはデーモンの起動スクリプトで実行するのがよい。/r/etc以下は

```makefile /r/etc/Makefile all: spwd.db passwd

spwd.db: master.passwd

master.passwd: /etc/passwd cat $> \ |grep -v ‘^#’ \ |awk -F: \ ‘{printf “%s:*:%s:%s::0:0:%s:%s:%s\n”,3,5,7}’ \ > $@ chmod og-r $@

spwd.db: master.passwd pwd_mkdb -d . $>

passwd: master.passwd pwd_mkdb -d . -p $>


と言う内容のMakefileをつくっておいて、

    # cd /r/etc
    # make

とすると、chroot 環境に必要なパスワード情報を取り込むようになる。

## Apache起動

ここまで準備したことにより、Apacheを起動できる算段となった。Apacheは普通にインストールしてchrootする環境下(/home/r/に丸ごとコピーするのが手っ取り早いと思う。ApacheもDaemontoolで管理することにするため、以下のようなrunスクリプトを書く。(Daemontoolの使い方は前日の日記を参照。)

```bash /usr/local/apache2/apache/run
#!/bin/sh
APACHE=/usr/local/apache2

PATH=/usr/local/daemontools/bin:$PATH
exec env - PATH=/usr/local/bin:$APACHE/bin:$PATH \
pgrphack chroot /home/r httpd -DFOREGROUND

あとは/serviceに登録するとApacheが起動する。

Apacheのユーザーディレクトリ

ここのユーザーがWebページをもてるように若干の工夫をする。ざっくりと以下のような操作をユーザー作成時に行う。hogeというユーザーを作る時は、

# mkdir /home/r/hoge
# cp -pr /home/hoge/http /home/r/hoge && rm -rf /home/hoge/http
# chown -R hoge:ogwk /home/r/hoge
# ln -s /home/r/hoge/http /home/hoge/http

と言う具合に、chroot空間側にユーザーがファイルを置く空間を作って、シンボリックリンクを張る。これに対応するApacheの設定(httpd.conf)を抜粋して書くと

apacheconf httpd.conf <Directory "/home/*/http"> Options Indexes ExecCGI FollowSymLinks SymlinksIfOwnerMatch AllowOverride All </Directory> UserDir http

となる。ここまで設定を行って、実際に表示できるかどうか試してみること。

2018年も今日でおしまい

## はじめに2018年も気がついてみれば大晦日。今年も昨年までと同様の書き出しで・・・ 年末はこのサイトを運営しているサーバーが危うく死にかけたということを除けば、さほど大したネタもなかったので、のんびりとした大晦日を迎えることとなった。例年通り、残り時間を気にしてこの記...… Continue reading

zfs HDD入れ替え

Published on December 28, 2018

MacBook Pro 13inchの設定

Published on November 28, 2018