はじめに
こんにちは、Python界の情弱です。いま「さくらのVPS 512」を借りてるんですが、プランが変更になって1Gが同じ料金で使えるようになりました。いまなら乗り換えると1ヶ月無料になるっていうんで、ちょろっと移行してみました。
ちなみに、今日から会社勤めとなった方々、おめでとうございます。とりあえずIT系に入って技術職するなら「さくらのVPS 1G」を1年分借りて、次のような本でLinuxサーバの管理なんかをしてみるのをおすすめします。rootがもらえるのでやりたい放題です。ハードウェアを買うわけではないので狭い家でも関係なくサーバの管理ができて、グローバルIPも取得できてWebアプリケーションも公開できます。「俺プログラマだから!」って人もLinuxの簡単な管理くらいはできたほうが、実装の際にボトルネックのイメージが沸くのでお勧めします。1万円なんて飲み会3回分くらいじゃん!*1
Linuxの教科書 改訂版 (マイコミムック) (MYCOMムック)
- 作者: 高町健一郎,大津真,佐藤竜一,小林峰子,安田幸弘
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2011/03/31
- メディア: ムック
- 購入: 13人 クリック: 51回
- この商品を含むブログ (16件) を見る
ログ
山括弧でくくられているところは適宜読み替え。
sshd起動
まずなにはともあれリモートコンソールでログインしてからsshdを起動。
- リモートコンソール
$ sudo service ssh start
SSHの設定変更
パスワードログイン禁止、ルートログイン禁止、公開鍵認証の設定、ポート番号の変更くらい
- new host
$ sudo vi /etc/ssh/sshd_config - Port 22 + Port <port number> - #PasswordAuthentication yes + PasswordAuthentication no - PermitRootLogin yes + PermitRootLogin no RSAAuthentication yes PubkeyAuthentication yes - #AuthorizedKeysFile %h/.ssh/authorized_keys + AuthorizedKeysFile %h/.ssh/authorized_keys $ mkdir ~/.ssh
まだsshdは再起動しない。ローカルにある公開鍵をコピーする。
- local
% scp ~/.ssh/id_rsa.pub <new_host>:~/.ssh/authorized_keys
これでsshdを再起動する。
- new host
$ sudo service ssh restart
これで無事に公開鍵認証できるようになった。
- local
% ssh <username>@<new_host> -p <port>
ポートの設定
まずは基本的にwwwとsshだけ開放しておく。(あとでDNSも開ける)
% sudo ufw default deny % sudo ufw allow 80/tcp % sudo ufw allow 80/udp % sudo ufw allow <SSH port>/tcp % sudo ufw allow <SSH port>/udp % sudo ufw enable % sudo ufw status Status: active To Action From -- ------ ---- <ssh port>/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 80/udp ALLOW Anywhere <ssh port>/udp ALLOW Anywhere
shellと設定ファイルの変更
自分は設定ファイルをGitレポジトリで管理しているのでまずgitが必要。またshellはzshを普段は使っている。
- new host
$ sudo apt-get install zsh-beta git-core $ sudo vi /etc/shells + /usr/bin/zsh $ chsh -s /usr/bin/zsh <username>
これで一旦ログアウトしてもう一度ログイン。無事にzshに変わった。次は設定ファイルを取得。まずその前にGitHub用のSSH秘密鍵をコピーしておく。
- local
% scp -P <port> ~/.ssh/github <username>@<new_host>:~/.ssh/
- new host
% git clone git@github.com:ymotongpoo/dotfiles.git .dotfiles % ln -s .dotfiles/.zshrc .zshrc % ln -s .dotfiles/.linux_env .os_env % ln -s .dotfiles/.screenrc .screenrc % ln -s .dotfiles/.versions .versions % ln -s .dotfiles/.pythonbrewrc .pythonbrewrc
必要なファイルをシンボリックリンク張っていく。毎回手でやってるんだよな、これ。
Pythonの設定
pythonbrewで設定します。設定はここの通り。
ただし若干設定が事前に必要なので行う。
- new host
% sudo apt-get install build-essential curl zlib % git clone https://github.com/utahta/pythonbrew.git % cd pythonbrew % chmod +x pythonbrew-install % ./pythonbrew-install
あとは上記のリンクの通り。
ホームディレクトリのsync
rsyncでホームディレクトリをsyncしておきます。dotディレクトリやdotファイルはsyncしないようにしときます。
- new host
% cd ~ % rsync -vrz --rsh='ssh -p<port>' --exclude=".*" <username>@<old_host>:~/ .
cronの設定
まずcron用に動かすPythonスクリプトで使う仮想環境を作って、ライブラリをインストールする。こんな感じ。
% pybrew venv create dev && pybrew venv use dev (dev) % sudo apt-get install libxslt-dev libyaml-dev (dev) % pip install lxml pit flask sphinx
cronでpythonbrewの仮想環境を使うように若干変更を加える。といってもvirtualenv関連のパスを変更するだけ。
#!/bin/bash export LANG=ja_JP.UTF-8 export ENV_NAME=dev export VIRTUALENV_PATH=/home/<username>/.pythonbrew/venvs/Python-2.7.2/$ENV_NAME export PYTHON=$VIRTUALENV_PATH/bin/python $PYTHON spam-egg.py
crontabの設定をかっぱらってくる。
- old host
% sudo cp /var/spool/cron/crontabs/<username> /home/<username>/crontab.txt && chown <username> ~/crontab.txt % scp -P <port> ~/crontab.txt <username>@<new_host>:~/old_crontab.txt % sudo cat ~/old_crontab.txt > /var/spool/cron/crontabs/<username>
bindの設定
自宅ネットワーク用のDNSも立ててたのでそれも移行する。まずBindのインストール。設定はこのへんで。
- BINDの設定をする - YAMAGUCHI::weblog
- new host
% sudo apt-get install bind9 % scp -P <port> <old_host>:/etc/bind/named.conf.local ~ % scp -P <port> <old_host>:/etc/bind/<zone file> ~ % sudo mv named.conf.local <zone file> /etc/bind % sudo ufw allow 53/tcp % sudo ufw allow 53/udp
これで大丈夫なのでbindを起動。
% sudo service bind9 start
nginxの設定
WEBサーバも立てているのでnginxの設定をしておく。nginxの設定ファイルをコピー。
- new host
% scp -P <port> <old_host>:/etc/nginx/nginx.conf . % sudo mv nginx.conf /etc/nginx/
適当に設定してnginxを起動。
% sudo service nginx start
ホスト名の変更
いよいよDNSレコードを変更するべく、新しいマシンのホスト名を変更。Ubuntu 10.04なので、/etc/hostnameと/etc/hostsを変更。
DNSレコードの変更
お名前.comでドメイン取ってるんで、そのDNSレコードで登録されているIPアドレスを変更。これで全部完了!
*1:ステマじゃないです。さくらインターネットからは1銭ももらってないです。