さくらインターネット VPS(v3) 2G設定メモ

2012/03/29から「さくらのVPS」リニューアル実施のお知らせにあるように新「2Gプラン」提供が始まったので、今までのプラン(512)から乗り換えた(*1)。

プラン取り消しを申請しても当面は並行して動くので、とりあえず新VPSサーバの環境設定をすることにする(以下、一部の文字情報については、***などで書き換えてます)。

<続>さくらインターネット VPS(v3) 2G設定メモ::20120401追記

<続々>さくらインターネット VPS(v3) 2G設定メモ::20120502追記

仮登録メール

申し込み・支払い(クレジットカード)を済ますと申し込み(支払い)確認メールがやってきて、その後、次メールが舞い込む。申し込み確認メールが12時半ごろで仮登録メール到着は午後2時前であった。

 会員ID    :*****
  ご契約者名:**** 様
  電子メール:*****
《契約サービスの情報》
  サービス名      :さくらのVPS(v3) 2G
  サービスコード  :*************
  お申し込み日    :2012年03月29日
  お試し期間終了日:2012年04月12日
《サーバ出荷情報》
  [サーバ基本情報]
    IPアドレス: 219.94.***.***
  [管理用ユーザ]
   ユーザ名      :root (※)
   初期パスワード:*********
  ※rootとは 
   *snip*
  *snip*
  ※ご注意ください
  ご提供時の初期状態ではVPSは停止状態になっていますので、利用を開始
  する際は「VPSコントロールパネル」にログインしVPSを起動して下さい。

《VPSコントロールパネル ログイン情報》
    *snip*
     URL       : https://secure.sakura.ad.jp/vpscontrol/
     IPアドレス: 219.94.***.***
     パスワード: *******
  *snip*

センターは石狩?いや大阪か。

IPアドレス: 219.94.***.***なので、ちがうようだ。堂島っぽい。


rootでログイン

仮登録メールの到着が前回より遅かったので、リモートコンソールからシングルユーザモードでVPSを弄ろうかと思っていた。既に別サーバ会員なのでリモートコンソールが使えるようだ。

シングルユーザモード

シングルユーザモードでのパスワード書き換えについては、http://d.hatena.ne.jp/takeru-c/20110413/1302657243を参照。

素直にsshログイン

しかしその矢先にメールが来たので、素直にsshでログインしてパスワードだけ変更。

[big-imac:~] foo% ssh root@219.94.***.***
root@219.94.***.***'s password: 
SAKURA Internet [Virtual Private Server SERVICE]
[root@bar ~]# pwd
/root
[root@bar ~]# df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/vda3            204097520   1343504 192386472   1% /
tmpfs                  1027400         0   1027400   0% /dev/shm
/dev/vda1               256666     32305    211109  14% /boot
[root@bar ~]# sync
[root@bar ~]# passwd
ユーザー root のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。

サーバ情報:CentOS 6.2

[root@bar ~]# cat /etc/system-release
CentOS release 6.2 (Final)
[root@bar ~]# uname -a
Linux ******.sakura.ne.jp 2.6.32-220.7.1.el6.x86_64 #1 SMP Wed Mar 7 00:52:02 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux

ちなみに、旧いプランのVPSに入っているのは

cat /etc/redhat-release:CentOS release 5.7 (Final)
uname -a 
Linux *****.sakura.ne.jp 2.6.18-274.17.1.el5.centos.plus #1 SMP Wed Jan 11 10:58:44 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

なおversion 5 ではredhat-release、version 6は商標関係でsystem-releaseという名前にファイルがかわっているようだ。

バージョンが違う

旧サーバ設定をそのままなぞるわけにもいかないかもしれない。その時に手がかり・参考になりそうなのが

http://d.hatena.ne.jp/enakai00/20110307/1299464439

http://d.hatena.ne.jp/enakai00/20111004/1317718773

ユーザ設定の変更

cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

bashは苦手なので、/bin/tcshにする。

ついでに、/etc/skelから.bashrcなどbash関係を削除(そんなに嫌がらなくてもいいのにね)。

wheelグループのみsuを可能にする。

http://stargate.undo.jp/centos/centos62_1がまとまっている。

ついでにsshでのrootログインを無効化

サーバ設定開始

不必要サービス停止

これが一番悩ましい。

デフォルトのchkconfigでonのもの
sudo /sbin/chkconfig |grep :on |gawk '{print $1}'

acpid
atd
cpuspeed
crond
ip6tables
iptables
irqbalance
lvm2-monitor
network
ntpd
ntpdate
postfix
rsyslog
sshd
sysstat
udev-post

うあ、思ったより少ない!いいぞいいぞ。この程度なら、とりあえず、なにもしなくてイイと思う。lvm2-monitorとかudev-postとかとりあえず残しておこう。

yumアップデート

yum -y upgrade

yum -y install yum-fastestmirror

yum -y install yum-cron

yum -y update

さすがに処理が早い。

国際化

vim /etc/sysconfig/i18n

LANG="ja_JP.UTF-8"


基本ツールインストール

yum -y install emacs

yum -y install nkf

yum -y install w3m

yum -y install ncurses-devel

yum -y install ncurses

昔から愛用の軽量エディタngだが(もはや使っている人はあんまりいないかもしれない)、今回もhttp://hidev.blog.so-net.ne.jp/2007-03-09のUTF-8パッチをいただいて、ソースからmake。なおncureses関係をインストールしていないとtty関連でエラー終了するので注意。


yumの追加リポジトリ

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

# rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

上のうちepelについては、

パッケージ epel-release-6-5.noarch は既にインストールされています。

あら、そうなの?。

ntpd設定

と思ったが、/etc/ntpd.confでntp1.sakura.ne.jp設定されているのでなにもしない。

iptables設定

そろそろ制限をかける。

設定はひみつ

sudo /sbin/services iptables save

reboot

reboot早いなあ。

iptables設定も、とりあえず問題なさそう。

旧サーバ(VPS 512)からの移行準備順序を考える。

  • 最初に言語のインストール
  • 次にHTTPを動作
  • SSL認証関係(opensslとか)
  • SMTPなどメール関係設定

この順序でやることにする。

Python 2.7.2 のインストール

Pythonのお勉強に従ってやる。OS,Python ともバージョンは違うが同じくインストールできた。バージョンは2.7.2。それにしてもコンパイルが早いぜ。

PHP 5.3.10のインストール

なにも考えずにyumでPHP/PEARをインストール

yum -y install --enablerepo=remi php

yum -y install --enablerepo=remi php-devel

yum -y install --enablerepo=remi php-pear

php-pear.noarch 1:1.9.4-5.el6.remi

/etc/php.iniのdate.timezone = 'Asia/Tokyo'

php -r'phpinfo();'|grep Configureの結果

Configure Command => './configure' '--build=x86_64-unknown-linux-gnu' '--host=x86_64-unknown-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--with-t1lib=/usr' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--with-mhash' '--enable-force-cgi-redirect' '--libdir=/usr/lib64/php' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable-mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--enable-mysqlnd=shared' '--with-mysql=shared,mysqlnd' '--with-mysqli=shared,mysqlnd' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with-oci8=shared,instantclient,/usr/lib64/oracle/11.2/client64/lib,11.2' '--with-pdo-oci=shared,instantclient,/usr,11.2' '--with-interbase=shared,/usr/lib64/firebird' '--with-pdo-firebird=shared,/usr/lib64/firebird' '--enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-curl=shared,/usr' '--enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,mysqlnd' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/usr' '--with-pdo-dblib=shared,/usr' '--with-sqlite3=shared,/usr' '--with-sqlite=shared,/usr' '--enable-json=shared' '--enable-zip=shared' '--without-readline' '--with-libedit' '--with-pspell=shared' '--enable-phar=shared' '--with-mcrypt=shared,/usr' '--with-tidy=shared,/usr' '--with-mssql=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvshm=shared' '--enable-sysvsem=shared' '--enable-posix=shared' '--with-unixODBC=shared,/usr' '--enable-fileinfo=shared' '--enable-intl=shared' '--with-icu-dir=/usr' '--with-enchant=shared,/usr' '--with-recode=shared,/usr'

PHPをYaml対応

libyaml

yum -y install libyaml-devel

yum -y install libyaml

これが前提。develも入れないとエラー。


pecl

pecl bundle YAML

./configure

make

make test

make install

Installing shared extensions: /usr/lib64/php/modules/

/etc/php.d/yaml.iniを作る

; Enable yaml extension module

extension=yaml.so

めでたく

php -r'phpinfo();' | grep yaml

/etc/php.d/yaml.ini,

yaml

yaml.decode_binary => 0 => 0

yaml.decode_timestamp => 0 => 0

yaml.output_canonical => 0 => 0

yaml.output_indent => 2 => 2

yaml.output_width => 80 => 80

めでたさも中くらいなり春の宵:PHP 5.3.3にdegrade

しかし --enablerepo=remi で入れた最新5.3.10だとmbstringとかあれこれの*.soが入らないことが判明。結局、正規の5.3.3に戻す。

yum remove php-common...などをやったあと、

yum -y install php-common

yum -y install php-cli

yum -y install php-devel

して必要な*.soを入れる。

ls -l /etc/php.d/

  • rw-r--r-- 1 root root 49 2月 3 08:53 2012 curl.ini
  • rw-r--r-- 1 root root 47 2月 3 08:53 2012 dom.ini
  • rw-r--r-- 1 root root 57 2月 3 08:53 2012 fileinfo.ini
  • rw-r--r-- 1 root root 45 2月 3 08:53 2012 gd.ini
  • rw-r--r-- 1 root root 49 2月 3 08:53 2012 json.ini
  • rw-r--r-- 1 root root 57 2月 3 08:53 2012 mbstring.ini
  • rw-r--r-- 1 root root 53 9月 13 23:23 2011 mcrypt.ini
  • rw-r--r-- 1 root root 47 2月 3 08:53 2012 pdo.ini
  • rw-r--r-- 1 root root 61 2月 3 08:53 2012 pdo_sqlite.ini
  • rw-r--r-- 1 root root 49 2月 3 08:53 2012 phar.ini
  • rw-r--r-- 1 root root 55 2月 3 08:53 2012 sqlite3.ini
  • rw-r--r-- 1 root root 49 2月 3 08:53 2012 wddx.ini
  • rw-r--r-- 1 root root 59 2月 3 08:53 2012 xmlreader.ini
  • rw-r--r-- 1 root root 53 2月 3 08:53 2012 xmlrpc.ini
  • rw-r--r-- 1 root root 59 2月 3 08:53 2012 xmlwriter.ini
  • rw-r--r-- 1 root root 47 2月 3 08:53 2012 xsl.ini
  • rw-r--r-- 1 root root 49 3月 29 17:19 2012 yaml.ini
  • rw-r--r-- 1 root root 47 2月 3 08:53 2012 zip.ini

当面こんだけ入ってれば大丈夫だろう。

nginxインストール

uwsgi install

Pythonを使うため。

pip instal uwsgi

二つの設定ファイル

/etc/sysconfig/uwsgi

/etc/init.d/uwsgi

http://yoshi.o-oi.net/Entry/10/を参照。



nginx本体

とりあえずyum install

yum -y install nginx

nginxは/usr/sbin/nginxにはいるがこれは使わない。

ただし/etc/init.d/nginxを使ったり、/etc/nginx/*とか設定ファイルを使うためにインストールしておく(設定ファイルを独自で作るの面倒なため)。

独自にnginxをmake install

次にnginx最新版をソースから

yum -y install openssl

yum -y install openssl-devel

した上で

./configure --with-http_ssl_module --with-mail_ssl_module

make

make install

/usr/local/nginx/sbin/nginx

となる。

/etc/init.d/nginxの変更

× nginx=/usr/sbin/nginx

○ nginx=/usr/local/nginx/sbin/nginx <=独自make;make installのnginx

とする。

あとはyumでインストールした

/etc/nginx/

側の設定ファイルをいじればイイ。

init.d/nginxとinit.d/uwsgiをそれぞれ、chkconfigで有効に。

nginxの方はyumインストールなので、chkconfig nginx on。

uwsgiはchkconfig -add uwsgiしてからchkconfig uwsgi on。

余談:nginx設定ファイルについて

/etc/init.d/nginx内で設定ファイルが

start() {
  ....
  daemon nginx -c /etc/nginx/nginx.conf
  ....
}

だとすれば、nginx.confにはserver設定を書かずに末尾に

include /etc/nginx/conf.d/hosts/*.conf

として「あれこれの.conf」でバーチャルホスト設定をする。


SSL設定

有効期限10年でやってみる。

yum -y install mod_ssl
cd /etc/pki/tls/certs
openssl genrsa -out server.key 2048
chmod 400 server.key 
openssl req -new -out server.crt -key server.key -x509 -days 3650 
chmod 400 server.crt

nginxでhttpsテスト

nginxのconfigファイルに

server {
  listen 443;
  ssl on;
  ssl_certificate /etc/pki/tls/certs/server.crt;
  ssl_certificate_key /etc/pki/tls/certs/server.key;
}

SMTP設定(中断)

で、ここまでで一日目の設定は終わり。というのも、「お試し期間中」になっているので、外部送信が出来ないのだ(25番ポートを閉じられているようだ)。

2日目:ドメイン取得radio-signal.com=>ホスト名を変更

このVPSの独自ドメインとして

radio-signal.com

を取得したので、それを利用する。

/etc/hostsと/etc/sysconfig/networkに同名を書き込み。reboot


SMTP、メール関係設定(再開)

で、さくらのコントロールパネルで「本登録」を押して。再開。ここからが作業2日目。

基本的に「複眼中心」さんのhttp://rewse.jp/blog/p/902あたりからの流れをそのまま使わせてもらって旧(っていってもまだ動作中)サーバは設定したので、まずはその/etc/postfix/main.cfとmaster.cfをそのままもってきて、下記の--koko--部分をradio-signal.comに書き換える。

main.cf:myhostname = --koko--
main.cf:mydomain = --koko--
main.cf:smtpd_tls_cert_file = /etc/postfix/ssl/mail.--koko--.crt
main.cf:smtpd_tls_key_file = /etc/postfix/ssl/mail.--koko--.key

mailコマンドで、任意の外部アドレスに送信テスト。

Return-Path: 
X-Original-To: bar@example.com
Delivered-To: bar@example.com
Received: from radio-signal.com (www1052uf.sakura.ne.jp [219.94.234.66]) 	
by radio-age.com (Postfix) with ESMTP id 27BE1E7B6B
for ; Fri, 30 Mar 2012 15:31:00 +0900 (JST) 
Received: by radio-signal.com (Postfix, from userid 0)
id EF4B5E01BB; Fri, 30 Mar 2012 15:30:59 +0900 (JST)
Date: Fri, 30 Mar 2012 15:30:59 +0900
To: bar@example.com

ok.


Cyrus SASL設定

SMTP認証が必要。

http://rewse.jp/blog/p/904参照。

cyrus-sasl,cyrus-sasl-plainはどちらもインストール済みだった(2.1.23-13.el6.x86_64)。

定義ファイルはそのままでいい。

postfixの定義ファイル

/etc/postfix/main.cf

/etc/postfix/master.cf

で、sasl_auth関係の行を加えること。

SMTP over SSL/TLS

ssl対応のためにhttp://rewse.jp/blog/p/905にしたがって、上記の

/etc/postfix/ssl/mail.radio-signal.com.crt

/etc/postfix/ssl/mail.radio-signal.com.key

を作成する。

postfix/main.cfにTLS関係の行を加え、/etc/init.d/postfix reloadして

telnet localhost 25

でチェック(*2)。

OK


Dovecot

IMAPを使うためにDovecotを使う。

http://rewse.jp/blog/p/910のDovecotと現在yumでインストール出来る最新のDovecot(version 2.0.9)の仕様が若干変わっているので、設定ファイルも作り直す必要がある。

旧サーバで動作させているdovecot.confで動かすと、次のようなWarningが出る。

Dovecot Imap を起動中: doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf

doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:20: protocols=imaps is no longer necessary, remove it

以下略

doveconf -n > dovecot-new.confに従ってdovecot-new.confを作ると

cat dovecot-new.conf


# 2.0.9: /etc/dovecot/dovecot.conf

# OS: Linux 2.6.32-220.7.1.el6.x86_64 x86_64 CentOS release 6.2 (Final)

mail_location = maildir:~/Maildir

passdb {

driver = pam

}

protocols = imap pop3

service auth {

user = root

}

ssl_cert =

ssl_key =

userdb {

driver = passwd

}

これをdovecot.confとすればおしまい。えらいなあ。>dovecot


メール関係作業の整理

さてここで上でやった作業を整理しておく。

  • SMTPの設定--postfix
  • SMTP認証の設定--saslauthとpostfix
  • SMTP over SSL/TLS--postfixでのssl鍵、認証ファイルの作成
  • IMAP設定--dovecotの設定。sll認証、鍵ファイルはpostfixのものを流用。

init.dでの起動設定。

というわけで、とりあえず

chkconfig postfix on

chkconfig saslauthd on

chkconfig dovecot on

して、reboot。


MUA(メーラー)での確認

MacOSXの標準MUA 「Mail」での設定確認

SMTP設定

no title


IMAP設定

no title



relay関係設定のチェック。

踏み台にされないように、とりあえずいくつかのrelayチェックサイトでチェック。

移行のための準備終了

というわけで、一応準備終了。当分、旧サーバも使えるので、ここからゆっくりと新VPSを使っていくことにする。

以上の総作業時間6時間強:疲れた。。。

ちなみにtopコマンドでのメモリ使用状況。

no title


VPS 512でのtopは下。複数のvirtual hostでhttpd(nginx)を動かすと下程度になると思うがそれでも余裕がありまくりである。

no title



<続>さくらインターネット VPS(v3) 2G設定メモ::20120401追記

<続々>さくらインターネット VPS(v3) 2G設定メモ::20120502追記

*1: 申し込みは12時頃からはじまって数時間で満杯になって当日受付停止したみたいであるhttp://www.sakura.ad.jp/news/sakurainfo/newsentry.php?id=630。こういうのに疎い自分でもすぐに申し込んだぐらいだから、人気になったのだろう。

*2: 実際は、telnetが入ってないのでyum -y install telnetしなければならなかった。

this file --> last modified:2012-05-03 12:15:37