ログイン
編集不可のページディスカッション情報添付ファイル
"alstamber/VirtualServerBuilding"の差分

MMA
73と74のリビジョン間の差分
2012-04-18 21:41:37時点のリビジョン73
サイズ: 14691
編集者: alstamber
コメント:
2012-04-18 22:11:53時点のリビジョン74
サイズ: 14691
編集者: alstamber
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 325: 行 325:
/dev/(/bootの場所) /boot ext2 noatime 0 3 /dev/(/bootの場所) /boot ext4 noatime 0 3

なにこれ

  • なんかサーバー立ててる人多いし、自分も立ててみたいと思った
  • でもうちにはMacしかない……
  • MacにもServerOSはあるけど、高すぎる
  • なら仮想環境上で動かそう!
    • と思ってたらカーネルハックしたらネイティブ環境で動作するようになった

  • 当初の設計に無理が生じてきた→一から設計しなおすことにした


ゴール

  • blogを自分の管理下にあるサーバで運用する
  • FreeBSDの実験、各種ネットワーク実験を行う
  • →Linuxの実験、各種ネットワーク実験を行う

設計

システムを構成するサーバ

  • 大きく分けて2つのサーバでシステムを運用することとする

VPS

  • 980円の某VPS
  • blogの運用をこちらに切り離す
    • blogはトラフィックが大きいため、自宅での運用に不安が残ったため
    • バックボーンの面でやはりVPSに分があった
  • blog運用のため、PHP5およびMySQLの導入を行う
  • Twitter botを運用する。
  • ZFS Rootで運用
    • Linuxに移行したので、btrfsでの運用に変更。
  • 6rdでIPv6到達性を確保する
    • 6rdが事情で使えなくなったので、6to4に移行。

ドメインの割り振り

  • VPSには589lab.netのドメインを割り振る

実装

2011年6月17日

  • 980円の某VPSを契約
  • デフォルトでCentOSが入っているので、FreeBSDに差し替える
    • 某VPSはコントロールパネルからOSの再インストールの命令を発行できる
    • VNCで画面が自動的に飛んで来る。インストーラの指示に従ってインストール
  • とりあえず再起動
  • minimalインストールなので、rootのパスワードが設定されていない。急いで設定する

 # passwd
  • ユーザがrootだけだと残念なので、通常使用するユーザを作成する

 # adduser ***
  • sudoをインストール

 # cd /usr/ports/security/sudo
 # make install clean
  • visudoを使ってwheelグループをsudoできるようにする
  • rootからログアウトして、通常アカウントでログインしなおす
  • 健康で文化的な最低限度のツールを入れる
    • portmasterとかzshとかvimとか
    • 各種設定ファイルをmoonからコピーしてくる
      • scpを使えば良い
  • MySQLとPHP5を入れる
    • MySQLの設定はここを参考にするhttp://freebsd.server-manual.com/freebsd8_mysql5.html

    • 必要のないデータベースを削除し、wordpress用のデータベースを新しく作る
    • MySQLは最初動かなかったが、一旦アンインストールしてもう一度入れ直したらうまくいった
    • PHP5についてはphp5-extensionsを入れるのを忘れない←MySQLにphpからアクセスできなくなる
    • httpd.confに次の記述を行う。

<IfModule dir_module>
    DirectoryIndex index.html index.php ←追加
</IfModule>

<IfModule mime_module>
    AddType application/x-httpd-php .php 
</IfModule>

2011年6月20日

  • どうもVPSが不安定である。どうやらZFSがやたらメモリを食ってパニックしている様子。
    • メモリ使用量を減らす作業。
  • phpMyAdminを導入。
    • portsからインストール。php.iniで取り扱えるファイルサイズなどを変更。
      • 巨大データベースファイルをアップロードしたりすることがあるため。
  • DNSの設定を変更。
    • フリーのDNSサーバを借りて、589lab.netのAレコードがVPSを向くようにした。
  • munin-masterとmunin-nodeをインストールした。
  • ntpdを起動するようにした。
    • まず/etc/ntp.confを編集。

server ntp.nict.jp
  • /etc/rc.confに追記。

ntpd_enable="YES"
  • サービスを起動。

 # service ntpd start
  • 余談だが490円VPSは存外スペックが良かった
    • pingの帰ってくるスピードが異常に速かったし
    • 惜しむらくはFreeBSDに対応していないことだろう

2011年6月26日

  • やたらDNSサーバへのキューが多いと思ったら、TTLが1分になってた
    • キャッシュ汚染されても困るので1日に変更

2011年7月1日

  • Apacheの設定をチューニング。サーバのレスポンスがよくなることに期待。

2011年8月23日

  • VPSを再起動。ついでにsshのポート番号を変更しておく。

2011年11月4日-5日

  • 長期メンテ。
    • FreeBSD9.0-RC1入れてみる
    • 6rdのパッチが使えなくなったので、v6への対応は6to4にすることにした。
      • Tokyo6to4のお陰で、以前と違いレイテンシも大幅に軽減されている。
    • git入れてみる。
      • 共有リポジトリをVPS上に構築し、開発したものは全部そっちにおこうという計画。
      • git-daemonさんがうまく動かず、苦労したがgit-daemonを直接叩くのではなく、gitコマンドを使ってdaemonを叩くようにするとなぜか動いた。
      • とりあえず意味もなく現在作ってるbotのソースをpush。

2011年11月14日

  • せっかくFreeBSD9.0を入れたのでZFSのバージョンを上げてみる。

# zpool upgrade -a
# zfs upgrade -a
  • そういえばZFSの機能を何もいかしていなかったなあとおもったので、snapshotをとるようにした。
    • /var以外すべてをとるようにした
    • 以下をcrontabに追記

zfs snapshot 名前@`date +%Y%m%d`

2011年12月25日

  • 色々思う所があって、OSをLinuxに変えることにした。
    • ゴールもそれに合わせて変更。FreeBSDだけではなくLinuxもいじれるようにしたいというのがあった。
  • ディストリはDebianを選択。

btrfs boot

  • せっかくなので完全btrfs化というのをやってみた。

インストールと準備

  • まずVPSのコントロールパネルからDebianをインストール。ほぼ自動インストールになってて楽。'
    • この時パーティションの切り方を通常とは少し変える。/パーティションとは別に/bootパーティションを用意する。
      • /bootパーティションはext4
      • /パーティションはbtrfsで用意する
  • sshでログインして、/etc/apt/sources.listに次を追記。(testingはいらんかもしれない)

deb ftp://ftp.jp.debian.org/debian sid main
deb ftp://ftp.jp.debian.org/debian testing main
  • aptitude updateする。
  • zlib1g-dev zlibc kernel-package btrfs-tools libncurses-dev bzip2をインストール。

/bootパーティションの修正

  • /bootパーティションのブロックサイズがなぜか1024なので、4096として改めてファイルシステムを構築しなおす。

# umount /dev/(/bootの場所)
# mkfs.ext4 -b 4096 /dev/(/bootの場所)
  • /etc/fstabを編集する。
    • blkidコマンドを実行して新しい/bootパーティションのUUIDを確認。
    • /etc/fstabを開いて、マウントポイントが/bootの行のUUIDを新しいUUIDに書き換える。
  • 改めて/bootをマウントしなおす。

# mount -t ext4 /dev/(/bootの場所) /boot

カーネルのアップデート

  • www.kernel.orgから3.x系のカーネルのソースコードをダウンロードしてきて、コンパイルする。
    • 今回は実験環境でコンパイルしたものをコピーして使用した。

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.6.tar.bz2 
# tar xvjf linux-3.1.6.tar.bz2
# cd linux-3.1.6
# make menuconfig
# make-kpkg --initrd kernel_image kernel_headers
# cd ..
# dpkg -i *.deb
# grub-install /dev/sda(or)hda
# mkinitramfs 3.1.6 -o /boot/initrd.img-3.1.6
# update-grub
  • 一旦再起動して、カーネルが更新されていることを確認。

    • 再起動すると上がってこなくなるようです。

/bootのbtrfsへの変換

  • /bootパーティションをbtrfsにコンバートする。

# umount /dev/(/bootの場所)
# btrfs-convert /dev/(/bootの場所)
  • /etc/fstabを書き換える。(/bootの行のext4→btrfsにする)
    • UUIDがまた変わっているのでblkidコマンドで確認する。

UUID=(新しいUUID)   /boot   btrfs ......
  • debianでbtrfsにfsckをしようとすると残念なコトになるらしいので、fsckのフラグを折っておいても良いと思う。

grubのアップデート

  • grubの1.99をインストールする。
    • 何か選択肢が出てくるが、一番上を選んでおく。

# aptitude install grub2
  • grubを更新。

# mount /dev/(/bootの場所)
# grub-install /dev/sda(or)hda
# update-initramfs -t -u
# update-grub

その他行ったこと

  • sudoのインストール
  • sudoの設定
  • zsh, vimのインストール
  • update-alternativesでvimをエディタのデフォルトに
  • 各種設定ファイルのコピー
  • MySQL, PHPのインストール

2011/12/26

  • ただでさえメモリの少ないVPSのリソースをApacheが食べまくってる状況を改善したい。
    • WebServerをnginxというのに変えることにした。

2012/01/07

  • VPSが突然落ちた。再起動してもどうにもならない。原因もわからない。
    • どうせなので修復ついでに一度試したかったことを試して見ることにした。
    • バックアップとっといてよかった。
  • btrfsを導入するついでに、homeとsystemという2つのsubvolumeを構築し、かつbtrfs bootを実現する実験。

インストーラの起動

  • まずVPSのコントロールパネルからDebianをインストール。この時自動インストールに頼らずコンソールに落ちてインストールを行う。
  • インストーラの操作を進めて、パーティションマネージャが起動したらAlt+F2でコンソールに落ちる。
  • fdiskでパーティションを以前行ったbtrfs bootのときと同じ構成に切る。
    • ただし、swapの予定地もswapではなく通常パーティションとして切る。
  • フォーマットする。

# mkfs.ext4 -b 4096 /dev/(/bootの場所)
# mkfs.btrfs /dev/(swapの場所)
# mkfs.btrfs /dev/(rootの場所)

踏み台環境でbtrfsを構築する

  • swap予定地に踏み台となる環境を作り、そこで本番のbtrfs環境を作る。

# mkdir /dist
# mount -t btrfs /dev/(swapの場所) /dist
# debootstrap squeeze /dist
# mount -o bind /proc /dist/proc
# mount -o bind /dev /dist/dev
# chroot /dist /bin/bash
  • sources.listを前回と同じように書き換える。
  • btrfs-toolsを入れる。

# aptitude update
# aptitude install btrfs-tools
  • マウントしてsubvolumeを切る。

# mount /dev/(rootの場所) /mnt
# btrfs sub create /mnt/system
# btrfs sub create /mnt/home
# umount /mnt
  • 踏み台環境を抜けだして破壊。

# exit
# umount /dist/dev
# umount /dist/proc
# umount /dist
  • fdiskを使って、踏み台環境だった場所をswapパーティションに変更。
  • swapファイルシステムを作成。

# mkswap /dev/(swapの場所)
  • ベースシステムをインストール。

# mount -t btrfs -o subvol=system /dev/(rootの場所) /dist
# mkdir /dist/boot
# mkdir /dist/home
# mount /dev/(/bootの場所) /dist/boot
# mount -t btrfs -o subvol=home /dev/(rootの場所) /dist/home
# chmod 755 /dist/home
# debootstrap squeeze /dist
  • chrootする。

# mount -o bind /proc /dist/proc
# mount -o bind /dev /dist/dev
# mount -o bind /sys /dist/sys
# chroot /dist /bin/bash
  • sources.listを前回と同じように編集。
  • 各種ツールを入手。

# apt-get update
# apt-get install btrfs-tools
# apt-get install linux-image-3.0.1-amd64
# apt-get install console-setup tzdata
# apt-get install ssh
  • grubを入れる。

# apt-get install grub2
# grub-install /dev/sda
# update-initramfs -t -u
# update-grub
  • /etc/fstabを編集。

proc               /proc  proc   defaults  0  0
/dev/(rootの場所)   /      btrfs  defaults,subvol=system  0  1
/dev/(rootの場所)   /home  btrfs  defaults,subvol=home    0  2
/dev/(/bootの場所)  /boot  ext4   noatime                 0  3
/dev/(swapの場所)   none   swap   sw                      0  0
  • chrootを抜けて、networkの設定。

# exit
# cp /etc/network/interfaces /dist/etc/network/interfaces
  • 再起動して、recovery modeで起動。
  • rootパスワードを設定。

# passwd
  • 再起動してrootでログイン。ここからはsshで作業可能。
  • zlib1g-dev zlibc kernel-package libncurses-dev bzip2をインストール。

カーネルを更新

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.6.tar.bz2 
# tar xvjf linux-3.1.6.tar.bz2
# cd linux-3.1.6
# make menuconfig
# make-kpkg --initrd kernel_image kernel_headers
# cd ..
# dpkg -i *.deb
# grub-install /dev/sda(or)hda
# mkinitramfs 3.1.6 -o /boot/initrd.img-3.1.6
# update-grub

/bootをbtrfs化

  • /bootパーティションをbtrfsにコンバートする。

# umount /dev/(/bootの場所)
# btrfs-convert /dev/(/bootの場所)
  • /etc/fstabを書き換える。(/bootの行のext4→btrfsにする)
    • /dev/〜の表記をすべてblkidで調べて、UUID表記にしておく。

UUID=(UUID)   /boot   btrfs ......

grubの更新

# mount /dev/(/bootの場所)
# grub-install /dev/sda(or)hda
# update-initramfs -t -u
# update-grub

alstamber/VirtualServerBuilding (最終更新日時 2012-04-18 22:11:53 更新者 alstamber)