JSTQB Advancedの合格率はわずか 6.86%

第2回 JSTQB Advanced Level試験(テストマネージャ試験)の合格者と合格率が発表されていた。その合格率が、6.86% と異常なまでに低い。その前は 83.6% だったので、乖離がはなはだしい。(ちなみに第14回Foundation Level試験の合格率は 53.7% だったようだ。)


ALトライアル試験(2010/8/28) 189名 19名 10.05%
第1回AL試験(2011/8/27) 278名 240名 83.60%
第2回AL試験(2013/2/16) 277名 19名 6.86%
JSTQBは、異例のコメントまで出している。コメントでは「試験問題の難易度に差異はなく、同じ基準で判断したらこうなった」と言っている。試験問題が毎回ばらつくことを認めていないので、苦しい言い訳になっているように読めた。
このコメントで分かったことがある。合格ラインは明確に決められているということだ。おそらく65%前後だと推測する。このラインを固定として、毎回の試験の難度によって合格者数がばらついたとしても、底上げなどの調整は一切行っていないということだ。このポリシーは評価できる。
このポリシーのもとでは、試験問題の難度が毎回ばらつかないようにすることが、当然望ましい。今回の事態は、その努力が足らなかっただけだ。「第1回の試験結果のみ合格率が突出して高くなっているのは、トライアル受験者の再受験が多かったため」と分析しているようだが、その要因のウェイトはかなり低いと思われる。分析らしいことはしていなことを露呈させている。主要因は、試験問題の難度である。第1回が簡易すぎたので、その反動で第2回を難しくし過ぎただけだろう。

次回AL試験がいつになるかは不明だが、次回からはシラバスが大幅に改訂されたもので実施されるはずだ。シラバス2012年版が適用されるはずだ。現在、日本語に訳す作業を進めている段階だろう。これまでのJSTQBのスピード感から判断して、きっと今夏には間に合わない。次回は早くて1年後だろう。当方のコース「テスティング中級コース(管理編)」もその改訂にあわせて対応が必要だ。

CentOS 6.0のVPSサーバ構築/(4) WEBサーバの設定

GMOクラウド VPSCentOS 6.0」にサーバー環境を構築している。前回、メールサーバの設定ができたので、HTTPサーバとTOMCATをインストールし、既存のホームページや自前のサービスを移行させたのだ。過去の記事も参照のこと。
  (1) VNCサーバの設定
  (2) DNSサーバの設定とDropboxの設定
  (3) メールサーバの設定
  (4) WEBサーバの設定

今回は、まずローカルでHTTPDTOMCAT、そして自前のサービスが動作するまでを行った。ホームページや自前のサービスの移行では、以下の状況が作業を難しくしていた。手順が複雑になるので、以下の詳細は次回としたい。
  ■ 外部ネームサーバの設定(動的DNS)を併用したい
  ■ 同じドメイン名のままで移行したい
  ■ 契約したVPSは1つのサーバー(1つのIPアドレス)であり、1台で2つのドメインを扱うためにVirtualHostの設定が必要

MySQLをデータ移行した

まず、ホームページや自前のサービス一式をWinSCPなどを経由してサーバにコピーしておく。自宅サーバーのMySQLからデータをエクスポートして、新サーバにインポートしておく。MySQLについては、過去に何度も設定を行っているので、まったく問題はなかった。/etc/my.cnfには以下の記述を追加しておく。大文字・小文字の扱いを統一し、文字はUTF-8で統一して扱うようにしておく。このあたりのことは、以前にも MySQLのデータをWindowsからLinuxへ移行する手順 にメモしておいた。


[mysqld]
lower_case_table_names=1 // 大文字・小文字の扱いを統一。1=小文字で扱う
default-character-set=utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql.server]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
後は、MySQLのコンソールから、create databeseし、userを定義、パスワード設定、databaseに対するアクセス権限を設定しておく。そしてcreate tableしておく。詳細は割愛。そして、データをインポートすればいい。以下の手順になる。

# 自宅サーバ
> mysqldump -uroot -p*** data-basename > mysql-backup.utf8
# 新サーバ
> mysql -root -p*** data-basename < mysql-backup.utf8

HTTPDを設定した

自前サービスはJavaで実装しているので、Apache httpdとTomcat6の組合せで動作させる。申し込んだVPSが「CentOS6.0+Java開発環境パック」だったためか、必要なものはプリインストールされていた。まずは、Apache httpdの設定だ。


# httpd
> yum list | grep httpd
httpd.x86_64 2.2.15-15.el6.centos.1 @base
httpd-tools.x86_64 2.2.15-15.el6.centos.1 @base
httpd-devel.x86_64 2.2.15-15.el6.centos.1 base
> vi /etc/httpd/conf/httpd.conf
Listen 80
ServerAdmin webmaster@hogehoge.co.jp
ServerName www.hogehoge.co.jp:80
DocumentRoot "/var/www/html" // デフォルトのまま
> vi /etc/httpd/conf.d/proxy_ajp.conf // デフォルトのまま。最初はTOMCATと連携させない。
> service httpd restart
Firefoxから http://localhost:80/ で試すと、Apacheのデフォルトのページが表示され、問題はない。

TOMCAT6を設定した

次は、TOMCAT6だ。TOMCAT6ではいくつか苦戦させられた。まず、8080ポートが既に利用されていると出た。またTOMCATマネージャにログインできない事象に陥ったことだ。設定の手順は以下のとおり。


# tomcat6
> yum install tomcat6-webapps // examplesは入っていなかったので試しに入れてみた。
> yum list | grep tomcat6
tomcat6.noarch 6.0.24-45.el6 @base
tomcat6-el-2.1-api.noarch 6.0.24-45.el6 @base
tomcat6-jsp-2.1-api.noarch 6.0.24-45.el6 @base
tomcat6-lib.noarch 6.0.24-45.el6 @base
tomcat6-servlet-2.5-api.noarch 6.0.24-45.el6 @base
tomcat6-webapps.noarch 6.0.24-45.el6 @base
tomcat6-admin-webapps.noarch 6.0.24-45.el6 base
tomcat6-docs-webapp.noarch 6.0.24-45.el6 base
tomcat6-javadoc.noarch 6.0.24-45.el6 base
tomcat6-log4j.noarch 6.0.24-24.el6_0 base

# 面倒なのは、tomcat6関連のファイルはいろんなところに散らばっていること。
# 常に /usr/share/tomcat6 から辿るようにすると間違えにくい。
> ls -lag /usr/share/tomcat6
drwxr-xr-x 2 tomcat 4096 bin
lrwxrwxrwx 1 tomcat 12 conf -> /etc/tomcat6
lrwxrwxrwx 1 root 23 lib -> /usr/share/java/tomcat6
lrwxrwxrwx 1 root 16 logs -> /var/log/tomcat6
lrwxrwxrwx 1 root 23 temp -> /var/cache/tomcat6/temp
lrwxrwxrwx 1 root 24 webapps -> /var/lib/tomcat6/webapps
lrwxrwxrwx 1 root 23 work -> /var/cache/tomcat6/work
> cd /usr/share/tomcat6/conf
> ls -R
# 以下は便宜上、ツリー表現にしておく。
+-- Catalina
| +-- localhost
| +-- ROOT.xml // 自前サービス。メインであるためROOTに配置。
| +-- homepage.xml // ホームページ(動的)
| +-- manager.xml // TOMCATマネージャ
+-- context.xml
+-- server.xml // 編集が必要。後述。
+-- tomcat-users.xml // 編集が必要。後述。
+-- tomcat6.conf // 編集が必要。後述。
+-- web.xml

> cd /usr/share/tomcat6/webapps/
> ls
+-- ROOT // 自前サービスのルート。メインであるためROOTに配置。
+-- homepage // ホームページ(動的)のルート
+-- manager // TOMCATマネージャのルート

設定が必要なconfファイルやxmlファイルについてのみ説明しておく。

> vi /etc/tomcat6/tomcat6.conf
JAVA_HOME="/usr/lib/jvm/java-1.6.0"
TOMCAT_USER="tomcat"
# Connector port is 8080 for this tomcat6 instance
CONNECTOR_PORT="8081" // VPSサーバでは、なぜか8080が衝突するため8081を利用した。後述。

> vi /etc/tomcat6/context.xml // デフォルトのままでいい。
> vi /etc/tomcat6/server.xml

# (1) 以下を追記する。追記場所は、市販本やネット情報を参照のこと。
...
// tomcat7でないと効果がないらしいが、一応記述。

...
# (2) ポート番号を8080から8081に変更したので、該当する箇所(2箇所ほど)を置換しておくこと。

> vi /etc/tomcat6/tomcat-users.xml

# 以下のようにusernameとpasswordを追記する。
# ちなみに、指定を間違えるとTOMCATマネージャ画面でログインに失敗したとき
# manager-guiとか、manager-scriptといったロールを定義せよと警告が出る。ただこれはtomcat7の
# 話のようだ。tomcat6では、adminとmanagerのロールのみでいい。






> vi Catalina/localhost/ROOT.xml など
# 以下を含んでいること
// Attributeは空でいい。docBaseが記述されているとWARNINGが出る。

> service tomcat6 restart
> tail -200 /var/log/tomcat6/catalina.out // ログをチェック

といった設定で、うまくいけば、Firefoxから http://localhost:8081/ で自前サービスが、また http://localhost:8081/homepage/ でホームページが開くはずだ。さらに http://localhost:8081/manager/htmlTOMCATマネージャが利用できるはずであった。しかし、TOMCATマネージャではtomcat-users.xmlで設定したアカウントでログインできない事態となっていた。その説明の前に、8080ポートが何と衝突しているのか調べてみたので補足しておこう。

# 8080ポートが何に利用されているかの特定
> yum install lsof // インストールしないとこのコマンドは使えない
> lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
jsvc 4568 tomcat 34u IPv4 12817 0t0 TCP *:webcache (LISTEN)
> lsof -i:8081
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 6835 tomcat 33u IPv4 23855 0t0 TCP *:tproxy (LISTEN)
jsvcが8080を利用しているというのだ。そもそもjsvcが必要なのか、不要なのかはっきりしない。「CentOS6.0+Java開発環境パック」に最初から入っていたのだろうと思うが、しらぬ間に何かをインストールした際に依存関係からインストールされてしまったものなのかもしれない。サービスの一覧にもjsvcが現れて、OSの起動時にstartされているようだ。不勉強でjsvcが分かっていない。誰かレクチャしてほしい。自宅サーバFedoraではjsvcは入っていないし、サービスにも登録されていない。とりあえず、回避策として、tomcat6はポート番号を8081に変更することにした。ちなみに、8080や8081はファイアウォールでポートを開けておく必要はない。localhostで利用できればいい。

で、話を戻して、TOMCATマネージャにログインできない問題だ。認証に失敗すると、また紛らわしいのだが「maneger-guiとか、maneger-scriptといったロールを定義せよ」と読める警告が出るのだ。しかし、そのように記述してもダメ。manager-guiというロールはtomcat7からの概念のようだった。tomcat6では、managerのままでいいはずだ。

実際には何が問題であったかというと、/usr/share/tomcat6/webapps/managerの配下に .htaccess というファイルがあったためだった。自宅サーバーからコピーしてきたときに含まれていた。このファイルを削除すれば、ログイン可能になった。また、コピーしてきたフォルダやファイルのアクセス権限がおかしいままのものがあった。chown tomcat、chmod 644 などが適切かどうかチェックすると、結構問題の箇所があった。たとえば、/usr/share/tomcat6/Catalina/localhostに書き込みができなくなっていたりした。

外部からフォルダやファイルをコピーして持ち込んだとき、rootで勝手にファイルを作成したときには、chown、chmodでアクセス権限を調整しておくことがLinuxでは非常に重要だと再認識させられた。結構、油断してしまうんですよね。前回も、Thunderbirdでコピーしてきたメールボックスが参照できないということもあったばかりだ。

残りの問題は次回に繰越そう

それでも、TOMCAT6の設定は比較的すんなりと終わり、http://localhost:8081/ で自前サービスが利用できるようになった。同様に http://localhost:8081/homepage/ でホームページも参照できるようになった。実際には、もう1つ問題が残っていた。jsessionというIDが勝手にURLのリクエストパラメータに追加されてしまう事象が起きるのだ。TOMCAT7では解消するらしい。当面は、回避策で繰り越すこととした。

今日はここまで。実は、最大の難関だったのは、HTTPDTOMCATの連携の部分だ。契約したVPSは1つのサーバー(1つのIPアドレス)であり、1台で2つのドメインを扱うためにVirtualHostの設定が必要であった。しかも自宅サーバと同じドメイン名であるため、問題が複雑化してしまった。一般には大したこともない作業なのかもしれないが、私にとってははじめての作業であり、試行錯誤の繰り返しで苦労させれたのである。

CentOS 6.0のVPSサーバ構築/(3) メールサーバの設定

GMOクラウド VPSCentOS 6.0」にサーバー環境を構築している。前回、DNS(named)の設定ができたので、Postfix(SMTPサーバ)をインストールし、Dovecot(POPサーバ+IMAPサーバ)、そしてメールクライアントThunderbirdをインストールすることにした。また、ここでもいくつか苦労させられた。メモしておこう。過去の記事も参照のこと。
  (1) VNCサーバの設定
  (2) DNSサーバの設定とDropboxの設定
  (3) メールサーバの設定
  (4) WEBサーバの設定

PostFix(SMTPサーバ)を設定した

PostfixDovecotはデフォルトでインストールされていた。Thunderbirdのみをyumでインストールする。まずPostfix(SMTPサーバ)だ。最初は、プレーンテキストのパスワード認証として、sasl-authも設定しないことにした。


> yum list | grep postfix
postfix.x86_64 2:2.6.6-2.2.el6_1 @base
postfix-perl-scripts.x86_64 2:2.6.6-2.2.el6_1 base

> vi /etc/postfix/main.cf
myhostname = mail.hogehoge.co.jp
mydomain = hogehoge.co.jp
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4 // デフォルトではall
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
local_recipient_maps = unix:passwd.byname $alias_maps
mynetworks = 127.0.0.0/8, xxx.107.111.222/32 // よく分からないところだが、自身のIPも入れておいた
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/ // 最近はこのパターンが流行っているらしい。dovecot側もこれに合わせる
mail_spool_directory = /var/spool/mail
#
message_size_limit = 10485760
disable_vrfy_command = yes

# 特定サービス用にエリアスを作成しておきたかったので以下を追加。
virtual_alias_domains = service.jp
virtual_alias_maps = hash:/etc/postfix/virtual

> vi /etc/postfix/master.cf // デフォルトのまま
> vi /etc/postfix/virtual
#VIRTUAL(5)
staff@service.jp staff // 特定サービス用のメールアドレスを定義
   // staffは、/etc/passwdあるいは/etc/aliasesに登録済みであること
> postmap virtual
> service postfix restart

inet_protocols = ipv4にすること。mynetworksの指定は自信がないが、なんとかこの指定でいけたのでよしとしよう。自分自身がDNSサーバなので自身のIP(※xxx.107.111.222/32のようにIPの後ろに"/32"をつけておくと自身に限定される)も入れておいた。home_mailbox = Maildirは、メールの受け渡し場所なので、dovecot側もこれに合わせて指定する必要がある。苦戦した割には、書き出すと大した情報ではない。

Dovecot(POP3/IMAPサーバ)を設定した

Dovecotは、メール受信を行うPOPとIMAPのサーバだ。とりあえず、POP3でメールを受信できればいいのだが、IMAPとセットで設定してみた。confファイルは、以前はdovecot.confの1ファイルに集約されていたが、最近では20以上のファイルに分割されている。


> yum list | grep dovecot
dovecot.x86_64 1:2.0.9-2.el6_1.1 @base
dovecot-devel.x86_64 1:2.0.9-2.el6_1.1 base
dovecot-mysql.x86_64 1:2.0.9-2.el6_1.1 base
dovecot-pgsql.x86_64 1:2.0.9-2.el6_1.1 base
dovecot-pigeonhole.x86_64 1:2.0.9-2.el6_1.1 base

> vi /etc/dovecot/dovecot.conf
protocols = imap pop3
 # listen = *, ::
listen = * // IPv6(::)は除外する
!include conf.d/*.conf // conf.d配下の設定をincludeする
> cd /etc/dovecot/conf.d
> ls
10-auth.conf 20-lmtp.conf auth-master.conf.ext
10-director.conf 20-pop3.conf auth-passwdfile.conf.ext
10-logging.conf 90-acl.conf auth-sql.conf.ext
10-mail.conf 90-plugin.conf auth-static.conf.ext
10-master.conf 90-quota.conf auth-system.conf.ext
10-ssl.conf auth-checkpassword.conf.ext auth-vpopmail.conf.ext
15-lda.conf auth-deny.conf.ext
20-imap.conf auth-ldap.conf.ext

# いっぱいあるが、必要なものは以下で設定するもの。
> vi /etc/dovecot/conf.d/10-master.conf
service imap-login { inet_listener imap { port = 143 } inet_listener imaps { } } // ここは必須
service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { } } // ここは必須
service imap { }
service pop3 { }
service auth {
unix_listener auth-userdb { }
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
service auth-worker { }
service dict { unix_listener dict { } }

> vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir // 最近はこのパターンが流行っているらしい。postfix側もこれに合わせる
valid_chroot_dirs = /home

> vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no // デフォルトではyes
auth_mechanisms = digest-md5 plain login // digest-md5を選択してみた
#!include auth-system.conf.ext   // うまくいかなかったためコメントアウト   
!include auth-passwdfile.conf.ext // こちらを採用

> vi /etc/dovecot/conf.d/20-imap.conf // デフォルトのまま
> vi /etc/dovecot/conf.d/20-pop3.conf // デフォルトのまま
> vi /etc/dovecot/conf.d/auth-system.conf.ext
# このconfファイルは結局は読み込まないようにしたが、メモとして残しておこう。
# ちなみに、args = /etc/passwdを指定するとエラーになるのだ。
passdb { driver = passwd args = }
userdb { driver = passwd args = }

> vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext
# こちらを採用した。passwdファイルの作成は後述
passdb { driver = passwd-file args = /etc/dovecot/passwd }
userdb { driver = passwd-file args = /etc/dovecot/passwd }

auth-system.conf.extは、/etc/passwdを使って認証するためのものだと思い、いろいろ試したが、結局は挫折した。どう設定してみても認証に失敗するのだ。Thunderbirdのアカウント登録でアカウントを見つけてくれはするが、パスワード認証に失敗してしまう。これには結構苦戦させられた。自宅サーバFedoraではうまくいっていたが、レンタルサーバCentOSではうまくいかない。あきらめて、auth-passwdfile.conf.extの方にした。これは、Dovecot専用にパスワードを個別に登録しておくものだ。
auth-passwdfile.conf.extでDovecot専用のパスワードファイルを読み込ませるためには、まず、暗号化されたパスワードをユーザーごとに算出し、それらを/etc/dovecot/passwdファイルに記述しておく。私は、DIGEST-MD5を使うことにした。

> vipw
user1:x:501:501::/home/user1:/bin/bash
user2:x:502:502::/home/user2:/bin/bash
# vipwから該当するユーザーの情報をコピーしてくる。
> vi /etc/dovecot/passwd
user1:x:501:501::/home/user1:/bin/bash
user2:x:502:502::/home/user2:/bin/bash

# パスワードを暗号化する
> doveadm pw -s DIGEST-MD5 -u user1 -pxxx
{DIGEST-MD5}xxxxxxxxxx08107edxxxxxxxxxxxxx
> doveadm pw -s DIGEST-MD5 -u user2 -pxxxxxx
{DIGEST-MD5}xxxxxxxxxxxxxxxx3daae6xxxxxxxx

# 暗号化したパスワードを埋め込む。2番目のカラム(:x:の部分)に算出された文字列をコピペする。
> vi /etc/dovecot/passwd
user1:{DIGEST-MD5}xxxxxxxxxx08107edxxxxxxxxxxxxx:501:501::/home/user1:/bin/bash
user2:{DIGEST-MD5}xxxxxxxxxxxxxxxx3daae6xxxxxxxx:502:502::/home/user2:/bin/bash
> service dovecot restart

auth-passwdfile.conf.extを採用するとすんなりといけた。ただ、ユーザーごとに独自に/etc/dovecot/passwdに追加しなければならず、またログインのパスワードとは別にしなければならないので、新規ユーザ登録時には面倒だ。パスワードは、ログイン用の/etc/passwdとメール用の/etc/dovecot/passwdで使い分けられるが、きっと同じものに設定するだろうに。

Thunderbirdのメールフォルダを移行した

Thunderbirdでは、メールフォルダは、該当ファイルを単純にコピーするだけで他の環境に移行できるそうだ。Linux版での作業のことだが、Windowsでも同様かもしれない。移行すべきフォルダは、私の場合、以下の場所にあった。


/home//.thunderbird//Mail/Local\ Folders
この中にあるフォルダに対応するペアで存在するファイル(例えば、Trash,Trash.msf。 実際にはゴミ箱を移行する必要はないので、任意の必要なフォルダのみ)を新しい環境の同じ場所にコピーするだけでいい。Local\ Folders以外を利用している時は、"mail."のようなフォルダ(例えば、mail.hogehoge.co-1.jpなど)から移行すべきものを選べばいい。

> yum list | grep thunderbird
thunderbird.x86_64 10.0.7-1.el6.centos @updates

> cd /home//.thunderbird//Mail
> cp Local\ Folders/* /Local\ Folders

また、各アカウントのメールボックス(mail.hogehoge.co-1.jpなど)の下に以下の6つの空のファイルを作成しておいた方がよい。移行するファイルに含まれていればそれを使う。なければ、空で作成しておくということ。

> cd /home//.thunderbird//Mail/mail.
> ls
Drafts Sent Trash
Drafts.msf Sent.msf Trash.msf
> chmod 644 *
> chown *
これらのファイルがないと、ゴミ箱、下書きなどという日本語名のファイルができてしまう。これら6つの英字のファイル名であれば、自動で下書き、送信済みメール、ゴミ箱というフォルダ名にマッピングしてくれるようだ。また、他からコピーしてきたファイル、新規に空で作成したファイルは、chown 、chmod 644でアクセス可能にしておく。このアクセス権限が設定されていないとThunderbirdを開いても認識してくれない。何のエラーも提示してくれないようなので、確実に設定しておきたい。

CentOS 6.0のVPSサーバ構築/(2) DNSサーバの設定とDropboxの設定

GMOクラウド VPSCentOS 6.0」にサーバー環境を構築している。前回、デスクトップをインストールし、VNCサーバをインストールして、Windows側からリモートで接続できるようになった。だが、名前解決がうまくいかず、FireFoxyumさえも満足に動作していなかった。過去の記事も参照のこと。
  (1) VNCサーバの設定
  (2) DNSサーバの設定とDropboxの設定
  (3) メールサーバの設定
  (4) WEBサーバの設定

IMEの切り替えができるようになった

IMEの設定がおかしく、日本語が表示はできても入力ができない状況だった。これは、以下の手順で解決した。
yum groupinstall "入力メソッド" ですべてをインストールする。
・システム-->設定-->入力メソッド-->IBusを使用する-->入力メソッドの個人設定-->インプットメソッドで「日本語Anthy」を選択しておく。
・メニューバーにあるIMEの切替アイコン(IBusインプットメソッドフレームワークのアイコン)から「日本語Anthy」を選択したり、オフしたりできる。
Anthyもはじめて使うが、日本語/英語の入力の切り替えはCTRL+J、CTRL+,、CTRL+>、CTRL+<などで行う。ちょっと馴染めないキーバインドではあるが、なんとか使える。ただ、アイコンに"A"とか"あ"とか表示してくれないので、現在どのモードかが打ち込まないと分からない。明示的にAnthyをON/OFFした方がいいのかもしれない。

ネットワークを設定した

外部に対して、IPアドレスを指定すれば接続できるが、ドメイン名で指定すると名前解決できない状況だった。pingでも、ブラウザ(FireFox)でのURL指定でも、yumミラーサイト指定でも状況は同じだ。wgetコマンドでのファイルのダウンロードもできない。FireFoxでは「サーバが見つかりません」となるだけだ。サーバーから外部に対して名前解決ができていないのだ。


> ping www.google.com // ×つながらない
> ping 210.166.240.5 // ○IPアドレスを指定すればつながる
今後のためにちょっと設定情報をメモしておく。GMOクラウドVPSの環境は、以下の情報としておく。

IPADDR =xxx.107.111.222
GATEWAY=xxx.107.111.254
DNS1 =xxx.108.100.100
DNS2 =xxx.108.200.200
DOMAIN=hogehoge.co.jp
HOSTNAME=hogehoge // ドメイン名がホスト名になっている。
名前解決できていない原因の1つは、CentOS 6.0では「/etc/resolv.conf」の記述した内容があるタイミングで上書きされてしまうということが分かった。デフォルトで以下のようになっていた。

# Generated by NetworkManager
search foo.com
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
よく読むと、NetworkManagerが上書きするので、/etc/sysconfig/network-scriptsに登録しておけということのようだ。「/etc/sysconfig/network-scripts/ifcfg-eth0」(※私の環境ではeth0だ。ifconfigで確認すること)を以下のように編集した。このファイルは、GMOでサーバー設定時に編集されたもののようだ。自動生成されたものかもしれない。PEERDNS=noにするだけでよいとのネット情報もあったが、それだけではダメだ。DNS1,DNS2を記述してやる必要がある。

DEVICE=eth0
BOOTPROTO=static
BROADCAST=xxx.107.111.255
IPADDR=xxx.107.111.222
NETMASK=255.255.255.0
NETWORK=xxx.107.111.0
ONBOOT=yes

# これより上は、GMOでのデフォルト設定。これより下を追記する。
GATEWAY=xxx.107.111.254 // この行は不要かも。/etc/sysconfig/networkで記述済みのため
IPV6INIT=no
PEERDNS=no
DNS1=xxx.108.100.100 // GMO提供のマスタネームサーバ
DNS2=xxx.108.200.200 // GMO提供のスレーブネームサーバ
DNS3=127.0.0.1 // 自身も3番目に入れておく
DOMAIN=hogehoge.co.jp

DNS1,DNS2,DNS3までが有効なようだ。DNS4,DNS5,...と書いても有効かどうかかは分からない。エラーにはならない。ちなみに以前はプライマリネームサーバ、セカンダリネームサーバと呼んでいたが、今はマスタネームサーバ、スレーブネームサーバと呼ぶようになったそうだ。このように書いて、networkを再起動すると、「/etc/resolv.conf」が以下のように書き換わる。「No nameservers found」のコメントもなくなっている。

# Generated by NetworkManager
search hogehoge.co.jp
nameserver xxx.108.100.100
nameserver xxx.108.200.200
nameserver 127.0.0.1
ネットワーク設定の大まかな手順を挙げておく。

> vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server.hogehoge.co.jp // ホスト名を変更
GATEWAY=xxx.107.111.254
> vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 前述の内容で記述
> vi /etc/host.conf
multi on
order hosts,bind
> vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6

> service network restart
> vi /etc/resolv.conf
  # 前述の内容を確認。見るだけで編集は不要。ifcfg-eth0の内容で書き換わる。
> hostname
server.hogehoge.co.jp // ホスト名がserver.hogehogeに切り替わっていることを確認

ホスト名が変更され、名前解決では、hostsファイルとbind、つまりDNSサーバへ問い合わせるようにしておく。/etc/resolv.confもデフォルトのものが、ifcfg-eth0の内容で書き換わっていることを確認しておく。

DNSサーバを設定した

では、次にDNSサーバの設定だ。named設定の大まかな手順をまず簡単に挙げておく。named/chrootの作成部分の細かい手順は割愛しているので、市販本やネット情報を参照のこと。


> yum install bind bind-chroot bind-utils
# /var/named、/var/named/chroot/etc、/var/named/chroot/var/namedに必要なものをコピー
# 細かい手順は割愛

> vi /etc/sysconfig/named
 ROOTDIR=/var/named/chroot
> vi /var/named/chroot/etc/named.conf
> vi /var/named/chroot/etc/named.hogehoge.co.jp.zones
> vi /var/named/chroot/var/named/hogehoge.co.jp.db // 正引き用
> vi /var/named/chroot/var/named/111.107.xxx.in-addr.arpa.db // 逆引き用
# rndc.keyファイルを作成しておく。
> rndc-confgen -a -r /dev/urandom -t /var/named/chroot
# グループをnamedに変更しておかないと、namedの起動で失敗する。
  > chgrp named /var/named/chroot/etc/named.*
  > chgrp -R named /var/named/chroot/var/named

# 以下は、named.confとzoneファイルのシンタックスチェック
> named-checkconf -t /var/named/chroot
> named-checkzone -t /var/named/chroot hogehoge.co.jp /var/named/hogehoge.co.jp.db
> named-checkzone -t /var/named/chroot hogehoge.co.jp /var/named/111.107.xxx.in-addr.arpa.db

# 以下は、サービスを起動して、チェック
> service named restart
> ping www.hogehoge.co.jp
> dig www.hogehoge.co.jp
> dig -x xxx.107.111.222
> ping www.google.com
> dig www.google.com
> dig -x 210.166.240.5
> nslookup www.google.com

まず、「named.conf」はデフォルトのものにincludeを1行追加するのみ。以下に提示の手順や記述が正しいかどうかは確信ないが、とりあえず動作するという情報だ。

# 最後に1行を追加するのみ
include "/etc/named.hogehoge.co.jp.zones";
その「named.hogehoge.co.jp.zones」は、以下のように記述した。

zone "hogehoge.co.jp" {
type master;
file "hogehoge.co.jp.db"
};
zone "111.107.xxx.in-addr.arpa" {
type master;
file "111.107.xxx.in-addr.arpa.db"
};
正引き用「hogehoge.co.jp.db」は、以下のように記述した。

$TTL 86400
@ IN SOA hogehoge.co.jp. root.hogehoge.co.jp. ( ... );
IN NS server.hogehoge.co.jp.
IN MX 10 mail.hogehoge.co.jp.
server IN A xxx.107.111.222
www IN CNAME server
mail IN CNAME server
逆引き用「111.107.xxx.in-addr.arpa.db」は、以下のように記述した。

$TTL 86400
@ IN SOA hogehoge.co.jp. root.hogehoge.co.jp. ( ... );
IN NS server.hogehoge.co.jp.
IN PTR hogehoge.co.jp.
IN A 255.255.255.0
222 IN PTR server.hogehoge.co.jp.
以上の設定で、ping www.google.com が通るようになった。ただ、これでもまだFireFoxからURLのドメイン名を識別してくれなかった。

FireFoxの設定が必要だった

DNS プリフェッチ機能の問題があるらしい。「Firefox は新しい Web サイトの読み込みを早くするため、DNS プリフェッチ機能を利用しますが、これが一部のシステム設定によって、ページの読み込みエラーが起こる原因になることがあります。DNS プリフェッチを無効化してください。」とあった。その手順に沿って設定した。
・ロケーションバーに "about:config"と入力してenterする。
・右クリック-->新規作成-->真偽値で、以下の2つの属性を追加する。
・network.dns.disablePrefetch=true
・network.dns.disableIPv6=true

つまり、IPv6を無効化する必要があった。/etc/sysconfig/networkに「NETWORKING_IPV6=no」が追記されていること、/etc/sysconfig/network-scripts/ifcfg-eth0に「IPV6INIT=no」が追記されていることも必要だ。そしてさらに、ネット情報から、「/etc/modprobe.d/disable-ipv6.conf」を作成して、以下のように記述する必要があるそうだ。


options ipv6 disable=1

以上だ。これでやっと、pingだけでなく、ブラウザ(FireFox)でのURL指定も、yumミラーサイト指定も、wgetrpmコマンドでのURL指定も認識してくれるようになった。yumの設定を戻して、updateしておこう。


> vi /etc/yum.repos.d/CentOS-Base.repo
# ミラーサイトを有効にし、暫定でIPアドレスを埋め込んだ部分をもとにもどしておく。
> yum update

DropBoxを設定した

yumrpmが利用可能になったので、DropBoxのインストールを行った。


> rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# 事前にhttp://apt.sw.be/redhatから辿って、ダウンロードすべきものを特定しておくこと。
# CentOS 6.0 x86_64なら以下でいい。
> rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
> yum install dropbox --enablerepo=rpmforge
> vi /etc/sysconfig/dropbox
DROPBOXUSER=user // ユーザーを指定。デフォルトではコメントアウトされている
> yum update dropbox
> dropbox start -i // 初回はウィザードでの設定。次回からは起動になる。
これでやっと、作業が進みそうだ。

[2012/10/10追記]
VPSサーバでDropBoxを使うと「近所迷惑」になるということが判明した。指摘されてわかった。たしかにネット情報に結構ある。デスクトップを利用していれば、DropBoxの設定画面から「LAN接続を同期」のオプションがデフォルトでONとなっているので、これをOFFしておく必要がある。これがONだとLANSyncという機能が働き、起動直後に10秒間隔で、安定すると30秒間隔でブロードキャストに向かって17500ポートからパケットを送出し続けるらしい。ON/OFFの状態で、以下を確認すると状況がよく分かる。


> tcpdump -i any -s 1600 port 17500

CentOS 6.0のVPSサーバ構築/(1) VNCサーバの設定

自宅のサーバもバックアップが不安だし、そろそろHDDも壊れそうな予感もある。先日、前会社で同僚の古川さんに会う機会があり、VPSサービスを薦められた。そこで、VPSサービスをちょっと調べ、GMO社のクラウドVPSというものを申し込んだのだ。「さくらVPS」と「GMO VPS」のどちらにしようかと悩んだが、古川さんも使っているという実績のあるGMOを選択した。ネット上ではさくらVPSの情報しかないが、似たようなものだろう。
  (1) VNCサーバの設定
  (2) DNSサーバの設定とDropboxの設定
  (3) メールサーバの設定
  (4) WEBサーバの設定

GMOクラウドVPSを申し込んだ

申し込んだプランは「GMOクラウド VPS/スモールプラン/CentOS 6.0 Java開発パック x64」というものだ。とりあえず、6ヶ月間とした。ドメインは自前のものがあるので、料金は安くて済む。初期費用3,980円、スモールプラン2,280円*6ヶ月だが、締め切りを過ぎたキャンペーンコードを見つけて、ダメもとでペーストして申し込んだら、なんと有効だったみたいで初期費用が免除された。13,680円で6ヶ月間利用できる。うまく利用でき、問題なさそうなら、年単位で延長の予定だ。1ヶ月のみの申し込みも可能だったが、そんなにすんなり行くとも思えず、6ヶ月にしておいた。(※1年間契約だと月々の額が1,980円だった。)
スモールプランは、ディスク200GB、メモリ4GB、4コアだそうだ。LinuxのOSやJavaなどのオプションが無料でプリインストールされ、IPアドレスとrootのパスワードが通知される。VPSポータルのサイトからOSの起動/停止ができ、コンソールが利用できるということだった。VPSポータルのアカウントは申し込みの直後に自動返信されている。
申し込みは深夜だったが、朝には入金の案内メールが届いていた。一応、人が申し込み内容を審査しているようではある。9:00にネットから銀行振込みした。念のため「振込みしました」旨のメールをサポートセンタに出しておいた。サーバが利用可能になるまでに何日、何時間かかるのかの情報の記載がなく、不安だったが、VPSポータルのマイページには申し込みから手続き完了までの流れがリアルタイムで示されていた。進捗が20段階くらいで見える。ほどなく「入金を確認した」旨の自動返信メールが届いてから、手続き完了つまりサーバー設定完了までは2時間ほどであった。その間、CentOSの学習をしながら待ち続けた。11:30には、サーバーのIPアドレス、rootのパスワード、DNSサーバーの情報が通知されてきた。
OSの選択とオプションの選択ではちょっと悩んだ。自宅サーバFedoraなのだが、Fedoraという選択肢はなかった。仕方ないのでCentOSの最新6.0を選択した訳だ。CentOSは使ったこともない。Fedoraには近いだろうという程度の知識だ。

CentOS 6.0のサーバに接続できた

VPSポータルのページから、サーバーのステータスを参照したり、起動が可能になった。まずは、サーバーの起動、コンソールからの接続だ。コンソールからリモートでログインできたとき、やっと安心した。ネット情報をたよりに、rootのパスワード変更などを行う。


> passwd // rootパスワード変更
> /sbin/ifconfig // IPアドレスなどの確認
> uname -a
> route -n
> df -h
> vi /etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no // rootで直接ログインできないように。suは有効。
> adduser // 作業用アカウントを作成。次回からはこれでログイン。
> passwd
> id root
> id
> vi /etc/aliases
あれ、viでEscキーが効かない。VPSポータルのコンソールではviが利用できないようだ。仕方ないのでteratermをダウンロードしてきて、teratermから利用することにした。指定のIPアドレスとrootのアカウントで接続できる。でも端末コンソール1つだけでは不便でしかたない。何かないかとネットで探し、VNCサーバを入れることにした。実は、VMWareも調べてみたが、コンパイルも必要そうで私の実力ではハードルが高そうだった。

VNCサーバをインストールしてみた

VNCサーバを導入すればWindowsからリモートでCentOSのデスクトップが利用できる。まず試しに、自宅サーバーにVNCサーバー(tigerVNC-server)を入れ、Windows側にRealVNCを入れてみた。かなり苦戦させられた。


> yum install tigervnc-server // yumの設定は後述
> vncserver
xxx.xxx.xxx.xxx:1 (user) // この番号とユーザーがvncserversに登録されていること。
// :1は、ポート番号5901に対応
> vncserver -kill :2 // 失敗するといくつもインクリメントされるようだ。
> vncserver -kill :1 // killしてから上記のvncserverを実行すること
> vi /etc/sysconfig/vncservers
VNCSERVERS="1:user" // ここに登録されている必要がある
VNCSERVERARGS=[1]="-geometry 1024x768"
> chkconfig --add vncserver
> chkconfig vncserver on
> chkconfig --list
> vncpasswd
自宅のルータでポート番号5900〜5905までを通過できるようにしておく必要がある。空けておいた。上記のように「:1」番であれば、ポートは5900をプラスした5901になるそうだ。Windows側のVNCクライアントでは、「xxx.xxx.xxx.xxx:5901」として接続する。「xxx.xxx.xxx.xxx:1」ではない。設定したアカウントとパスワードを指定する。RealVNCでは、デフォルトではreadonlyになっているので、拡張設定でInput=enabledにすること。またConnection=use MS IE Proxy setting にしないと接続できなかった。自宅サーバでうまくいったので、VPSサーバでも同じように設定する。VPSサーバでも難なく、VNCで画面が開いた。

デスクトップがインストールされていない

しかし、まっくろ画面であり、1つのアイコンもメニューバーもない。ネットでいろいろ調べて、CentOSの標準インストールは「Minimal」というパッケージで、GUIを含んでいない、つまりデスクトップはインストールされていないことを知った。よく見れば、日本語も入っていない。「CentOS 6.0 Java開発パック」ということでJavaEclipseまでプリインストールしているくせにGUIに関するものは何も入っていないのだ。幸いにもFedora自宅サーバーがあるので、それと比較しながら、似たようなものを徐々にインストールすることになる。自宅サーバならCD-Romからインストールし直せばいいだけだが、リモートのVPSだと、それができないので苦労する。昨日はここまで。
またDNSサーバーを設定していないためか原因が不明だが、名前が解決できずに、yumでinstallできなくなっていた。以下のように理研ミラーサイト(ftp.riken.jp)のIPアドレスを直接埋め込んで、暫定でyumが機能するようにした。まずはデスクトップと日本語関係のものをインストールしてみた。今日の作業だ。


> vi /etc/yum.repos.d/CentOS-Base.repo //
baseurl=ftp://134.160.38.1/linux/centos/$releasever/os/$basearch/
# 参照先に直接IPアドレスを埋め込んだ。
    # yumが正常なら、この対応は不要。
> yum grouplist
> yum groupinstall "デスクトップ"
> yum groupinstall "グラフィカル管理ツール"
> yum groupinstall "入力メソッド"
> yum groupinstall "Japanese Support"
> yum update
> vi /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"   # en_US --> ja_JPに変更
SYSFONT="latarcyrheb-sun16"
> shutdown -r now
リブートして、再度teratermで接続し、vncserverを起動する。vncserverもサービスに登録しておかないと、毎回起動が必要になる。そしてRealVNCのクライアントから接続を試みる。なんとか、見慣れたGNOMEのデスクトップがリモートで操作できるようになった。「Minimal」では足らないものを徐々にインストールしている。GUIなしの端末コンソールだけで、皆、よく作業しているな。実態はどうなんだろう。GUIなしでEclipseは使えるのか。

今後の予定

まだいろいろとおかしいところがあるが、まずはDNSサーバーの設定を目指そう。IMEの設定もおかしいのか、日本語を表示はできても入力ができないままだ。まだFireFoxも使えていない。これからも楽しめそうだ。13,680円でいいおもちゃを買った感じだ。自宅サーバは3年前に5万円で買ったものだが、VPSの方が安価で安心かもしれない。パフォーマンス的には問題ないし、バックアップの心配もない。Dropboxでファイルを受け渡しすれば、WinSCPも使わなくて済みそうだ。あと何日かかるかわからないが、自宅サーバ上のサービスをVPSサーバに完全に移行させたいな。

ITILのバージョン表記はなくなった。

JSTQB対応で忙しく、ITILのコースはまだリリースできていないままだった。新しいV3のみに対応する予定で進めてきたが、だらだろしていたので、そろそろV4が出てくるのかと思っていた。ところがここにきて、ITILでは今後バージョン表記はしないという方針になったようだ。V2、V3の区別はない。市販本もまだ追従できていないだろうから、今後のITIL Foundation試験では、当面、シラバスの理解、つまり出題範囲の理解が重要になるだろう。

参照: ITILのバージョン表記に関わる変更について

まだリリースもできていないコースだったが、コース名の変更をしておこう。

のぞみに乗り遅れた。

8/12から広島に帰省したのだが、ひさびさにビビった。品川駅構内のスタバで、見送りの妻と喋っていて、指定ののぞみに乗り遅れたのだ。切符は、せっかく1ヶ月と1週間前からえきねっとで予約していたのに無駄となってしまった。今回、子供2人を私ひとりで連れて帰る(妻は仕事で休めず)ことになっていたので、時間に余裕をもって行動していたのだか、それが裏目に出た。家族で唯一腕時計を持っている下の子が「10:47だよ」と教えてくれたときに、慌ててスタバ(待合でもある)の壁掛けを覗き込んだが、もうのぞみはないように見えた。ホームに駆け下りた時には、既にのぞみはなかった。8/12のお盆の帰省ピーク時だ。これから自由席に変更して、幼い子供2人を私だけで連れて帰省するのは、到底は無理だ。子供は新幹線でも乗り物酔いで吐くことがある。今回もたった今、センパアも飲ませたばかりだった。こどもは新幹線が苦手で、乗った瞬間から匂いだけで気持ち悪くなるのだ。今回の帰省は、もう半ば諦めた。

ホームで駅員に聞けば、東京駅なら1時間に3本は博多行きがあるとのことで、東京までの1駅を上りに乗り、40分後の始発ののぞみに一縷ののぞみをかけた。自由席1号車の列に並んだ。結果は、なんとか最後のABCの席がぎりぎり確保でき、無事に帰省はできたのだ。しかし、冷や汗ものだった。実際には、30分間東京駅18番ホームの端の1号車の列には、夏の日差しが差し込み、並んでいるときは汗だくだったのだ。京都あたりからは、通路も身動きできないほどに混んできた。通路やデッキに立ったまま、幼い子供2人と4時間を耐えることはできなかっただろう。

今日、広島から川崎に戻ってきて、妻は自分の失敗を認め、私の失敗でもあるのだが、なぜか子供に3D DSを買ってきてお詫びしていた。あと、腕時計は買おうということになった。