FreeBSD4.11-STABLE 新規インストール手順

  • とりあえず一段落したので、この一週間やってきたことを纏めてみる。
  • その上で残件のまとめに入りましょう。

General Information

Server
uname -a
  • FreeBSD 4.11-STABLE #0: Sat Jul 30 04:35:08 JST 2005

Backup

 /etc
 /usr/local/etc
 /var/log
 /usr/local/share/shmp
 /usr/src/sys/i386/conf
 /home/HOME

CDROMからのインストール

  • FTPから最小構成のISOイメージを取得。
  • CDROMからブート。
  • インストールメディア選択時にPCMCIAを選択しない。
    • 勘違いで数回ためしたが、IRQは不明なまま。
    • ネットワークインストールを選択。
  • Kern-Developerを選択。
  • portsは一応インストールする。
  • HDDのパーティション分け
 /dev/ad0s1a on / (ufs, local, soft-updates)
 /dev/ad0s1f on /tmp (ufs, local, soft-updates)
 /dev/ad0s1g on /usr (ufs, local, soft-updates)
 /dev/ad0s1e on /var (ufs, local, soft-updates)
 procfs on /proc (procfs, local)
  • Packageからインストールするモノ
  • ここでひとまずリブート

初回リブート後

  • cvsupでソースとportsを最新版にする。
  • その間にsu toorを有効にする。
 vipw
 toor:*:0:0:Bourne-again Superuser:/root:/usr/local/bin/zsh
 passwd -l toor
  • /etc/make.conf
 CPUTYPE=i686
  • この間にcvsup終わってるので、
    • cp /usr/src/sys/i386/conf/GENERIC XXX
    • XXXを適当に編集
    • make worldする
  • 一晩がかりなので寝る
  • shutdown -h now

二回目リブート後

真っ先にやること
  • /usr/ports/japanese/samba3
    • make install
    • 基本的にデフォルトのままだが、LDAPは使わないことが明確なのではずす。
    • /usr/local/etc/smbd.conf
      • hosts allowの修正
      • workgroupの修正
    • /etc/inetd.conf
    • kill -HUP inetdのプロセス番号
    • ユーザ登録
      • smbpasswd -a ユーザ名
  • /usr/ports/lang/perl5.8
    • make install
    • use.perl port
 Usage:
         use.perl port       -> /usr/bin/perl is the perl5 port
         use.perl system     -> /usr/bin/perl is the system perl
  • バックアップしたファイルを復元するためにsambaを優先したが、本当はperlをしたかった。

portsからインストール

#       sec.name  source          community
 com2sec local     localhost       XXXXXXXX
 com2sec mynetwork 192.168.xxx.0/24      XXXXXXXX
    • /etc/rc.conf
net_snmpd_enable="YES"

ソースからBuildするモノ

方針
  • 主要アプリケーションはソースからBuildする。
  • 主要アプリケーションが必要とする依存関係は、portsも使用する。
  • 個別作業に入る前に、/var/logを復旧しておくべし。
Apache + Subversion + ViewCVS
  • Barkley DB 4.2.52
  • UserとGroupの登録
    • /stand/sysinstall -> Configure -> User Management
    • おや?既に登録されている。システムデフォルトなんだろうか?
 www:*:80:80:World Wide Web Owner:/nonexistent:/sbin/nologin
  • Python2.4
  • Apache2.0.54
./configure --prefix=/usr/local                          \
             --enable-layout=FreeBSD                      \
             --enable-with-barkley-db=/usr/local/bin/db42 \
             CPPFLAGS=-I/usr/local/include/db42           \
             LDFLAGS=-L/usr/local/lib/db42                \
             --enable-dav                                 \
             --enable-dav-fs                              \
             --enable-ssl                                 \
             --enable-so                                  \
             --enable-mods-shared=ssl
make
make install
  Install prefix:  /usr/local
  Compiler:        gcc
  XML Parser:      libxml 2.6.20
  SSL library:     SSL support is not enabled
  zlib support:    zlib support enabled, using -lz
  Build libraries: Shared=no, Static=yes
    • make
    • make install
  • /etc/rc.conf
    • いつの間にこんなのが必要になったんだ?
 apache2_enable="YES"
./configure
 gmake
 gmake install
 AUTOCONF=/usr/local/bin/autoconf259            \
 AUTOHEADER=/usr/local/bin/autoheader259        \
 LIBTOOL_M4=/usr/local/lib/php/build/libtool.m4 \
 sh ./autogen.sh
    • ./configure
 ./configure --prefix=/usr/local                                                \
             --with-apxs=/usr/local/sbin/apxs                                   \
             --with-berkeley-db=/usr/local/bin/db42                             \
             CPPFLAGS=-I/usr/local/include/db42                                 \
             LDFLAGS=-L/usr/local/lib/db42                                      \
             --with-swig=/usr/local/bin/swig                                    \
             --with-apr=/usr/local/bin/apr-config                               \
             --with-apr-util=/usr/home/HOME/src/httpd-2.0.54/srclib/apr-util 
 make
 make install
 make swig-py
 make install-swig-py 
 もしダメなら、subversion/bindings/swig/INSTALL で同じ事をやってみよう。
    • /usr/local/lib/svn-python にインストールされるので、
 cd /usr/local/lib/python2.2/site-packaes
 ln -s /usr/local/lib/svn-python/* .
PHP4.4
 ./configure --with-apxs2=/usr/local/sbin/apxs   \
             --with-mysql
 make
 make install
  • /usr/local/etc/apache2/httpd.conf
LoadModule php4_module        libexec/apache2/libphp4.so
 AddType application/x-httpd-php .php
 #AddType application/x-httpd-php-source /phps
mod_perl
 wget http://perl.apache.org/dist/mod_perl-2.0-current.tar.gz
 tar zxvf mod_perl-2.0-current.tar.gz
 cd mod_perl-2.0
 
 perl Makefile.PL MP_USE_DSO=1                 \
                  MP_APXS=/usr/local/sbin/apxs \
                  EVERYTHING=1
 
 make
 make test
 su toor
 make install
 The Gory Details 
 We saw that the basic mod_perl installation is quite simple and 
 takes about 10 commands. You can copy and paste them from these 
 pages. The parameter EVERYTHING=1 selects a lot of options, but 
 sometimes you will need different ones. You may need to pass only 
 specific parameters, to bundle other components with mod_perl etc. 
 You may want to build mod_perl as a loadable object instead of 
 compiling it into Apache, so that it can be upgraded without 
 rebuilding Apache itself.
 LoadModule perl_module libexec/apache2/mod_perl.so
 Alias /cgi-perl /usr/local/www/cgi-perl
 <Location /cgi-perl>
   SetHandler perl-script
   PerlHandler Apache::Registory
   Options +ExecCGI
 </Location>
  • 動作確認
    • テストコードがないので、動作確認できてませんが..
PostgreSQL 8.0.3
  • UserとGroup作成
 pgsql:*:70:70:PostgreSQL Daemon:/usr/local/pgsql:/bin/sh
 pg_dumpall > db.out
 pg_ctl stop
  • Build
 ./configure --prefix=/usr/local --with-perl
 gmake
 gmake check  # for regression test
 su
 gmake install
 gmake -C src/bin install
 gmake -C src/include install
 gmake -C src/interfaces install
 gmake -C doc install
  • データベース作成
 mkdir /home/pgsql
 mkdir /home/pgsql/data
 chown -R pgsql:pgsql /home/pgsql
 su pgsql
 initdb --encoding=EUC_JP --no-locale -D /home/pgsql/data
  • postmaster 起動
 su pgsql -c '/usr/local/bin/pg_ctl start -o -i -D /home/pgsql/data '
  • 復元
 su
 su pgsql
 psql -e template1 < db.out  # フルダンプからの復元
  • うーん、見事に説明書通りのオペレーションだ。:-)
MySQL
  • 基本方針
    • MySQL4.1.x の最新版
    • デフォルト言語設定は ujis
    • テーブルは MyISAM, InnoDB
    • ndbclusterはとりあえず見送り。
    • 常駐するので、プロセスサイズを小さくする設定。
  • portsの場合
    • /usr/ports/databases/mysql41-server
 make WITH_CHARSET=ujis
 make install
  • ソースからBuildする場合
    • UserとGroup作成
 mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
    • ./configure 〜 make
 ./configure --help
 ./configure --prefix=/usr/local          \
             --with-tcp-port=3306         \
             --with-mysqld-user=mysql     \
             --with-charset=ujis          \
             --with-extra-charsets=all    \
             --with-csv-storage-engine    \
             --localstatedir=/home/mysql
 make
 make install
 
 cp support-files/my-small.cnf /etc/my.cnf
 cd /home/mysql
 /usr/local/bin/mysql_install_db --user=mysql
 /usr/local/bin/mysqld_safe --user=mysql &
 
 --localstatedirを指定しない場合、初期化する際に明示する必要がある。
   usr/local/bin/mysql_install_db --datadir=/home/mysql
   /usr/local/bin/mysqld_safe --datedir=/home/mysql

環境復旧

 次に[ HotSaNIC ] のインデックスページを作成した後、1度[ rrdtimer ]を実行します。
 # ./makeindex.pl
 # ./rrdtimer -i
    • コレで復旧した。
    • ImageMagickがインストールされてないと、別の理由で失敗するので注意。
  • pukiwiki
    • 新規インストールだと問題ないですが、バックアップから復旧するときに毎回はまるポイント。
    • READMEには下記のパーミッション設定しか書かれてませんが、実際にはattach, backup, counter, diff, wiki配下のファイルも0666に変更しないと、更新時にエラーが起こる。
    4.  サーバ上のファイルおよびディレクトリのパーミッションを確認します。
 
        ディレクトリ   パーミッション
        attach         777	添付ファイル格納ディレクトリ
        backup         777	バックアップファイル格納ディレクトリ
        cache          777	キャッシュファイル格納ディレクトリ
        counter        777	カウンタファイル格納ディレクトリ
        diff           777	差分ファイル格納ディレクトリ
        image          755	画像ファイル
        image/face     755 	(画像ファイル)フェイスマーク  
        lib            755	ライブラリ
        plugin         755	プラグイン
        skin           755	スキン、CSS、JavaScirptファイル
        trackback      777	TrackBackファイル格納ディレクトリ
        wiki           777	データの格納ディレクトリ
 
        ファイル       パーミッション 転送モード
        *.php          644            ASCII
        cache/*        666            ASCII
        image/*        644            BINARY
        image/face/*   644            BINARY
        lib/*          644            ASCII
        plugin/*       644            ASCII
        skin/*         644            ASCII
        wiki/*         666            ASCII