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>
CentOS 5 に RMagick をインストールした
Redmine でガントチャートを PNG 出力できるように、RMagic をインストールした。
<pre class="prettyprint"># yum install ImageMagick
# yum install ImageMagick-devel
# Windows から verdana.ttf, arialbd.ttf, arialbi.ttf, arial.ttf を /usr/share/fonts/default/TrueType にコピー。
# yum install rmagick -v 1.15.14
</pre>
<p>RMagick の最新版は RMagick 2 だが、ImageMagick-6.3.0 以上を要求する。yum で入るのが 6.2.8 だったので、RMagic 1 にバージョンを落とした。1.15.14 が 1.x 系の最新らしい。</p>
<ul><li>ruby-devel がインストールされていないときのエラー。
<pre class="prettyprint">/usr/bin/ruby extconf.rb install rmagick
can’t find header files for ruby.
</pre></li>
<li>フォントが足りないときのエラー。
<pre class="prettyprint">/usr/lib/ruby/gems/1.8/gems/rmagick-1.15.14/./lib/rvg/misc.rb:321:in get_type_metrics': unable to read font /usr/share/fonts/default/TrueType/verdana.ttf’ (Magick::ImageMagickError)
</pre></li>
<li>ImageMagick-devel をインストールしていないときのエラー。
<pre class="prettyprint">Can’t install RMagick 2.9.1. Can’t find Magick-config in /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
</pre></li>
</ul>