カスタムOSインストールガイド - Ubuntu 16.04 – さくらのサポート情報 を見ながらインストールまでやる。
旧サーバと同じホスト名にしてDNSをふりかえたいが、DNS やホスト名まわりは最後にやる。
SSH の設定
手元からまず copy-id
$ ssh-copy-id user@ufhostname
リモートの設定をかえる
$ sudo vi /etc/ssh/sshd_config PasswordAuthentication no PermitRootLogin no UsePAM no $ sudo /etc/init.d/ssh restart # 別のターミナルを開いて ssh できることを再度確認
Firewall の設定
ssh, http, https と mosh 用の udp ポートをあけておく (該当するソフトウェアをインストールすると勝手に空いたりするのだが念のため)
sudo ufw default deny sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 22 sudo ufw allow 60000:61000/udp sudo ufw enable
必要なパッケージいれる
sudo apt-get install zsh gcc libncurses5-dev language-pack-ja git daemontools daemontools-run mysql-server ca-certificates cpio curl dnsutils imagemagick imagemagick-common irssi libcairo2-dev libcurl4-openssl-dev mime-support nginx nginx-common nginx-full ntp ntpdate optipng pkg-config rsync shared-mime-info w3m wget xz-utils xml-core zip libxml2-dev libtiff5-dev libssl-dev libsqlite3-dev libreadline-dev libpng12-dev libpango1.0-dev libopenjpeg-dev libmysqlclient-dev libjpeg8-dev libgif-dev libfreetype6-dev libffi-dev cmake screen ruby-dev rrdtool libdb-dev postfix unattended-upgrades
sudo ln -s /etc/service /service
旧サーバから rsync
home ディレクトリごとまるごと移す
一時的に sudo で rsync をつかえるようにする
$ sudo vi /etc/sudoers.d/rsync Defaults env_keep += "SSH_AUTH_SOCK" Defaults!/usr/bin/rsync !requiretty cho45 ALL=(ALL) NOPASSWD: /usr/bin/rsync ||< >|| ## dry-run sudo rsync --dry-run -auvz -e 'ssh -i /home/cho45/.ssh/id_ecdsa' --rsync-path='sudo rsync' --progress /home/cho45/ cho45@160.16.210.51:/home/cho45/
ほかもうつす
/srv /etc/nginx /etc/postfix # /etc/mysql 変更点がなかった。。。あらためて見直そう /etc/letsencrypt # /var/lib/mysql mysqldump でやった # /service 手動でやる
意外とうつすのない?
h2o のインストール
git の HEAD を入れてるので再度コンパイルして /usr/local にインストール
cd ~/project/h2o git clean -f cmake -DWITH_BUNDLED_SSL=on . make sudo make install
ログファイルを /var/log/h2o に作るようにしてるが前もってディレクトリがないとしぬ
sudo mkdir /var/log/h2o
/var/log/h2o/*.log { daily missingok rotate 90 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate svc -h /service/h2o endscript }
perl のインストールしなおし
5.14.4 が gcc の関係?で入らなかったので、これを期に 5.22.2 に移行
perlbrew install perl-5.22.2 --as perl-5.22
前のマシンで perlbrew list-modules した結果を保存して cpanm にくわせてインストール。入らないやつが無視されるので、完全ではないがだいたい入る。
5.22 で動かなくなったコードを地味に修正したりした。
mysql
db ファイルだけ rsync したらいけるだろと思ったけど割といけなかったので、dump して restore する。mysql 自体のバージョンもあがってるのでまぁこのほうがよさそう。
mysqldump -uroot --routines --all-databases --flush-privileges | ssh cho45@160.16.210.51 'mysql -uroot'
たいしてデータ入ってないので一瞬。--routines でユーザテーブルもコピーしている。 --flush-privileges をつけないとコピーしたユーザデータが反映されないのでつけとく。
動作確認
160.16.210.51 www.lowreal.net 160.16.210.51 lowreal.net 160.16.210.51 cho45.stfuawsc.com 160.16.210.51 coqso.lab.lowreal.net 160.16.210.51 no-real.net 160.16.210.51 block.lab.lowreal.net
みたいなのを /etc/hosts に書いて検証。証明書も転送して設定済みなので DNS だけ書きかえればうごいてくれるという感じのはず。。
DNS 変更
DNS の向き先を新サーバに向ける
ホスト名と逆引きを設定
さくらのVPSはA レコードがひけてないと逆引き設定がつくれないので、Aレコードが適用されたあとにやる。
/etc/hostname も変える。
ここまでやったら一旦リブート。30秒ぐらいで起動するのでたすかる……
cron の再設定
旧サーバからぬいてくる
crontab -l > crontab.user sudo crontab -l > crontab.root
新サーバに適用する
crontab crontab.user sudo crontab crontab.root
カーネルパラメータ
/etc/sysctl.conf に追記
net.core.somaxconn = 50000 net.ipv4.tcp_max_syn_backlog = 30000 net.core.netdev_max_backlog = 5000 net.ipv4.ip_local_port_range= 1024 65535
sudo sysctl -p で反映