このページには、「さくらのクラウド」で契約するサーバの構築メモを残す。
最近の変更内容
まだない
メタ情報
- 「さくらのクラウド」で契約するサーバには「*.sc.tir.ne.jp」の名前を付ける
- 物理サーバ名のドメインには「*.tir.ne.jp」を、各種サービス用(ほぼメールとHTTP)のドメインには「*.tir.jp」を使う方針にする事にした
- 「m.sc.tir.ne.jp」として、DNSサーバとメールサーバとその他の日常業務用のサーバを構築する
- 「s.sc.tir.ne.jp」として、外部にサービスを提供する用のサーバを構築する
tip
「さくらのクラウド」を使う上で、やっておいた方がいい事や、トラブル対応など
- ブラウザ組み込みのvncビューアではなく、手元のosに適当なvncビューアをインストールしてそっちを使う
- ブラウザ組み込みのは再起動等を行った時に通信が切れてしまったり色々不便なので
- ただしそうすると、さくらの管理画面の方が一定時間放置判定で勝手にログアウトしてしまうのがちょっと面倒
m.sc.tir.ne.jp
os部
- CDからのインストールで「Gentoo-20111011-x86」を選択してサーバを作成
- 64bitで動かして速度を追求するよりも、省メモリな事を優先した
- GentooのインストールCD起動後、10秒ぐらい放置すると、自動的にhdd起動に移行しようとしてしまうので、タイミングよく右上の「Ctrl+Alt+Del」ボタン→vncビューア起動を行い、素早く「gentoo-nofb」と改行を送る必要がある
- 失敗したらまた「Ctrl+Alt+Del」からやり直し
- keymapを選ぶところは、vncサーバ側の問題か、どれを選んでもkeymapが正しくならないので、適当に選ぶか数秒放置で先に進む。今後の記号を入力する場面では、あてずっぽうでどうにかするか、vncクライアントのコピペ機能を使う
- 「net-setup eth0」で、ネットワーク設定を行う。dhcpは使わず、手動で設定を行う
- 設定すべきネットワーク設定は、「コンソール」画面の「詳細情報」タブに全部書いてある
- ネームサーバは、さくらのものは重いかも?という情報あり。試してみて、明らかに重いようならgoogleのDNSサーバにしてみる。そんな重くないなら、将来的には自前でDNSサーバ立てる筈なので、それまでそのままとする
- 「ifconfig実行して設定内容確認せよ」と出るので、実行して確認する。ついでに wget http://google.com/ とかしてみる
- 以降は、 http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml を見ながら、順番に作業を行う
- passwd で、rootのパスワードを設定しておく
- 「useradd -m -G users,wheel ****」と「passwd ****」で、一般アカウントを作成しておく
- 「/etc/init.d/sshd start」で、一時的に22番でsshdを起動する
- 将来は22番はふさぎ、別portでsshdを起動する
- sshでログインし、「su -」し、そちらで作業を続行する
- 「fdisk /dev/sda」を実行し、パーティションを切る。 http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=1&chap=4#doc_chap3 でのデフォルト設定にした。
- もし容量が足りなくなったらクラウドからディスクを追加する訳で、その時に別パーティションにするという方針
- mkfs.ext2 /dev/sda1
- mkfs.ext3 /dev/sda3
- mkswap /dev/sda2
- swapon /dev/sda2
- mount /dev/sda3 /mnt/gentoo
- mkdir /mnt/gentoo/boot
- mount /dev/sda1 /mnt/gentoo/boot
- cd /mnt/gentoo
- links http://www.gentoo.org/main/en/mirrors.xml
- リンクを延々と辿り、 stage3-i686-20111108.tar.bz2 をダウンロードした
- tar xvjpf stage3-*.tar.bz2
- links http://www.gentoo.org/main/en/mirrors.xml
- リンクを辿り、 portage-latest.tar.bz2 をダウンロードした
- tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
- nano -w /mnt/gentoo/etc/make.conf
- 「CFLAGS="-O2 -march=i686"」とした
- (ここで mirrorselect コマンドを実行しているが、エラーが出て上手く動かないので後回しにする)
- cp -L /etc/resolv.conf /mnt/gentoo/etc/
- mount -t proc none /mnt/gentoo/proc
- mount --rbind /dev /mnt/gentoo/dev
- chroot /mnt/gentoo /bin/bash
- env-update
- source /etc/profile
- export PS1="(chroot) $PS1"
- emerge --sync
- emerge --oneshot portage
- eselect profile list
- eselect profile set 6
- eselect profile list
- 別コンソール(非chroot環境)から less /mnt/gentoo/usr/portage/profiles/use.desc
- nano -w /etc/make.conf
- use.desc を見ながら、USEに設定するパラメータを選ぶ。以下のようにした
- USE="-X -bluetooth bzip2 cjk -fbcon -gpm -ipv6 -joystick lame m17n-lib maildir migemo ncurses -nls -pcmcia vim-syntax -wifi zlib"
- nano -w /etc/locale.gen
- 以下を有効にした
- en_US ISO-8859-1
- en_US.UTF-8 UTF-8
- ja_JP.EUC-JP EUC-JP
- ja_JP.UTF-8 UTF-8
- ja_JP EUC-JP
- locale-gen
- cp /usr/share/zoneinfo/Japan /etc/localtime
- emerge gentoo-sources
- cd /usr/src/linux
- make menuconfig
- make && make modules_install
- cp arch/i386/boot/bzImage /boot/kernel-3.0.6-gentoo-r1
- 別コンソール(非chroot環境)から find /mnt/gentoo/lib/modules/3.0.6-gentoo/ -type f -iname '*.o' -or -iname '*.ko' | less
- nano -w /etc/conf.d/modules
- modules_3_0_6_gentoo="nf_conntrack_ftp"
- nano -w /etc/fstab
- 以下とした
- /dev/sda1 /boot ext2 noauto,noatime 1 2
- /dev/sda3 / ext3 noatime 0 1
- /dev/sda2 none swap sw 0 0
- proc /proc proc defaults 0 0
- shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
- nano -w /etc/conf.d/hostname
- nano -w /etc/conf.d/net
- dns_domain_lo="sc.tir.ne.jp"
- dns_domain_eth0="sc.tir.ne.jp"
- dns_servers_eth0="8.8.8.8"
- dns_search_eth0="sc.tir.ne.jp"
- config_eth0="133.242.22.106 netmask 255.255.255.0"
- routes_eth0="default via 133.242.22.1"
- cd /etc/init.d
- ln -s net.lo net.eth0
- rc-update add net.eth0 default
- nano -w /etc/hosts
- passwd
- rootのパスワードを/mnt配下の方にも再設定する
- nano -w /etc/rc.conf
- rc_logger="YES"
- unicode="NO"
- emerge sysklogd
- rc-update add sysklogd default
- emerge dcron
- rc-update add dcron default
- crontab /etc/crontab
- nano -w /etc/ssh/sshd_config
- Port *****
- ListenAddress 0.0.0.0
- PermitRootLogin no
- PasswordAuthentication yes
- PermitEmptyPasswords no
- TCPKeepAlive yes
- UsePrivilegeSeparation yes
- rc-update add sshd default
- nano -w /etc/inittab
- # TERMINALS のところを二個だけ残してコメントアウト
- emerge grub
- nano -w /boot/grub/grub.conf
- default 0
- timeout 15
- title Gentoo Linux 3.0.6-r1
- root (hd0,0)
- kernel /boot/kernel-3.0.6-gentoo-r1 root=/dev/sda3
- title Gentoo Linux 3.0.6-r1 (rescue)
- root (hd0,0)
- kernel /boot/kernel-3.0.6-gentoo-r1 root=/dev/sda3 init=/bin/bb
- grep -v rootfs /proc/mounts > /etc/mtab
- grub-install --no-floppy /dev/sda
- exit
- cd
- umount -l /mnt/gentoo/dev{/shm,/pts,}
- umount -l /mnt/gentoo{/boot,/proc,}
- reboot
- CDブート後の選択画面にて10秒放置し、hddから起動させる。もしその時にkernelもしくはブートローダの設定がまずく、うまく再起動できなかった場合は以下の処置を行う
- 「さくらのクラウド」の管理画面から「リセットボタン」を押し、またCDブートから「gentoo-nofb」を選択して起動し、mountしなおし、kernelとブートローダ回りをいじってリトライをくりかえす
- mount /dev/sda3 /mnt/gentoo
- mount /dev/sda1 /mnt/gentoo/boot
- mount -t proc none /mnt/gentoo/proc
- mount --rbind /dev /mnt/gentoo/dev
- chroot /mnt/gentoo /bin/bash
- env-update
- source /etc/profile
- export PS1="(chroot) $PS1"
- cd /usr/src/linux; make clean; make menuconfig; make && make modules_install; cp arch/i386/boot/bzImage /boot/kernel-3.0.6-gentoo-r1
- nano -w /boot/grub/grub.conf; grub-install --no-floppy /dev/sda
- exit
- cd
- umount -l /mnt/gentoo/dev{/shm,/pts,}
- umount -l /mnt/gentoo{/boot,/proc,}
- reboot
- もし何度もやり直す事になりそうな場合は、mount済の /mnt/gentoo 内に、適当にshスクリプトか何かの形で実行コマンドを残しておくと、次回からは、 /mnt/gentoo をmountしてそのスクリプト類を実行するだけでよくなる
- 正常に再起動できたら、今度は「shutdown -h now」で完全に停止させ、「さくらのクラウド」の管理画面から「シャットダウン」ボタンを押して停止させ、その後にコンソール画面の上の方にある「イジェクト」ボタンを押してCDを取り出し、また本体を起動させる
- どうも、「イジェクト」できるのは、電源を切ってる時だけらしい
- 起動したら、rootでログインする
- sysklogdがディレクトリが無いと言っているので、作る
- rm portage-latest.tar.bz2 stage3-i686-20111108.tar.bz2
- 一般アカウントを作る
- useradd -m -G users,wheel -s /bin/bash ****
- passwd ****
- メール等で利用する、aliasアカウントも作っておく(これを忘れるとメール系トリガーが半分動かなくなる)
- vipw
- vipw -s
- 今後はssh越しに操作を行う
ベースアプリ
- 上のos部で設定できなかったmirrorselectを最初に設定しておく
- emerge mirrorselect
- mirrorselect -i -o >> /etc/make.conf
- emerge logrotate
- emerge --update --deep --newuse world
- etc-update
- shutdown -r now
- 起動したらssh再接続、うまく起動しなくなったらまたCD経由で起動させるところからやり直し
- emerge perl
- echo app-editors/vim perl >> /etc/portage/package.use
- emerge vim
- export EDITOR=/usr/bin/vim
- vim /etc/profile
- export EDITOR=${EDITOR:-/bin/nano} のところも /usr/bin/vim に
- emerge lsof
- emerge sys-devel/gdb
- emerge guile
- emerge nasm
- emerge pkgconfig
- emerge python
- emerge lv
- emerge ruby
- emerge rcs
- emerge strace
- emerge gdbm
- emerge glib
- emerge libpcre
- emerge ntp
- 以下のように、rootのcrontabにntp同期を追加設定しておく
- clontab -e
- 9 * * * * /usr/sbin/ntpdate 210.173.160.57 > /dev/null 2>&1 && /sbin/hwclock -w
- emerge readline
- emerge zlib
- emerge netcat
- emerge ncftp
- emerge nmap
- emerge tcpdump
- emerge traceroute
- emerge wget
- emerge curl
- emerge zsh
- emerge rlwrap
- emerge git
- emerge nkf
- emerge socat
- emerge tinycdb
- emerge qdbm
- emerge tokyocabinet
- emerge app-i18n/skk-jisyo
- emerge dev-libs/boehm-gc
- emerge zeromq
- emerge emacs
- emerge app-text/dos2unix
各種の設定(1)
※一般アカウントに戻っておく事
- ssh鍵の移行
- cat > .ssh/id_rsa
- cat > .ssh/id_rsa.pub
- chmod go-r .ssh/id_rsa
- 設定ファイルをリポジトリから取得
- git clone git@github.com:ayamada/copy-of-svn.tir.jp.git
- cd
- ln -sf ../copy-of-svn.tir.jp/nekoie/dotfiles/.ssh/config .ssh
- ln -sf copy-of-svn.tir.jp/nekoie/bin .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.bash_login .bash_profile
- gentooでは、 .bash_login ではなく、 .bash_profile でしか認識されない様子
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.bash_logout .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.gitconfig .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.gosh_completions .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.inputrc .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.screenrc .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.vimrc .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.zsh .
- ln -sf copy-of-svn.tir.jp/nekoie/dotfiles/.zshrc .
細かい設定が必要なアプリ
- screenはcjkwidthパッチをあてたいので、portageではなく、手でインストールする
- wget http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz
- wget http://www.dekaino.net/screen/screen-4.0.2-deadlock-patch
- wget http://www.dekaino.net/screen/screen-4.0.2-hankanacopy-patch
- wget http://www.dekaino.net/screen/screen-4.0.2-patch-cjkwidth-cvs-2006052001
- tar xvfz screen-4.0.3.tar.gz
- cd screen-4.0.3
- patch -p0 < ../screen-4.0.2-deadlock-patch
- patch -p0 < ../screen-4.0.2-hankanacopy-patch
- patch -p0 < ../screen-4.0.2-patch-cjkwidth-cvs-2006052001
- patch -p1 < ../screen-4.0.2-patch-cjkwidth-cvs-2006052001.add-dashes.patch
- ./configure --prefix=/usr/local --enable-colors256
- nice make all check
- su -c 'make install'
- su -
- echo www-servers/apache suexec >> /etc/portage/package.use
- emerge apache
- /etc/make.conf の $USE, $APACHE2_MODULES, $APACHE2_MPMS で色々設定できるようだが、今は細かくチューニングはしない。
- vim /etc/conf.d/apache2
- APACHE2_OPTS="-D DEFAULT_VHOST -D SUEXEC"
- SUEXEC_SAFEPATH=/usr/local/gauche/bin:/usr/local/bin:/usr/bin:/bin
- SUEXEC_UMASK=055
- vim /etc/apache2/httpd.conf /etc/apache2/modules.d/* /etc/apache2/vhosts.d/*
- 127.0.0.1:30080 をlistenさせる。他の設定は適当に
- …という予定だったが、delegateがうまく設定できなかったので、普通に、 133.242.22.106:80 をlistenするようにした
- vhostも普通に設定を行う
- DocumentRoot は /var/www/localhost/htdocs.ドメイン名
- vhostを増やすには、 /etc/apache2/vhosts.d/00_default_vhost.conf に設定を追記すればよい
- /etc/init.d/apache2 configtest
- /etc/init.d/apache2 start
- rc-update add apache2 default
- emerge iptables
- sh /home/nekoie/copy-of-svn.tir.jp/nekoie/scripts/rc.iptables
- rc-update add iptables boot
- emerge daemontools
- /etc/init.d/svscan start
- rc-update add svscan boot
- emerge ucspi-tcp
- emerge netqmail
- emerge --config =mail-mta/netqmail-1.06
- vim /var/qmail/control/servercert.cnf
- emerge --config =mail-mta/netqmail-1.06
- echo localhost >> /var/qmail/control/locals
- echo localhost >> /var/qmail/control/rcpthosts
- echo tir.ne.jp >> /var/qmail/control/locals
- echo tir.ne.jp >> /var/qmail/control/rcpthosts
- echo tir.jp >> /var/qmail/control/locals
- echo tir.jp >> /var/qmail/control/rcpthosts
- echo tir.jp > /var/qmail/control/plusdomain
- echo '#' > /var/qmail/alias/.qmail
- echo '#' > /var/qmail/alias/.qmail-default
- echo '#' > /var/qmail/alias/.qmail-mailer-daemon
- echo '#' > /var/qmail/alias/.qmail-postmaster
- echo '#' > /var/qmail/alias/.qmail-root
- cp -a /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail
- cp -a /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-default
- mv /var/qmail/control/defaultdelivery /var/qmail/control/.defaultdelivery
- vim /etc/login.defs
- ln -s /var/qmail/supervise/qmail-send /service/qmail-send
- ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
- 一旦ログアウトしてログインし直す
- su
- emerge djbdns
- djbdns-setup
- 適当に設定を行う。ebegin/eendがないというエラーが出るが、メッセージ系のコマンド/関数のようなので、無視しても一応大丈夫っぽい(本当はまずいと思うが、コードを確認した限りでは、正常に設定できている限りは大丈夫のように見えた)。
- cd /var/tinydns/*/root/
- vim data
- make
- svc -du /service/tinydns_* /service/axfrdns_*
- vim /etc/conf.d/net
- dns_servers_eth0="8.8.8.8" を 127.0.0.1 に変更する
- /etc/init.d/net.eth0 restart
- exit
- gaucheをインストールする
- bash
- export GOSHVER=0.9.3.3
- wget http://jaist.dl.sourceforge.net/project/gauche/Gauche/Gauche-${GOSHVER}.tgz
- tar xvfz Gauche-${GOSHVER}.tgz
- cd Gauche-${GOSHVER}
- ./configure \
- --prefix=/usr/local/gauche-${GOSHVER} \
- --enable-multibyte=utf-8 \
- --enable-threads=pthreads \
- --disable-ipv6 \
- --without-iconv
- nice make all test
- su
- make install
- export PATH=/usr/local/gauche-${GOSHVER}/bin:$PATH
- wget http://osdn.dl.sourceforge.jp/gauche/6988/Gauche-qdbm-0.2.tar.gz
- wget http://d.tir.jp/Gauche-qdbm-0.2-dbm-delete.patch
- tar xvfz Gauche-qdbm-0.2.tar.gz
- cd Gauche-qdbm-0.2
- patch -p0 < ../Gauche-qdbm-0.2-dbm-delete.patch
- ./configure
- nice make all check install
- cd -
- /usr/local/gauche-${GOSHVER}/bin/gauche-package install --clean \
- http://www.koguro.net/prog/c-wrapper/c-wrapper-0.6.1.tgz
- /usr/local/gauche-${GOSHVER}/bin/gauche-package install --clean \
- http://legacy.tir.jp/speedygosh-0.1.6.tgz
- /usr/local/gauche-${GOSHVER}/bin/gauche-package install --clean \
- http://d.tir.jp/pib-0.3.1.tgz
- /usr/local/gauche-${GOSHVER}/bin/gauche-package install --clean \
- http://d.tir.jp/Gauche-www-cgi-dispatch-tir-0.0.10.tgz
- git clone git://wiliki.git.sourceforge.net/gitroot/wiliki/WiLiKi
- wget http://legacy.tir.jp/WiLiKi-autolink-20110812.diff
- cd WiLiKi
- patch -p1 < ../WiLiKi-autolink-20110812.diff
- WiLiKiの開発が進むと、パッチがあたらなくなったり、動作がおかしくなったりするかも。要確認
- ./DIST gen
- ./configure
- nice make all check install
- cd -
- git clone git://github.com/yuzawat/Gauche-uuid.git && cd Gauche-uuid
- ./DIST gen && ./configure && nice make all check install && cd -
- git clone git://github.com/mhayashi1120/Gauche-net-oauth.git && cd Gauche-net-oauth
- ./DIST gen && ./configure && nice make all check install && cd -
- git clone git://github.com/mhayashi1120/Gauche-net-twitter.git && cd Gauche-net-twitter
- ./DIST gen && ./configure && nice make all check install && cd -
- echo version: ${GOSHVER}
- test -e /usr/local/gauche-${GOSHVER} &&
- rm -f /usr/local/gauche &&
- ln -sf gauche-${GOSHVER} /usr/local/gauche
- exit
- exit
- esmtp
- su -c 'emerge libesmtp'
- wget http://jaist.dl.sourceforge.net/project/esmtp/esmtp/1.2/esmtp-1.2.tar.bz2
- tar xvfj esmtp-1.2.tar.bz2
- cd esmtp-1.2
- ./configure
- nice make all check
- su -c 'make install'
- mutt-j
- cd
- wget http://www.emaillab.org/mutt/tools/slang-1.4.8.tar.bz2
- wget http://www.emaillab.org/mutt/tools/slang-1.4.8-utf8.diff.gz
- tar xvfj slang-1.4.8.tar.bz2
- cd slang-1.4.8
- zcat ../slang-1.4.8-utf8.diff.gz | patch -p1
- ./configure --prefix=/usr/local
- vim src/sl-feat.h
- #define SLANG_HAS_KANJI_SUPPORT を1にする
- vim src/Makefile
- THIS_LIB = slang-utf8# の行をslangに戻す
- nice make all elf
- su -c 'make install install-elf'
- su -c 'ldconfig -v'
- cd
- wget ftp://ftp.mutt.org/mutt/devel/mutt-1.5.22.tar.gz
- wget http://emaillab.jp/pub/mutt/1.5/patch-1.5.22.tt.wcwidth.1.gz
- wget http://emaillab.jp/pub/mutt/1.5/patch-1.5.22.tt.cjk_width_tree_chars.1.gz
- wget http://emaillab.jp/pub/mutt/1.5/patch-1.5.22.tt.create_rfc2047_params.1.gz
- wget http://emaillab.jp/pub/mutt/1.5/patch-1.5.22.tt.sanitize_ja_char.1.gz
- wget http://emaillab.jp/pub/mutt/1.5/patch-1.5.22.tt+yy.delete_prefix.1.gz
- tar xvfz mutt-1.5.22.tar.gz
- cd mutt-1.5.22
- zcat ../patch-1.5.22.tt.wcwidth.1.gz | patch -p1
- zcat ../patch-1.5.22.tt.cjk_width_tree_chars.1.gz | patch -p1
- zcat ../patch-1.5.22.tt.create_rfc2047_params.1.gz | patch -p1
- zcat ../patch-1.5.22.tt.sanitize_ja_char.1.gz | patch -p1
- zcat ../patch-1.5.22.tt+yy.delete_prefix.1.gz | patch -p1
- autoreconf
- ./configure --disable-nls --enable-smtp --with-slang --with-qdbm --enable-cjk-ambiguous-width --enable-imap --with-ssl --enable-smtp
- nice make all check
- su -c 'make install'
- delegateを構築する
- su -
- wget ftp://anonymous@ftp.delegate.org/pub/DeleGate/delegate9.9.7.tar.gz
- cd /usr/local
- tar xvfz /root/delegate9.9.7.tar.gz
- cd delegate9.9.7
- make ADMIN='root@m.sc.tir.ne.jp'
- cd ..
- rm -f delegate && ln -sf delegate9.9.7 delegate
- cat > /etc/dg.conf
- -P133.242.22.106:443
- DGROOT=/var/delegate/133.242.22.106_443
- SERVER=tcprelay://127.0.0.1:9997/
- PERMIT="http:127.0.0.1:*"
- RESOLV=""
- TIMEOUT=io:7200
- ^D
- /usr/local/delegate/src/delegated -v +=/etc/dg.conf
- stdout/stderrにログが表示されるので、この状態でアクセスしてみて動作確認を取る。ちゃんと想定通りに動作している事が確認できたら、 ^C を押して停止させる
- ちなみに、以下でgraceful再起動になるらしい
- /usr/local/delegate/src/delegated +=/etc/dg.conf -Fkill-hup
- 自動起動と停止をlocalサービスに登録する
- cd /etc/local.d
- echo '#!/bin/sh' > delegate.start
- echo '/usr/local/delegate/src/delegated +=/etc/dg.conf' >> delegate.start
- chmod a+x delegate.start
- echo '#!/bin/sh' > delegate.stop
- echo '/usr/local/delegate/src/delegated +=/etc/dg.conf -Fkill' >> delegate.stop
- chmod a+x delegate.stop
- cd -
- /etc/local.d/delegate.start
- /etc/local.d/delegate.stop
- /etc/local.d/delegate.start
- exit
- カーネルパラメータ設定
- vim /etc/sysctl.conf で、以下を追加
- net.ipv4.tcp_keepalive_probes = 2
- net.ipv4.tcp_keepalive_time = 60
- net.ipv4.tcp_keepalive_intvl = 60
- kernel.sem = 250 32000 128 1024
- kernel.msgmni = 256
- net.ipv4.conf.all.accept_redirects = 0
- net.ipv4.conf.all.log_martians = 1
- shutdown -r now で、再起動
- cat /proc/sys/kernel/msgmni 等してみて、正しく設定されているか確認する事
- ghc
- http://d.hatena.ne.jp/meech/20111129/1322533829 を参考にした
- emerge ghc
- emerge cabal
- emerge layman
- echo "source /var/lib/layman/make.conf" >> /etc/make.conf
- layman -S
- layman -a haskell
- emerge --autounmask-write haskell-platform
- etc-update
- emerge --autounmask-write app-editors/yi
- etc-update
- emerge --autounmask-write app-editors/yi-contrib
- etc-update
- TODO: もっと追加する
- haskell-updater -c -u
つづきはあとで
各種の設定(2)
一般アカウントで実行する、個人的な設定がメイン
- 個人用サービスを設置するディレクトリを$HOMEとは別に作成する。$HOMEには、この中のディレクトリへのシンボリックリンクを作成する方針とする(コマンドミス防止用)
- su -c "mkdir -p /var/$USER"
- su -c "chown $USER.users /var/$USER"
- rootでもzshを使う
- su -c "ln -sf /home/$USER/.zsh /root"
- su -c "ln -sf /home/$USER/.zshrc /root"
- /var/qmail/bin/maildirmake Maildir
- .qmail* ファイルを設置する
- ircsec(ircbot)を設置し、自動起動設定を行い、起動監視をcronに設定する
- ircsec一式については、 oldhome-n/ircsec を見る事。ここからファイルをコピーした。そして、 /var/$USER/ircsec に設置した
- cd /tmp
- echo '#!/bin/sh' > ircsec.start
- echo "su - $USER -c 'cd /home/$USER/ircsec; ./ircsec.scm < /dev/null > std.log 2>&1 &'" >> ircsec.start
- chmod a+x ircsec.start
- echo '#!/bin/sh' > ircsec.stop
- echo 'ps auxww | grep ircsec | grep -v grep > /dev/null && kill `cat /home/$USER/ircsec/ircsec.pid`' >> ircsec.stop
- chmod a+x ircsec.stop
- su -c 'chown root.root ircsec.* && mv ircsec.* /etc/local.d'
- cd -
- crontab -e
- crontab の詳細は oldhome-n/txt/crontab-copy を見る事
- 必要なperlモジュールを導入
- su -c 'perl -MCPAN -e shell'
- 初回実行での選択項目はデフォルトのままでok
- install LWP
- q
- vimプラグインを追加
- cd
- mkdir -p .vim/plugin .vim/syntax
- wget -O .vim/syntax/scheme.vim http://legacy.tir.jp/scheme.vim
- wget -O .vim/syntax/mkd.vim 'http://www.vim.org/scripts/download_script.php?src_id=10630'
- wget -O .vim/plugin/vimirc.vim 'http://www.vim.org/scripts/download_script.php?src_id=4171'
- wget http://legacy.tir.jp/vimirc-0.9.28-tir.1.patch
- (cd .vim/plugin && patch -p0 < ../../vimirc-0.9.28-tir.1.patch)
- wget -O skk.zip 'http://www.vim.org/scripts/download_script.php?src_id=15190'
- (cd .vim && unzip ../skk.zip)
- su -c 'emerge app-text/cmigemo'
- TODO: migemo.vim導入
- c-a-g.tir.jp の移転/設置
- cd /var/nekoie
- git clone git@github.com:ayamada/c-a-g.git
- su -c 'rmdir /var/www/localhost/htdocs.c-a-g.tir.jp && ln -sf /var/nekoie/c-a-g/htdocs /var/www/localhost/htdocs.c-a-g.tir.jp'
- cd
- chatonの移転/設置
- cp -a oldhome-c/chaton /var/nekoie
- ln -sf /var/nekoie/chaton ~
- cp -a oldhome-c/data/chaton /var/nekoie/data
- vim /var/nekoie/chaton/notice.conf
- cp -a oldhome-c/htdocs/{chaton-auth.html,favicon.ico,img} /var/www/localhost/htdocs.misc.tir.jp
- mkdir -p /var/www/localhost/htdocs.misc.tir.jp/chaton
- cp -a oldhome-c/htdocs/chaton/.ht* /var/www/localhost/htdocs.misc.tir.jp/chaton
- cd /var/nekoie/chaton
- make install
- /var/nekoie/chaton/bin/chaton-archiver-notice
- crontab -e
- 0 0 * * * sleep 1; /var/nekoie/chaton/bin/chaton-archiver-notice > /dev/null 2>> /var/nekoie/data/chaton/cron.log
- cd /tmp
- echo '#!/bin/sh' > chaton-notice.start
- echo 'su - nekoie -c "/var/nekoie/chaton/bin/chaton-viewer-notice >> /var/nekoie/data/chaton/server-notice.log 2>&1 &"' >> chaton-notice.start
- chmod a+x chaton-notice.start
- echo '#!/bin/sh' > chaton-notice.stop
- echo 'su - nekoie -c "kill `readlink /var/nekoie/data/chaton/notice/viewer.pid`"' >> chaton-notice.stop
- chmod a+x chaton-notice.stop
- su -c 'chown root.root chaton-notice.* && mv chaton-notice.* /etc/local.d'
- su -
- /etc/local.d/chaton-notice.start
- /etc/local.d/chaton-notice.stop
- /etc/local.d/chaton-notice.start
- exit
- ここで最新のデータを移動させた
- cd -
- memo.cgiの移転/設置
- mkdir -p /var/www/localhost/htdocs.misc.tir.jp/chaton/notice/memo
- vim /home/nekoie/copy-of-svn.tir.jp/nekoie/scripts/memo.cgi
- cp /home/nekoie/copy-of-svn.tir.jp/nekoie/scripts/memo.cgi /var/www/localhost/htdocs.misc.tir.jp/chaton/notice/memo
- scp -r c:data/memo /var/nekoie/data
続きはあとで
TODO
- 「shutdown -r now」を実行した後に起動せず、クラウドのコンソール画面からすら応答がなくなる事がある(状態はupになってる)。クラウドのAPIはどの操作を行おうとしてもタイムアウトかエラー。復旧手順はおそらく、「停止」でエラー後、一旦ログアウトして再度ログインしたら状態がdownになるので、そこから起動。
- 以下を手動でインストールし、必要なら設定を行う
- 以下を見て、どうにかするかどうか決める
- 今は、 LANG=ja_JP.utf8 を設定しているが、これだとdateとかエラーメッセージが日本語で出てうざいので、LANG=Cになるべく設定を調べる。
- 以下のアプリがutf-8判定にならないと困る
- vim(済/termencoding=utf-8)
- screen(済?)
- lv(aliasを使うしかなさげ?)
- mutt-j
- zshを起動すると、lsでの色付け等が無効に戻ってしまうので、調べて直す事。おそらくbashでのみalias設定がきいている為だと思う
- vimで、「:e ++enc=utf-8」等で開いた時に、vimステータスバーの文字コードが変化しない問題をどうにかする(おそらく.vimrc_kaoriyaが古いのが問題?新しいものに入れ換えてみる事)
検討する項目
あとで
過去に検討された項目
32bitOSと64bitOSのどちらにすべきか
- 結論
- 今は32bitOSを選択する事に
- 将来、CPU速度もしくはメモリが上限に達した時に、「そのままサーバのスペックを追加する」「os再構築する」再度検討を行う
- 自分が過去に経験したのは、「64bit版バイナリのプロセスは、大体、32bit版バイナリのプロセスの四倍程度のメモリを消費する」という事
- どういう理由で四倍消費しているのかは分からないが、経験上大体そうなっていた
- ベンチでは、64bit版のバイナリは、32bit版よりも速度が最大で2倍程度速い
- 選択肢は以下の通り
- 32bitOSを選ぶ
- メモリ消費はkernelもプロセスも小さい
- 実行速度は64bit版より遅い
- 64bitOSを選び、32bit版のバイナリを構築する
- kernelはメモリ消費大で高速、プロセスは32bitなので小さい、特定プロセスのみ32bit版/64bit版を選択するといった事が可能
- 64bitOSで32bitバイナリを動かす際のオーバーヘッドがあるかもしれない
- 64bitOSを選び、64bit版のバイナリを構築する
443番をsshdにlistenさせるか
これはfwの厳しい環境でssh接続を使えるようにするhackの事。
- しない事にした。これが必要になるのはセキュリティの厳しいFW越しのLAN等からのアクセスであり、自分は外でもほぼmopera経由でアクセスする為、これを設定しておく必要がこれまで全くなかった為。
最終更新 : 2016/02/18 19:57:15 JST