Nov 25th, 2009

Server OS変更

最初に

このblogのあるサーバは海外にあるLinode.comで借りています。
ついこの間Ubuntu9.10が公開され、ローカルのVMにもインストールしてたけど、Linodeの方でも早速にUbuntu9.10に対応開始。

CentOSを利用していたのだけど、作りたいものの関係でUbuntuを使いたい&ローカルのVMのサーバもUbuntuなので、いっそのこと統一した方が良いって事で、丁度いい機会ってことでサーバの切り替えをした。
そう思い立ったのが2009/11/24 AM2:00

その記録。適宜説明はしょりまくってますが、これは実際には昨日2009/11/24の話です。

バックアップ

まずサーバのデータバックアップ。
・メールスプール
・ウェブページ(実質blogとp2しかないけどw)
・DBデータ
・ログデータ
・設定ファイル(postfix,dovecot,mysql,apache)
・SSL証明書
を順番にtarでパックしつつローカルにコピー

OSインストール

linodeはVPSでコントロールパネルからOSのDeployが出来るので、HD消去 >>Deployと実行
これはOSイメージのコピーくらいの時間で5分くらいで完了(たしかそのくらい)
ちなみに、インストールされるものは最小限のものしか入ってないので、適宜インストールが必要。taskselを使ったインストールもできませぬ。

サーバ初期設定

サーバはrootでしか入れない設定なので、webのコントロールパネルのLISHの情報を見て、sshでrootで入って設定。
まずはユーザ追加(プライマリグループはusers)

 # adduser --gid 100 username

adminグループが無かったので作成

 # addgroup --gid 109 admin

adminグループを作成したユーザに追加

 # gpasswd -a username admin

ユーザ追加が確認できたら、visudoで追加したユーザでsudoが使えるように以下を追加

%admin ALL=(ALL) ALL

追加したユーザにスイッチして実際にsudoできるかどうか確認

 # su - username  
 $ sudo apt-get update && sudo apt-get upgrade

確認できたら実際にterminalから入って以後は追加したユーザで設定

基本設定

host名が入ってないので、ホスト名を設定

 $ sudo vi /etc/hostname

次にtimezoneがutcなのでjstに

 $ sudo dpkg --configure tzdata

DHCPでIPアドレスを取得する設定になっているので、固定にする
(IP情報はwebコントロールパネルで確認できる)

 $ sudo vi /etc/network/interfaces

セキュリティ設定

ポリシー
iptablesで必要なportだけ通す。sshについてはtcpdで接続制限をかけると共に、公開鍵のみで行う。sshのポートは変更しない。

まずはfirewallの設定とtcp wrapperの設定ということで、ufwとtcpdをインストール。

 $ sudo apt-get install tcpd ufw

ufwの最小限の設定。

 $ sudo ufw enable  
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y  
 $ sudo ufw default deny  
 $ sudo ufw allow ssh  
 $ sudo ufw logging low

tcpdの設定/etc/hosts.allowと/etc/hosts.denyに以下のように設定。
/etc/hosts.allow

sshd: .xxxx.yyy.ne.jp

/etc/hosts.deny

sshd: ALL

そして次はMTA(postfix+mysql)の設定
必要なもののインストール。

 $ sudo apt-get install postfix postfix-mysql dovecot-postfix dovecot-imapd mysql-server mysql-client

インストール途中でどんなメールサーバ?と聞かれるので internet site を選択し
て、ホスト名を入力
mysqlのrootのパスワードも聞かれるので、passwordを設定。
設定ファイルなどはCentOS時代のを流用。
この辺は時間があったら別で再掲します。

Centosとの違いとして注意点は、chroot がデフォルトONになってたので、それをOffに。(これに気づくのに時間かかったのは内緒だ)
dovecotのバージョンが上がっていて、オプションが増えていたので、追加

設定後は、ufwでportを空ける。

 $ sudo ufw allow 25  
 $ sudo ufw allow 587  
 $ sudo ufw allow 993

次にapache2+php5

 $ sudo apt-get install apache2 php5

phpmyadminを入れようとして失敗して、universeコンポーネントが含まれていない事に気づいたので。

 $ sudo vi /etc/apt/source.list

以下を追加

## universe repositories  
deb http://us.archive.ubuntu.com/ubuntu/ karmic universe  
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic universe  
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe  
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe

追加した後に

 $ sudo apt-get update  
 $ sudo apt-get install phpmyadmin

設定が終わったら、各portをufwで空けていく。

 $ sudo ufw allow 80  
 $ sudo ufw allow 443

timelimit

これで/etc/apache2/site-availableに使ってるサブドメイン単位で設定ファイルを書いて、バックアップからデータを戻して、表示確認まで出来たってことで、timelimitで朝になりましたorz
簡単には確認できていたので、mailさえ確実に届くなら後でいいやってことで。
所用を片付けて、夜。

このblogで各記事へのリンクが404になってる事に気づくorz
apacheのrewriteがデフォルトでoffになってる事に気づいて。慌てて以下のコマンドを設
定。

 $ sudo a2enmod rewrite  
 $ sudo service apache2 restart

ということで、16時間くらいトップしか表示されていなかったようです。orz
そしてまだおかしい所が多々あるかもしれませんorz