Amazon EC2 Reserved Instances を買ってみた
- まず、Reserved Instance をサポートしている API version 2009-03-01 以降の EC2 API Tools をインストールする。
- 購入済み Reserved Instance を確認する。
$ ec2-describe-reserved-instances
まだ何もない。買っていないのだから当然だ。 - 購入可能な Reserved Instance 一覧 (offerings) を見る。
$ ec2-describe-reserved-instances-offerings
OFFERING e5a2ff3b-f6eb-4b4e-83f8-b879d7060257 us-east-1a c1.medium 3y 1000.0 0.06 Linux/UNIX
OFFERING 248e7b75-afbc-4724-82b2-d78353299433 us-east-1c c1.medium 3y 1000.0 0.06 Linux/UNIX
OFFERING 60dcfab3-d5b8-4d3d-9f38-480b34d38239 us-east-1b c1.medium 3y 1000.0 0.06 Linux/UNIX
OFFERING c48ab04c-42bb-4e5b-8c1b-c015f9604dd5 us-east-1a c1.medium 1y 650.0 0.06 Linux/UNIX
OFFERING ceb6a579-b754-4a50-a53e-36efdb8eb28b us-east-1c c1.medium 1y 650.0 0.06 Linux/UNIX
OFFERING 3a98bf7d-b94b-412a-8de5-8c77dfcc4ffd us-east-1b c1.medium 1y 650.0 0.06 Linux/UNIX
OFFERING 248e7b75-ed4c-4ca7-b42b-d14ee74a3360 us-east-1c c1.xlarge 3y 4000.0 0.24 Linux/UNIX
OFFERING ceb6a579-1420-4728-ace3-9cb73934afcf us-east-1a c1.xlarge 3y 4000.0 0.24 Linux/UNIX
OFFERING 60dcfab3-97dd-421b-8f75-c126de7741ce us-east-1b c1.xlarge 3y 4000.0 0.24 Linux/UNIX
OFFERING ceb6a579-f9b0-4bff-994c-c62030080d27 us-east-1c c1.xlarge 1y 2600.0 0.24 Linux/UNIX
OFFERING 4b2293b4-cb88-480b-999d-a17683faa92f us-east-1a c1.xlarge 1y 2600.0 0.24 Linux/UNIX
OFFERING 60dcfab3-fa53-4d32-97cc-2fd1a0a8c0ac us-east-1b c1.xlarge 1y 2600.0 0.24 Linux/UNIX
OFFERING 649fd0c8-8bd3-489e-904c-4c5dfcb131ea us-east-1c m1.large 3y 2000.0 0.12 Linux/UNIX
OFFERING 248e7b75-5324-48e5-9749-fd3b4de01829 us-east-1b m1.large 3y 2000.0 0.12 Linux/UNIX
OFFERING d586503b-6876-4d40-8f94-1b2dde6b0ead us-east-1a m1.large 3y 2000.0 0.12 Linux/UNIX
OFFERING 248e7b75-a817-462e-996a-8ea7b4810a0e us-east-1c m1.large 1y 1300.0 0.12 Linux/UNIX
OFFERING c48ab04c-280c-4879-8119-63ac87002498 us-east-1b m1.large 1y 1300.0 0.12 Linux/UNIX
OFFERING 649fd0c8-4af1-4f63-bbdb-1a05951886a4 us-east-1a m1.large 1y 1300.0 0.12 Linux/UNIX
OFFERING 3a98bf7d-96c3-4d2f-a263-123fa6b46d61 us-east-1c m1.small 3y 500.0 0.03 Linux/UNIX
OFFERING 248e7b75-0799-4a55-a0cb-f8d28eb11921 us-east-1b m1.small 3y 500.0 0.03 Linux/UNIX
OFFERING 438012d3-d93c-4fbd-a245-33b4bf0930ec us-east-1a m1.small 3y 500.0 0.03 Linux/UNIX
OFFERING 60dcfab3-a56c-4092-8c90-3677e9da02b7 us-east-1c m1.small 1y 325.0 0.03 Linux/UNIX
OFFERING 4b2293b4-1e6c-4eb3-ab74-4493c0e57987 us-east-1b m1.small 1y 325.0 0.03 Linux/UNIX
OFFERING c48ab04c-c057-457e-a4d8-a0f172f4db2d us-east-1a m1.small 1y 325.0 0.03 Linux/UNIX
OFFERING c48ab04c-6769-4bc1-966e-f7b0326001dd us-east-1c m1.xlarge 3y 4000.0 0.24 Linux/UNIX
OFFERING 649fd0c8-4767-43a1-a530-b4a1f0c08c31 us-east-1b m1.xlarge 3y 4000.0 0.24 Linux/UNIX
OFFERING d586503b-20ad-4beb-bc88-60a1333c2b98 us-east-1a m1.xlarge 3y 4000.0 0.24 Linux/UNIX
OFFERING e5a2ff3b-8646-4f48-912a-aaeba5823c73 us-east-1c m1.xlarge 1y 2600.0 0.24 Linux/UNIX
OFFERING c48ab04c-63ab-4cd6-b8f5-978a29eb9bcc us-east-1b m1.xlarge 1y 2600.0 0.24 Linux/UNIX
OFFERING c48ab04c-119e-41f1-8b0f-b83c4fc4f869 us-east-1a m1.xlarge 1y 2600.0 0.24 Linux/UNIXregion (US, Europe) どころか、zone 毎に購入するのですか。。。
もうそろそろ、EC2 がアジアにも来る(どこの国かは不明)という話なので、ここでしばし躊躇するも、えいやで買うことを決定。m1.small の 1y をひとつ。
- 購入する。us-east-1b の m1.small をひとつ。
$ ec2-purchase-reserved-instances-offering -c 1 -o "4b2293b4-1e6c-4eb3-ab74-4493c0e57987"
RESERVEDINSTANCES b847fa93-3068-4a48-8b89-3db6b64cd24e - 購入済み Reserved Instance を確認する。
$ ec2-describe-reserved-instances
まだ処理されていないようだ。
RESERVEDINSTANCES b847fa93-3068-4a48-8b89-3db6b64cd24e us-east-1b m1.small Linux/UNIX 1y 0.03325.0 1 2009-04-18T03:52:26+0000 payment-pending
$ ec2-describe-reserved-instancesactive になるまでに 10分くらいかかった。 </li>
RESERVEDINSTANCES b847fa93-3068-4a48-8b89-3db6b64cd24e us-east-1b m1.small Linux/UNIX 1y 0.03325.0 1 2009-04-18T03:52:26+0000 active
APC (Alternative PHP Cache) の管理画面
APC にはこんな管理画面がついてくる。
キャッシュの利用状況の確認、キャッシュのクリアなどできる。
<div class="separator" style="clear: both; text-align: center;">
</div>
<p>CentOS5 で pecl からインストールした場合は、/usr/share/pear/apc.php にインストールされていた。/var/www/html の下の適当な場所からシンボリックリンクを張ってアクセスできるようにした。</p>
<p>デフォルトではパスワードを指定する必要があるので、apc.php 冒頭の以下の部分を変更する。パスワードが “password” のままではログインできないので注意。</p>
<pre class="prettyprint">defaults(‘ADMIN_USERNAME’,’apc’); // Admin Username
defaults(‘ADMIN_PASSWORD’,’password’);
</pre>
APCをインストールした
PHP をバイナリでキャッシュする APC (Alternative PHP Cache) をインストールした。
<ol><li>APC をインストールする。
<pre class="prettyprint"># pecl install apc
</pre></li>
<li>/etc/php.ini に apc の設定を追加する。
<pre class="prettyprint">[apc]
extension=apc.so
</pre></li>
<li>Apache を再起動する。
<pre class="prettyprint"># service httpd graceful
</pre></li>
<li>phpinfo() を実行して APC Support が enabled になっていれば成功。
<pre class="prettyprint"># cat test.php
<?php
phpinfo();
?>
</pre><div class="separator" style="clear: both; text-align: center;">
</div>
</li>
</ol>
<h4>失敗するときは</h4><ul><li>php-devel が無い場合のエラー。php-devel をインストールする。
<pre class="prettyprint"># pecl install apc
downloading APC-3.0.19.tgz …
Starting to download APC-3.0.19.tgz (115,735 bytes)
…………………….done: 115,735 bytes
47 source files, building
running: phpize
sh: phpize: command not found
ERROR: `phpize’ failed
# yum install php-devel
</pre></li>
</ul>
EC-CUBE は PostgreSQL で使うべき? - MySQL での稼働失敗
日本製のオープンソースECソフト、EC-CUBE 2.3.3 を MySQL で使おうとしたけれど、配送設定で複数の配送時間を登録しようとするとエラーが起きてログイン画面に遷移してしまう。PostgreSQL に変えてみてからは、問題は起きていない。
<p>EC-CUBE はもともと Postgres用らしく、開発者も Postgres を使っているとのこと。なので、PostgreSQL を使える環境なら、迷わず Postgres にした方がよさそう。MySQL でも何となく動いてはいたけど、配送時間の登録ごときでシステムエラーになってしまうようでは、先が思いやられる。フォーラムの書き込みなどを見ると、速度も Postgres を使う方が速いらしい。</p>
<p>ちなみに、配送時間の登録で出たエラーはこれ。(data/logs/site.log)</p>
<pre class="prettyprint">INSERT INTO dtb_delivtime(deliv_time,deliv_id,time_id) VALUES (‘18:00 ~ 0:00’,’3’,15) [nativecode=1062 ** Duplicate entry ‘15’ for key 1]
</pre>
<p>dtb_delivtime とはどんなテーブルだろう?</p>
<pre class="prettyprint">mysql> desc dtb_delivtime;
+————+———+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+———+——+—–+———+—————-+
| deliv_id | int(11) | NO | | | |
| time_id | int(11) | NO | PRI | NULL | auto_increment |
| deliv_time | text | NO | | | |
+————+———+——+—–+———+—————-+
3 rows in set (0.00 sec)
</pre>
<p>time_id は primary key だ。なぜ主キーが重複する。。。</p>
<p>この問題を解決しようと努力するよりも、Postgres に移行した方が賢い選択だと考えて、MySQL で動かすのはあきらめた。レンタルサーバだと MySQL しか用意されていなくて、PostgreSQL を選べないことも多いので、ちょっと不便かも。</p>
Redmine 日本語対応
Redmine 0.8 でガントチャートを PDF出力、PNG出力することができるが、日本語が出ていなかったのでググって対応した。
<h4>PDF の日本語対応</h4>
<p>jang/ja.yml で指定されている PDF のエンコーディングを変更する。</p>
<ul><li>変更前
<pre class="prettyprint">general_csv_encoding: SJIS
general_pdf_encoding: UTF-8
</pre></li>
<li>変更後
<pre class="prettyprint">general_csv_encoding: SJIS
general_pdf_encoding: SJIS
</pre></li>
</ul>
<h4>PNG の日本語対応</h4>
<ol><li>Windows から msgothic.ttc を /usr/share/fonts/default/TrueType にコピー。</li>
<li>Redmine の lib/redmine/helpers/gantt.rb の 89行目付近にコードを追加する。
(gc.font と gc.pointsize の行)</li>
<pre class="prettyprint">gc = Magick::Draw.new
gc.font = ‘/usr/share/fonts/default/TrueType/msgothic.ttc’
gc.pointsize = 12
</pre></ol>
<h4>参考</h4><ul><li>ガントチャートのpng出力で文字化け</li>
</ul>