Home > アーカイブ > 2013-03

2013-03

PHP5.3 のサポート終了(EOL)は、PHP5.5をリリースして1年後

  • 2013-03-29 (金)
  • PHP
この記事の所要時間: 058

最近、話題のPHP5.3のサポート終了(End Of Life=EOL)について。

当初は2013/03末でEOL を迎えるという話だったのですが、これを延長する案が php-internals で流れていました。

PHP: rfc:php53eol [PHP Wiki]で投票が行われるくらいまでは追いかけていたのですが、結局どうなったのかなと気になってたところで @kenji_s さんの tweet から辿って以下のリンクを見つけました。

php.internals: [RFC][result] Define PHP 5.3 end of life

投票の結果、以下のことが決まったようです。

  • PHP5.3のEOLはPHP5.5.0をリリースして1年後
  • EOLの正確な日付はPHP5.5.0リリース時にアナウンス

当初よりは少し余裕は出来ましたが、PHP5.5はすでにbeta2まで来ているので、5.4への移行を進めておいた方が良いですね。稼働中のものは別としても、新規開発のものは5.4対応で開発しましょう。

  • コメント (Close): 0
  • トラックバック (Close): 0

殺伐とした黒い画面にカラフルなキャラがお出迎え

  • 2013-03-25 (月)
  • unix
この記事の所要時間: 27

一部では「黒い画面」と恐れられているターミナルですが、こんなキャラがお出迎えしてくれると気分も変わるのでは。

terminal_login_message

ターミナルを開いたり、SSH でログインした時にキャラを表示させる方法です。

/etc/motd にメッセージを書くとログインした時に記述したメッセージを表示することができます。レンタルサーバやクラウドサービスのサーバにログインすると表示されるメッセージも /etc/motd に記載されています。

例えば、さくらの VPS であれば、下記のように記載されています。

% cat /etc/motd

SAKURA Internet [Virtual Private Server SERVICE]

AmazonLinux では以下のようになっています。

$ cat /etc/motd

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2012.09-release-notes/

ここにキャラを表示するエスケープシーケンスを記述すると、ログインした時に表示することができます。

valllog さんのエントリに記載のあったキャラクターのデータをお借りして、データをアップしました。

このデータをダウンロードして、/etc/motd に書き込めば ok です。

$ curl -O https://gist.github.com/shin1x1/5230392/raw/82993c6c1d982447e7e99def4f58fc14fc234665/batz.txt
$ sudo -s
# cat batz.txt >> /etc/motd

再ログインすると勇敢な戦士が登場します。

terminal_login_message_batz

削除する時は /etc/motd を編集して、該当部分を削除するだけです。

$ sudo vim /etc/motd

素敵な黒い画面ライフを!

  • コメント (Close): 0
  • トラックバック (Close): 0

FireMobileSimulator でタブ毎に端末選択を有効にする

この記事の所要時間: 029

FireMobileSimulator でタブ毎に端末選択を有効にする方法です。

firemobilesimulator

単にチェック入れるだけです。Facebook で教えて頂いたのですが、こんな機能あったんですね。。。

調べてみると2011年には対応していたようです。

これまで全然気づかず、携帯サイトのテストは Firefox、スマートフォンのテストは Chrome 、と別ブラウザでやったり、別タブで開いていた Gmail や Facebook がいつの間にかおかしくなったりしてました。

こりゃ便利。

  • コメント (Close): 0
  • トラックバック (Close): 0

Vagrant で自分の PC に「作って、壊して、元に戻せる」サーバを作る

この記事の所要時間: 157

Vagrant 便利ですね。Web システム構築ではサーバ構築、設定を何度となく繰り返すので、こういった「作って、壊して、元に戻せる」環境が自分の PC にあるというのはとても重宝します。

vagrant

ここでは Vagrant1.0 を使って、Mac OS X 上に CentOS サーバを構築します。また触ってみて便利だった機能もいくつかご紹介します。

Vagrant とは

きちんとして説明は本家サイトを見るのが良いのですが、端的にいうと PC にインストールできる仮想PCを便利に使うツールです。
1.0 では仮想PCとして VirtualBox に対応しています。(1.1 からは VMWare や EC2 などにも対応しています。)

1. VirtualBox のインストール

まず VirtualBox をインストールします。VirtualBox は下記サイトから無料でダウンロードすることができます。

https://www.virtualbox.org/wiki/Downloads

2. Vagrant1.0 のインストール

次に Vagrant をインストールします。最新版は1.1なのですが、まだリリースされたばかりで、後述する便利なプラグインなどが対応していないので、ここでは1.0をインストールします。

Vagrant1.0は公式サイトからパッケージをダウンロードするか、 gem でインストールします。

Vagrant – Downloads

gem でインストールする場合は以下になります。(追記: gem でインストールした場合、sahara プラグインが動作しない場合があるので、こだわりが無ければ上記パッケージでのインストールをお勧めします。)

$ sudo gem install vagrant

インストールができたら vagrant コマンドが使えるか確認しておきます。

$ vagrant -v
Vagrant version 1.0.7

3. box ファイルのインストール

Vagrant で仮想サーバを作成するには box ファイルというイメージファイルが必要になります。box ファイルは自分で作成することもできるのですが、主要な Linux については公開されているファイルがあるので、これをインストールします。

Vagrantbox.es では各OSごとのboxファイルダウンロードURLが一覧として公開されています。CentOS もいくつか種類があるので、その中から CentOS6.4_x86_64 の box ファイル(CentOS 6.4 x86_64 Minimal (VirtualBox Guest Additions 4.2.8, Chef 11.4.0, Puppet 3.1.0))をインストールします。

下記が box ファイルのインストール例です。

vagrant box add までがコマンドで、centos64_64 の部分が box ファイルの名称です。これは任意に付けることができるので、自分が分かりやすい名前を付けます。その後に box ファイルの URL を指定します。

$ vagrant box add centos64_64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130309.box
[vagrant] Downloading with Vagrant::Downloaders::HTTP...
[vagrant] Downloading box: http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130309.box
[vagrant] Extracting box...
[vagrant] Verifying box...
[vagrant] Cleaning up downloaded box...

インストールが完了したら、vagrant box list コマンドで確認します。

% vagrant box list
centos64_64

4. Vagrantfile の作成

次に vagrant の設定ファイルである Vagrantfile を作成します。作成する仮想サーバの設定はこのファイルに記述していきます。

Vagrantfile の作成するには vagrant init コマンドを使います。

% mkdir vagrant
% cd vagrant
% vagrant init
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
% ls
Vagrantfile

では Vagrantfile を編集してみましょう。
デフォルトのサンプルの設定がコメントで書かていますが、一旦削除して必要な設定だけ記述しています。

config.vm.box にはベースとなる box 名を指定します。ここでは先程ダウンロードした centos64_64 という box 名を指定しています。
これだけで仮想サーバを起動できるのですが、動作が分かりやすいように config.vm.boot_mode に :gui を指定しています。

% vim Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|
  config.vm.box = "centos64_64"
  config.vm.boot_mode = :gui
end

5. 仮想サーバを起動

では実際に仮想サーバを起動してみましょう。

仮想サーバを起動するには、vagrant up コマンドを使います。

% vagrant up
[default] Importing base box 'centos64_64'...
[default] Matching MAC address for NAT networking...
[default] Clearing any previously set forwarded ports...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- v-root: /vagrant

コマンドを実行すると VirtualBox が起動します。

virtualbox

起動が完了すると VirtualBox のウィンドウにログインプロンプトが表示されます。
ウィンドウをクリックして、login に vagrant 、password に vagrant を入力するとログインすることができます。

virtualbox_login

Virtualbox ウィンドウから抜ける時は、ウィンドウ右下に書いてあるとおり、左のコマンドキーを1回押します。(Mac OS X の場合)

virtualbox_exit

vagrant ssh コマンドを使うと、ssh で仮想サーバにログインすることができます。

% vagrant ssh
Last login: Thu Mar 21 06:46:13 2013
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$

vagrant status コマンドを使うと、現在の仮想サーバの状態が確認できます。下記では、起動中なので ruuning と表示されています。

% vagrant status
Current VM states:

default                     running

6. 仮想サーバを停止

仮想サーバを停止する場合、VirtualBox ウィンドウでログインした状態で、/sbin/shutdown などを実行する方法と vagrant halt コマンドで仮想サーバを停止する方法があります。

下記では vagrant halt コマンドで仮想サーバを停止しています。

% vagrant halt

vagrant status コマンドを実行すると停止していることが分かります。

% vagrant status
Current VM states:

web1                     poweroff

7. 仮想サーバを削除

仮想サーバを削除する場合、vagrant destroy コマンドを使います。

% vagrant destory
Are you sure you want to destroy the 'default' VM? [Y/N] y
[default] Destroying VM and associated drives...

vagrant status コマンドを実行すると削除されていることが分かります。

% vagrant status
Current VM states:

default                     not created

8. 仮想サーバでhttpdサーバを構築

では仮想サーバにhttpdをインストールしてみましょう。

まず Vgrantfile を編集して、仮想サーバの設定を追加します。
Mac 上ですでに各種デーモンが起動しているため、ポートの競合などを避けるために仮想サーバにIPアドレス、ホスト名を付与しています。また、VirtualBox のウィンドウを隠すために config.vm.boot_mode をコメントアウトしています。

% vim Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|
  config.vm.box = "centos64_64"
  #config.vm.boot_mode = :gui

  config.vm.define :web do |web|
    web.vm.host_name = "web"
    web.vm.network :hostonly, "192.168.33.10"
  end
end

では仮想サーバを起動しましょう。

% vagrand up

SSH で仮想サーバにログインします。vagrant ssh コマンドでも可能ですし、IP アドレスを指定して、ssh コマンドでもログインできます。

% vagrand ssh
% ssh vagrant@192.168.33.10
※パスワードは vagrant

次に httpd をインストールして、起動します。

[vagrant@web ~]$ sudo yum -y install httpd
(snip)
[vagrant@web ~]$ sudo /sbin/service httpd start

この仮想サーバでは iptables が設定されていて、外部からの通信を遮断してしまいます。VirtualBox を実行している PC から通信できるように全てのフィルタリングルールを削除しておきます。

[vagrant@web ~]$ sudo /sbin/iptables -F
[vagrant@web ~]$ sudo /etc/init.d/iptables save

ブラウザから仮想サーバの httpd にアクセスしてみましょう。http://192.168.33.10/ にアクセスするとおなじみのテストページが表示されます。

browser

9. sahara プラグインで、作って、壊して、元に戻せる環境を構築

Vagrant にはプラグインで機能を拡張することができます。いくつかあるプラグインの中から、個人的にこれがあるから Vagrant が使いたくなるというプラグインをご紹介しましょう。

それは sahara プラグインです。sahara プラグインを使うと、データベースのトランザクションにおける rollback のように、サーバへ反映した作業をある時点まで簡単に戻すことができます。

では sahara プラグインをインストールして、気軽に元に戻せる機能を試してみましょう。

9–1. sahara プラグインをインストール

sahara プラグインをインストールするいは、vagrant gem install コマンドを使います。

% vagrant gem install sahara
Fetching: Platform-0.4.0.gem (100%)
Fetching: open4-1.3.0.gem (100%)
Fetching: popen4-0.1.2.gem (100%)
Fetching: thor-0.17.0.gem (100%)
Fetching: sahara-0.0.13.gem (100%)
Successfully installed Platform-0.4.0
Successfully installed open4-1.3.0
Successfully installed popen4-0.1.2
Successfully installed thor-0.17.0
Successfully installed sahara-0.0.13
5 gems installed
Installing ri documentation for Platform-0.4.0...
Installing ri documentation for open4-1.3.0...
Installing ri documentation for popen4-0.1.2...
Installing ri documentation for thor-0.17.0...
Installing ri documentation for sahara-0.0.13...
Installing RDoc documentation for Platform-0.4.0...
Installing RDoc documentation for open4-1.3.0...
Installing RDoc documentation for popen4-0.1.2...
Installing RDoc documentation for thor-0.17.0...
Installing RDoc documentation for sahara-0.0.13...

インストールが完了すると、vagrant で利用できるサブコマンドに sandbox が追加されます。

% vagrant
[/Users/shin/vagrant]% vagrant
(snip)
Available subcommands:
     box
     destroy
     gem
     halt
     init
     package
     provision
     reload
     resume
     sandbox  <---- 追加
     ssh
     ssh-config
     status
     suspend
     up

For help on any individual command run `vagrant COMMAND -h`

9–2. sahara プラグインを試す

実際に sahara プラグインを試してみましょう。

まず vagrant sandbox on コマンドで、snapshot mode を開始します。これは RDBMS の BEGIN にあたり、rollback した場合にこの時点まで仮想サーバを戻すことができます。

% vagrant sandbox on
[web] - Enabling sandbox
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

vagrant sandbox status コマンドを実行すると snapshot mode 中であることが分かります。

% vagrant sandbox status
[web] - snapshot mode is on

仮想サーバにログインして、php をインストールします。php コマンドが実行できることが確認できたらログアウトします。

% vagrant ssh
Last login: Thu Mar 21 07:10:35 2013 from 192.168.33.1
Welcome to your Vagrant-built virtual machine.
[vagrant@web ~]$ sudo yum -y install php
[vagrant@web ~]$ php -v
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[vagrant@web ~]$ exit

php のインストールを取り消すために、vagrant sandbox rollback コマンドで vagrant sandbox on を実行した時点に戻します。

% vagrant sandbox rollback
[web] - powering off machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[web] - roll back machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[web] - starting the machine again

これは仮想サーバが元に戻りました。再度 vagrant ssh でログインしてみると、さきほどインストールした php が存在しません。

[vagrant@web ~]$ php
-bash: php: コマンドが見つかりません

rollback を実行した後も snapshot mode が有効なままとなっています。(これは DBMS とは異なります)

% vagrant sandbox status
[web] - snapshot mode is on

では、つづけて、sudo rm -rf /bin を実行してみましょう。(必ず仮想サーバで実行して下さい!)

[vagrant@web ~]$ sudo rm -rf /bin
(snip)
[vagrant@web ~]$ ls
-bash: /bin/ls: No such file or directory

こりゃ大変!でも大丈夫。サーバをログアウトして、vagrant sandbox rollback を実行すれば元通り。

% vagrant sandbox rollback
[web] - powering off machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[web] - roll back machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[web] - starting the machine again

% vagrant ssh
[vagrant@web ~]$ ls

snapshot mode を終了する場合は vagrant sandbox off コマンドを実行します。vagrant sandbox off コマンドを実行すると現在の状態をそのまま保存して、snapshot mode が終了します。

% vagrant sandbox off
[web] - switching sandbox off
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

vagrant sandbox status で確認すると snapshot mode が終了していることが分かります。

% vagrant sandbox status
[web] - snapshot mode is off

10. 複数の仮想サーバを起動

Web システムでは複数台のサーバで構成することが多いのですが、その検証として複数の仮想サーバを起動してみましょう。

Vagrantfile で、config.vm.define を追加して、それぞれの仮想サーバの設定を記述します。以下の設定では、web サーバ 2 台と db サーバ 1 台を起動しています。
config.vm.define の第一引数が仮想サーバの名前となります。db サーバでは、db.vm.cusomise でメモリを 1GB に変更しています。(デフォルトは 512 MB)

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|
  config.vm.box = "centos64_64"
  #config.vm.boot_mode = :gui

  config.vm.define :web1 do |web1|
    web1.vm.host_name = "web1"
    web1.vm.network :hostonly, "192.168.33.10"
  end
  config.vm.define :web2 do |web2|
    web2.vm.host_name = "web2"
    web2.vm.network :hostonly, "192.168.33.11"
  end
  config.vm.define :db do |db|
    db.vm.host_name = "db"
    db.vm.network :hostonly, "192.168.33.12"
    db.vm.customize ["modifyvm", :id, "--memory", 1024]
  end
end

vagrant up コマンドを実行すると 3 台が順番に起動します。

% vagrant up
[web1] ...
[web2] ...
[db] ...

% vagrant status
Current VM states:

web1                     running
web2                     running
db                       running

...

それぞれのコマンドは、仮想サーバ名を指定すると、対象の仮想サーバに対して実行できます。下記では db サーバを起動して、ssh ログインしています。

% vagrant up db
% vagrant ssh db

仮想サーバ間の通信は IP アドレスで可能なので、複数サーバ構成を構築することができます。

11. 仮想サーバのエクスポート

構築した仮想サーバを box ファイルにエクスポートすることができます。エクスポートした box ファイルは別の PC でインストールすることができるので、同じ開発環境をチームで共有したり、ベースとなるサーバ環境を用意しておいてプロジェクト毎に差分を変更していくなどが可能となります。

仮想サーバを box ファイルへエクスポートするには、vagrant package コマンドを実行します。

% vagrant package
[web1] Attempting graceful shutdown of VM...
[web1] Clearing any previously set forwarded ports...
[web1] Creating temporary directory for export...
[web1] Exporting VM...
[web1] Compressing package to: /Users/shin/vagrant/package.box

vagrant package コマンドが完了すると、package.box という box ファイルが作成されています。

% ls package.box
package.box

このファイルを vagrant box add コマンドでインストールすれば、この仮想サーバをベースに新たな仮想サーバを作成することができます。

まとめ

Vagrant は Chef や puppet などで自動構築する機能があるので、これらと組み合わせることでより真価を発揮します。
ただ、それらを使わずとも、手軽に触れるサーバ、壊せるサーバ、開発環境としても十二分に便利なツールです。

業務はもちろんですが、ハンズオンなどで参加者に同じ環境を配布したい時にも使えそうなので、活用していきたいですね。

参考

Q. OS X, ruby, gem のバージョン(追記)

ykitade
現行のsaharaはパッチを当てないと使えなくね?OSXとrubyのバージョンが知りたい。
http://b.hatena.ne.jp/ykitade/20130323#bookmark-137571070

OS X は「10.8.3」です。

Vagrant は公式サイトの dmg ファイルからインストールしています。これなら ruby や gem をパッケージに内包しているので問題無く動作しました。バージョンは以下です。

% /Applications/Vagrant/embedded/bin/ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [universal.x86_64-darwin12.2.1]
% /Applications/Vagrant/embedded/bin/gem -v
1.8.23
  • コメント (Close): 0
  • トラックバック (Close): 0

CentOS 6.x で ipv6 を無効化する

  • 2013-03-18 (月)
  • unix
この記事の所要時間: 41

CentOS 6.x で ipv6 を無効化する方法です。

Google で検索すると色々な方法が出てきますが、本家 wiki.centos.org に方法が書いてありました。

5. How do I disable IPv6?

ipv6 モジュールは無効化しない

ipv6 モジュールを無効化すると SELinux など別の箇所で問題が出るようなので、これはやらない方が良いようです。

/etc/sysctl.conf で設定

/etc/sysctl.conf に以下の設定を追加します。追加した後は再起動もしくは /sbin/sysctl -p で設定を反映させます。

# ipv6 disable
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
$ sudo /sbin/sysctl -p

/sbin/ifconfig で確認

設定が反映した後に /sbin/ifconfig -a を見ると ipv6 の情報が表示されていないことが分かります。

設定前は inet6 の行があります。

$ /sbin/ifconfig lo
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

設定後は inet6 の行が表示されません。

$ /sbin/ifconfig lo
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

ただ設定後も netstat an で見ると ipv6 で Listen しているポートがあったりするのが不思議だったりしますが。

$ netstat -an -A inet6
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::50717                    :::*                        LISTEN
udp        0      0 :::855                      :::*
udp        0      0 :::111                      :::*
udp        0      0 :::38581                    :::*
  • コメント (Close): 0
  • トラックバック (Close): 0

AWS ELB に SSL 証明書を Management Console で設定する

この記事の所要時間: 27

Management Console で AWS ELB に SSL 証明書を 設定する方法です。

ここではすでに作成されている ELB(HTTP のみを Listen)に HTTPS します。新規で ELB を作成して、そのまま HTTPS を設定する場合も似た手順で設定できます。

対象の ELB の Listeners に HTTPS を追加

対象の ELB の Listeners に HTTPS を追加します。ここでは SSL Terminaion を利用するので、Instance 側は HTTP としています。
Load Balancer Protocol を選択すると SSL Certificate に「Select」というリンクができるのでこれをクリックします。

aws_elb_https_1

SSL 証明書を登録

SSL 証明書を登録する画面がポップアップで表示されるので、ここに発行された証明書を登録します。
中間証明書が複数ある場合、Certificate Chain に繋げて記載します。

aws_elb_https_2

「Save」ボタンをクリックすると証明書が登録されて、証明書を選択している状態になります。もう一度「Save」ボタンをクリックします。

aws_elb_https_3

追加した Listeners を登録

最後に追加した Listeners を登録するために「Save」ボタンをクリックします。これで HTTPS の Listeners と SSL 証明書が登録されたので、ブラウザ等から HTTPS でアクセスして登録した証明書を確認します。

aws_elb_https_4

証明書の変更、更新

証明書の更新などで Listeners に登録した証明書を変更する場合は、Listeners の SSL Certificate にて「Change」をクリックします。

aws_elb_https_5

ポップアップが表示され、証明書を選択する画面になります。ここでは一度登録した証明書を変更することができないので、Upload a new SSL Certificate を選択して、証明書の登録を行ない、新しい証明書を選択します。

aws_elb_https_6

ブラウザで完結するので楽

SSL証明書の登録や更新は、Webを運用をしていくと地味に続くタスクなので Management Console 上で誰でもできるのは楽です。さらに証明書の削除も Management Console でできるようになるとより良いですね。

  • コメント (Close): 0
  • トラックバック (Close): 0

Home > アーカイブ > 2013-03

検索
フィード
メタ情報

Return to page top