カテゴリー別アーカイブ: さくらのVPS

PHP7 Casual Talk で LT してきました

さて、先週 PHP 7 Casual Talk #1 に参加して LT してきました。
会場は、ヒカリエの上のほう、KDDI さんでした。会社から近くて助かります。

スライドにも書いたんですが、PHP BLT #2 で PHP7 の話が予想以上に少なかったって tweet をしたら、@fortkle さんに捕捉されてしまいましたw

僕の LT はリアルに拙い感じでほんと申し訳ないんですが、他の方の LT はとても有意義でした。

  • PHP5.x から PHP7 に移行したが、後方互換性が高くほとんど苦労しなかった
  • ほとんどのメジャーどころのフレームワークは PHP7 対応してる
  • PHP7 だから無条件でパフォーマンス上がる!というわけではなく、ちゃんと計測することが大事
    • Yii Framework はまさかのパフォーマンス低下…(びっくりしました)
  • PHP7 独自の機能(スカラー型宣言、null 合体演算子、無名クラス etc…)を使って共通ライブラリ作るのはまだつらいかな…
  • 7.0.1 とか 7.0.2 の changelog とか見ると面白い

個人的には移行へのハードルってやっぱりそこまで高くないんだなーということを実体験として語られている方がいたので、とても参考になりました。

Travis CI、CircleCI をお使いの方はおもむろに php7 でテスト走らせてみたりしたらいいんじゃないかな。
テストコードが無いって方は、PHP7 Compatibility Checker で互換性チェック&互換性ないって場合は、どのように互換性がないかを出力してくれるという便利ツールを使うといいと思います。

connehito の CTO @tatsushim さんもいらしていて、お声がけいただきました。ちょう久しぶりの再会だ!と興奮していたんですが、実は会ったことはなかったらしく、いろいろと失礼しましたw

ピザがとても美味しかったです。ありがとうございました。

しかし、もう LT ネタがない…プライベートでまた時間確保して何かネタを作らねばー。

CentOS 7 上の nginx で SSL 化 & HTTP/2 対応

冬休み中、SSL 化とそれにあわせて HTTP/2 対応だけやり残しました。
なので、空いた時間を使ってサクッと終わらせました。

Let’s Encrypt を使えば無料で SSL 証明書を取得できます。良い時代です。
以下のページを参考にさせていただき、手順通りにやれば問題無いです。

Let’s Encryptを使って簡単0円でサーバ証明書を取得

で、http/2 対応している nginx のバージョンは 1.9.5 以降のようなのですが、ソースからビルドするのはやりたくないなーということで yum からいけないかと調べた所ドンピシャな記事がヒット。

yumでnginx 1.9.5にアップデートしてHTTP/2に対応

この通りにやったら、今日時点では、Version 1.9.9 になりました。

で、nginx の設定ファイルの listen 443 ssl; となっている部分を listen 443 http2; に変更し、ssl_ciphers の先頭に AESGCM:HIGH を追加し、nginx を restart させれば完了。

serimacohttp2

無事に HTTP/2 対応できました。
正味、1 時間ぐらいで全部できるので暇な時に是非どうぞ!

CentOS 7 に PHP 7.0, nginx, MariaDB を Ansible でインストールする

前回の投稿でこの休み中にやることを決めました。

今日で冬休みも終わるので、成果をここで公開します。

  • 4年ぐらい前に借りたさくら VPS をずっと使っていた
    • CentOS 5, PHP 5.5, Apache, WordPress 3.9 というもはやレガシーな環境になってしまっていた
  • VPS を借り直すだけで同じ料金で VPS のスペック自体が 2 倍になる

というわけで、新規で VPS を構築しつつ Ansible で初期セットアップの自動化と、各種ミドルウェアのセットアップも自動化しました。

  • CentOS 7
  • PHP 7.0
  • nginx 1.8
  • MariaDB 5.5

初期セットアップについては、この記事が大いに参考になりました。とても助かりました。

Ansible でさくらのVPS の環境構築を自動化 ~ハマりポイントとともに~

初期セットアップでやっていることは、作業用ユーザ作成、SSH ポート変更、root でのパスワードログイン禁止、firewall の設定あたり。細かいことは上の記事を読んだほうが絶対に良いので、そちらにお任せ。

特筆すべきは、CentOS 7 になって iptables というより firewalld を使ったほうがよさげだったので、playbook でもその点は playbook にも反映しておきました。
firewalld は iptables のラッパー的な存在のようです。

さくら VPS のコントロールパネルからカスタム OS で CentOS 7 を選んで、minimal インストールを選択、root パスワードだけインストール中の画面で設定しておきます。

ミドルウェアインストールの playbook については、PHP 7 をやっぱり入れたかったのであえていうならそこくらい。
remi-php70 が既に公開されており、日々更新されているので、こちらを使いました。

New “remi-php70” repository

あと、Wordpress で ftp の代わりに ssh2 を使いたくなったんですが、現状、ソースからインストールしないと使えないらしいので、ssh2 は諦めました。

Solution : How to install ssh2 php7 extension.

(playbook 中で、sed を使いまくってるけど lineinfile に置き換えたい…けどまぁそこは今度)

WordPress 4.4 を使っていますが、今のところ問題なく PHP 7 で動作しています。
ベンチマークをとりたかったんですが、VPS 自体のスペックもかなり上がってしまったので、純粋に PHP の性能測定はできないかなと思い今回はやっていません、が体感早くなった気がするのでおすすめです。

ちなみに、どちらも playbook を github で公開しました。
細かいところはまだ全然出来てないですが、「完璧を目指すよりまず終わらせろ」とザッカーバーグ先生が言っていたのでこれで良しとします。

serima/centos7-initalize-ansible
serima/centos7-php70-nginx-mariadb-ansible

1日2〜3時間ほど作業時間を捻出してくれた妻に感謝!

UNIX/Linux環境でcsv/tsvにクエリを投げることができるqが便利すぎて生きるのが辛い

UNIX/Linux環境でSQLコマンドが使えたらいいのに、と思ったことはありませんか?
私はあります。

10万〜100万行レベルのデータを集計したいけど、わざわざDBにぶっ込むほどではない。
そんな時は、awk, join, grep, paste, wc, uniqなどなどの各種コマンドを駆使して集計しています。

ちなみに、joinコマンドに関してはここに大変お世話になりました。
本当に便利すぎて生きるのが辛いです。

◆joinコマンドが便利過ぎて生きるのが辛い
http://d.hatena.ne.jp/yutakikuchi/20120907/1346975281

ただ、これが複数ファイルにまたがって処理をしたりして、複雑になってくるとだんだん何のデータを操っているか混乱してきます。
そんなときに、カジュアルにtsv, csvファイルに対してqueryを投げられたらいいのになぁと感じていました。

そんなときに、これを見つけました。

◆q – Treating Text as a Database
https://github.com/harelba/q

q という超絶短いコマンドのため、単語のググラビリティ(単語のググられやすさ/ググりやすさ。)が悪すぎて、あまり発見されないかもしれません。

俺が求めていたのはコレだぁ!
ということで、実務でも使っています。

もっと普及して欲しいので、インストール手順からちょっとした実行サンプルを紹介します。

久々に見てみたら、brewでインストールできるようになってました。下記インストール手順参照のこと。(2015/07/24 追記)
http://harelba.github.io/q/install.html

必要環境はPython 2.5以上か、SQLite3モジュールがインストールされているPython 2.4以上です。
(Python 2.5は、SQLite3が標準バンドルされています)

中身を見てみると、1行目にインタプリタの指定があります。
自分の環境は、2.4.3と2.7.1の両バージョンがインストールしてあるため、2.7.1で実行されるように変更します。

実行してみます。

動きました。

PATHを通します。

.zshrcに以下を追記。

パスが通りました!

Examplesが載っているので、試しにそのまま入力してみます。

おー!
素晴らしい。

% seq 1 1000

1
2
3
4
5
(略)
1000

を出力して、
これを標準入力として q に渡す。
c1というのが、カラムの1番目という意味なので、
avg(c1)で、1〜1000の総和の平均
sum(c1)で、1〜1000の総和が出力されています。

こんな風にgroup byも使える!

ちなみにawkでやろうとするとこうですか。

joinも書けます。

SQLに馴染みのある人はqを使ったほうがサクッと書けていいですね。

terminal

nokogiriがファイルの最後までパースしてくれなかった件

RubyでXpath/CSS3 selectorを使ってパースするときの選択肢のひとつ。
スクレイピングする必要がありインストールしたのですが、使えるようになるまで地味にハマったのでメモ。

http://nokogiri.org/

普通にインストールして、試してみようかと思った矢先。

[ruby]
require ‘open-uri’ require ‘nokogiri’

doc = Nokogiri::HTML(open(“http://serima.co”))
p doc
ac = doc.xpath(“//a”)
puts ac.size
[/ruby]
* こんな感じでnokogiri.rbを作成

[shell]
% ruby nokogiri.rb
#]>
0
[/shell]

なんかおかしい…1行目しか取得できてないよ…
なにがおかしいのか…と色々調べていると、こんなページを発見。

CentOS 5.5にNokogiriをインストールしたらうまくパースできなかったという話

症状が似ている。どうやらlibxml2のバージョンが古いとダメらしい。
ということで、さらに調べてみると

公式のinstallationのページにたどり着く。
http://nokogiri.org/tutorials/installing_nokogiri.html

CentOS 5 (and RHEL5) come installed with libxml 2.6.26 which, while not as offensively out-of-date as Mac Leopard, is still pretty damn old (released June 2006) and has known issues.

If you’re affected by any known bugs or are seeing odd behavior, you may want to consider uninstalling the RPMs for libxml2 and libxslt, and building them from source.

えっ

[shell]
% nokogiri -v
# Nokogiri (1.5.2)

warnings: []

nokogiri: 1.5.2
ruby:
version: 1.9.2
platform: x86_64-linux
description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
engine: ruby
libxml:
binding: extension
compiled: 2.6.26
loaded: 2.6.26
[/shell]

見事にlibxmlのバージョンが2.6.26ですね。
最初に気づくべきでしたが、まぁ今気付けただけでもよしとしましょう。

先ほどのブログ記事の方は、アップデートによる影響が怖いということでnokogiriのみ新しいバージョンのlibxmlを参照するようにするということだったので、それにならいます。

[shell]
# cd /usr/local/src
# wget http://xmlsoft.org/source/libxml2/libxml2-2.7.8.tar.gz
# tar xvzf libxml2-2.7.8.tar.gz
# cd libxml2-2.7.8
# ./configure –prefix=/usr/local/libxml2
# make
# make install
[/shell]

ここまでやったところで、もう一度確認。
[shell]
% nokogiri -v
WARNING: Nokogiri was built against LibXML version 2.6.26, but has dynamically loaded 2.7.8
# Nokogiri (1.5.2)

warnings:
– Nokogiri was built against LibXML version 2.6.26, but has dynamically loaded 2.7.8
nokogiri: 1.5.2
ruby:
version: 1.9.2
platform: x86_64-linux
description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
engine: ruby
libxml:
binding: extension
compiled: 2.6.26
loaded: 2.7.8
[/shell]

あれ、compiledとloadedのversionが違う。
例のブログ記事によると、libxsltもインストールしないとダメなケースもあるらしい。

ので、入れる。

[shell]
# cd /usr/local/src
# wget http://xmlsoft.org/source/libxslt-1.1.26.tar.gz
# tar xvzf libxslt-1.1.26.tar.gz
# cd libxslt-1.1.26
# ./configure –prefix=/usr/local/libxslt –with-libxml-prefix=/usr/local/libxml2
# make
# make install
[/shell]

[shell]
% nokogiri -v
# Nokogiri (1.5.2)

warnings: []

nokogiri: 1.5.2
ruby:
version: 1.9.2
platform: x86_64-linux
description: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
engine: ruby
libxml:
binding: extension
compiled: 2.7.8
loaded: 2.7.8
[/shell]

おお、無事にできた。
これで、最初に書いたサンプルスクリプトを走らせてみる。

[shell]
% ruby nokogiri.rb
#, #, #]>, #]>]>, #, #, #] children=[#] children=[#, #]>, #, #]>, #, #, #]>, #, #, #] children=[#, #] children=[#, #, #, #, #, #]>, #]>, #, #] children=[#, #]>]>, #, #] children=[#, #]>]>, #, #] children=[#, #]>]>, #, #] children=[#, #]>]>]>, #]>]>, #, #]>]>]>]>
4
[/shell]

これで、無事に全文取得できた!

#結局、libxml 2.6.26のバグが原因のようですが、installationのページの注意文言、太字とか赤字などしてもう少し目立たせてほしいなと思った次第です。
https://github.com/tenderlove/nokogiri/issues/243

lsコマンドの出力結果にfiletypeごとに色を設定する

lsしたときに、デフォルトだと全部同じ色で、どれがファイルでどれがディレクトリなのかさっぱり分からずストレスが溜まりますね。
で、これじゃあさすがにということで、今まではls=’ls –color=auto’とaliasに設定していました。

しかし、黒背景に青字とか超絶見にくい。
輝度上げまくってなんとか耐えてた自分にドロップキックして、色設定を変更してみた。

lsコマンドのカラー出力で256色拡張の色を使用する
http://d.hatena.ne.jp/kakurasan/20080707/p1

上記の通りに設定してみましたが、かなり細かくFiletypeごとに色分けがされていて便利です。なにより背景が黒ベースな方には見やすくなるかと。
必要になったら自分でカスタマイズできますね。

これにあたって、iterm2では、たぶん”xterm-256color”って設定する必要があるはず。
iTermのPreference->Profiles->(自分の設定したいaccount)->Terminal->Terminal Emulation->Report Terminal Type

* before
before
* after
after

3月中旬以降録音できなくなったradikoにリベンジ

以前、このブログでさくらのVPSをつかって、rtmpdumpでradikoを録音するという記事を書きましたが
震災以降ぐらいから録音が失敗するようになりました。

認証方式が変わったのかなと思ってしばらく放置していましたが、調べてみるとやはりそのようでした。

この記事が大変参考になり、おかげで録音が再開できるようになりました。
というか、もうこれ見るだけで大丈夫かと思います。
(しかし、元のコードを書いたのはなかの人なんでしょうか?)

http://memorandum.yamasnet.com/archives/Post-890.html

個人的にハマったのは、コンパイルとビルドでしたがすみません。
備忘録メモっておくのを忘れました。。2時間ぐらい気合いでやったら直ったので多分大丈夫かと思います。

ちなみの僕の環境は上記のサイトの方と同じく、CentOS5.6です。

CentOS 5.5にPHP 5.3.4とMySQL 5.1.53をインストールする。

さくらのVPSでSymfonyを使うためにPHP5.1.6から5.3.4へアップデートします。
(5.3.3にアップデートするつもりだったのですが、タイミングよく5.3.4がリリースされていました)

まずは、今入っているPHPとMySQLのバージョンを確認する。

[shell]
$ php -v
PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:46)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
$ rpm -qa | grep php | sort
php-5.1.6-27.el5_5.3
php-cli-5.1.6-27.el5_5.3
php-common-5.1.6-27.el5_5.3
php-devel-5.1.6-27.el5_5.3
php-mbstring-5.1.6-27.el5_5.3
php-mysql-5.1.6-27.el5_5.3
php-pdo-5.1.6-27.el5_5.3
php-pear-1.4.9-6.el5
php-pear-Auth-SASL-1.0.2-4.el5.centos
php-pear-Date-1.4.7-2.el5.centos
php-pear-File-1.2.2-1.el5.centos
php-pear-HTTP-Request-1.4.2-1.el5.centos
php-pear-Log-1.9.13-1.el5.centos
php-pear-MDB2-2.4.1-2.el5.centos
php-pear-MDB2-Driver-mysql-1.4.1-3.el5.centos
php-pear-Mail-1.1.14-1.el5.centos
php-pear-Mail-Mime-1.4.0-1.el5.centos
php-pear-Net-SMTP-1.2.10-1.el5.centos
php-pear-Net-Sieve-1.1.5-2.el5.centos
php-pear-Net-Socket-1.0.8-1.el5.centos
php-pear-Net-URL-1.0.15-1.el5.centos
php-pear-db-1.7.13-2.el5.rf
php-tidy-5.1.6-15.el5.centos.1
$ mysql –version
mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1
$ rpm -qa | grep mysql | sort
mysql-5.0.77-4.el5_5.4
mysql-server-5.0.77-4.el5_5.4
php-mysql-5.1.6-27.el5_5.3
php-pear-MDB2-Driver-mysql-1.4.1-3.el5.centos
[/shell]

epelリポジトリ登録をします。

[shell]
$ sudo rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm を取得中
警告: /var/tmp/rpm-xfer.GxVSsL: ヘッダ V3 DSA signature: NOKEY, key ID 217521f6
準備中… ########################################### [100%]
1:epel-release ########################################### [100%]
[/shell]
remiリポジトリ登録をします。
[shell]
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
http://rpms.famillecollet.com/enterprise/remi-release-5.rpm を取得中
警告: /var/tmp/rpm-xfer.OnEPUe: ヘッダ V4 DSA signature: NOKEY, key ID 00f97f56
準備中… ########################################### [100%]
1:remi-release ########################################### [100%]
[/shell]
PHP 5.3.3の存在を確認。
[shell]
$ yum info php –enablerepo=remi
Loaded plugins: fastestmirror
addons | 951 B 00:00
base | 2.1 kB 00:00
epel | 3.7 kB 00:00
epel/primary_db | 3.4 MB 00:00
extras | 2.1 kB 00:00
remi | 2.6 kB 00:00
remi/primary_db | 237 kB 00:01
rpmforge | 1.1 kB 00:00
rpmforge 10152/10152
updates | 1.9 kB 00:00
updates/primary_db | 1.0 MB 00:00
Installed Packages
Name : php
Arch : x86_64
Version : 5.1.6
Release : 27.el5_5.3
Size : 6.2 M
Repo : installed
Summary : PHP HTML 埋め込みのスクリプト言語 (PHP: Hypertext Preprocessor)
URL : http://www.php.net/
License : The PHP License v3.01
Description: PHP is an HTML-embedded scripting language. PHP attempts to make it
: easy for developers to write dynamically generated webpages. PHP
: also offers built-in database integration for several commercial
: and non-commercial database management systems, so writing a
: database-enabled webpage with PHP is fairly simple. The most common
: use of PHP coding is probably as a replacement for CGI scripts.
:
: The php package contains the module which adds support for the PHP
: language to Apache HTTP Server.
Available Packages
Name : php
Arch : x86_64
Version : 5.3.4
Release : 1.el5.remi
Size : 1.4 M
Repo : remi
Summary : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
License : PHP
Description: PHP is an HTML-embedded scripting language. PHP attempts to make it
: easy for developers to write dynamically generated web pages. PHP
: also offers built-in database integration for several commercial
: and non-commercial database management systems, so writing a
: database-enabled webpage with PHP is fairly simple. The most common
: use of PHP coding is probably as a replacement for CGI scripts.
:
: The php package contains the module which adds support for the PHP
: language to Apache HTTP Server.
[/shell]
あれ?5.3.4がある。調べてみると、2010/12/11にアップデートされていました。
Stableなようなので、当然こちらをインストールします。
[shell]
# yum remove php php-* mysql
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
–> Running transaction check
—> Package mysql.x86_64 0:5.0.77-4.el5_5.4 set to be erased
–> Processing Dependency: libmysqlclient.so.15()(64bit) for package: dovecot
–> Processing Dependency: libmysqlclient.so.15()(64bit) for package: mysql-serv er
–> Processing Dependency: libmysqlclient.so.15()(64bit) for package: perl-DBD-M ySQL
–> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for pa ckage: dovecot
–> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for pa ckage: mysql-server
–> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for pa ckage: perl-DBD-MySQL
–> Processing Dependency: libmysqlclient_r.so.15()(64bit) for package: mysql-se rver
–> Processing Dependency: libmysqlclient_r.so.15(libmysqlclient_15)(64bit) for package: mysql-server
–> Processing Dependency: mysql = 5.0.77-4.el5_5.4 for package: mysql-server
—> Package php.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-cli.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-common.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-devel.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-mbstring.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-mysql.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-pdo.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-pear.noarch 1:1.4.9-6.el5 set to be erased
—> Package php-pear-Auth-SASL.noarch 0:1.0.2-4.el5.centos set to be erased
—> Package php-pear-Date.noarch 0:1.4.7-2.el5.centos set to be erased
—> Package php-pear-File.noarch 0:1.2.2-1.el5.centos set to be erased
—> Package php-pear-HTTP-Request.noarch 0:1.4.2-1.el5.centos set to be erased
—> Package php-pear-Log.noarch 0:1.9.13-1.el5.centos set to be erased
—> Package php-pear-MDB2.noarch 0:2.4.1-2.el5.centos set to be erased
—> Package php-pear-MDB2-Driver-mysql.noarch 0:1.4.1-3.el5.centos set to be er ased
—> Package php-pear-Mail.noarch 0:1.1.14-1.el5.centos set to be erased
—> Package php-pear-Mail-Mime.noarch 0:1.4.0-1.el5.centos set to be erased
—> Package php-pear-Net-SMTP.noarch 0:1.2.10-1.el5.centos set to be erased
—> Package php-pear-Net-Sieve.noarch 0:1.1.5-2.el5.centos set to be erased
—> Package php-pear-Net-Socket.noarch 0:1.0.8-1.el5.centos set to be erased
—> Package php-pear-Net-URL.noarch 0:1.0.15-1.el5.centos set to be erased
—> Package php-pear-db.noarch 0:1.7.13-2.el5.rf set to be erased
—> Package php-tidy.x86_64 0:5.1.6-15.el5.centos.1 set to be erased
–> Running transaction check
—> Package dovecot.x86_64 0:1.0.7-7.el5 set to be erased
—> Package mysql-server.x86_64 0:5.0.77-4.el5_5.4 set to be erased
—> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be erased
–> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
mysql x86_64 5.0.77-4.el5_5.4 installed 8.1 M
php x86_64 5.1.6-27.el5_5.3 installed 6.2 M
php-cli x86_64 5.1.6-27.el5_5.3 installed 5.3 M
php-common x86_64 5.1.6-27.el5_5.3 installed 397 k
php-devel x86_64 5.1.6-27.el5_5.3 installed 2.5 M
php-mbstring x86_64 5.1.6-27.el5_5.3 installed 1.8 M
php-mysql x86_64 5.1.6-27.el5_5.3 installed 196 k
php-pdo x86_64 5.1.6-27.el5_5.3 installed 114 k
php-pear noarch 1:1.4.9-6.el5 installed 1.8 M
php-pear-Auth-SASL noarch 1.0.2-4.el5.centos installed 33 k
php-pear-Date noarch 1.4.7-2.el5.centos installed 402 k
php-pear-File noarch 1.2.2-1.el5.centos installed 74 k
php-pear-HTTP-Request noarch 1.4.2-1.el5.centos installed 70 k
php-pear-Log noarch 1.9.13-1.el5.centos installed 204 k
php-pear-MDB2 noarch 2.4.1-2.el5.centos installed 724 k
php-pear-MDB2-Driver-mysql noarch 1.4.1-3.el5.centos installed 184 k
php-pear-Mail noarch 1.1.14-1.el5.centos installed 85 k
php-pear-Mail-Mime noarch 1.4.0-1.el5.centos installed 126 k
php-pear-Net-SMTP noarch 1.2.10-1.el5.centos installed 50 k
php-pear-Net-Sieve noarch 1.1.5-2.el5.centos installed 253 k
php-pear-Net-Socket noarch 1.0.8-1.el5.centos installed 26 k
php-pear-Net-URL noarch 1.0.15-1.el5.centos installed 26 k
php-pear-db noarch 1.7.13-2.el5.rf installed 676 k
php-tidy x86_64 5.1.6-15.el5.centos.1 installed 46 k
Removing for dependencies:
dovecot x86_64 1.0.7-7.el5 installed 3.7 M
mysql-server x86_64 5.0.77-4.el5_5.4 installed 22 M
perl-DBD-MySQL x86_64 3.0007-2.el5 installed 328 k
Transaction Summary
================================================================================
Remove 27 Package(s)
Reinstall 0 Package(s)
Downgrade 0 Package(s)
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : php-pear-Net-Sieve 1/27
Erasing : php-common 2/27
警告: /etc/php.ini は /etc/php.ini.rpmsave として保存されました。
Erasing : php-mbstring 3/27
Erasing : php-pdo 4/27
Erasing : php-pear-Mail 5/27
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/pdo_mysql.so’ – /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Erasing : php-pear-Date 6/27
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/pdo_mysql.so’ – /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
Erasing : php-tidy 7/27
Erasing : php-mysql 8/27
Erasing : php-pear-Net-SMTP 9/27
Erasing : php-devel 10/27
Erasing : php-pear-MDB2 11/27
Erasing : php 12/27
Erasing : php-pear-MDB2-Driver-mysql 13/27
Erasing : php-pear-Net-URL 14/27
Erasing : mysql 15/27
警告: /etc/my.cnf は /etc/my.cnf.rpmsave として保存されました。
Erasing : mysql-server 16/27
警告: /var/log/mysqld.log は /var/log/mysqld.log.rpmsave として保存されました。
Erasing : php-pear-Mail-Mime 17/27
Erasing : php-cli 18/27
Erasing : dovecot 19/27
警告: /etc/dovecot.conf は /etc/dovecot.conf.rpmsave として保存されました。
Erasing : php-pear-File 20/27
/usr/bin/pear: line 2: /usr/bin/php: そのようなファイルやディレクトリはありません
/usr/bin/pear: line 2: exec: /usr/bin/php: cannot execute: そのようなファイルやディレクトリはありません
Erasing : php-pear-db 21/27
Erasing : php-pear-Auth-SASL 22/27
/usr/bin/pear: line 2: /usr/bin/php: そのようなファイルやディレクトリはありません
/usr/bin/pear: line 2: exec: /usr/bin/php: cannot execute: そのようなファイルやディレクトリはありません
Erasing : php-pear-Net-Socket 23/27
/usr/bin/pear: line 2: /usr/bin/php: そのようなファイルやディレクトリはありません
/usr/bin/pear: line 2: exec: /usr/bin/php: cannot execute: そのようなファイルやディレクトリはありません
Erasing : php-pear-HTTP-Request 24/27
/usr/bin/pear: line 2: /usr/bin/php: そのようなファイルやディレクトリはありません
/usr/bin/pear: line 2: exec: /usr/bin/php: cannot execute: そのようなファイルやディレクトリはありません
Erasing : php-pear-Log 25/27
/usr/bin/pear: line 2: /usr/bin/php: そのようなファイルやディレクトリはありません
/usr/bin/pear: line 2: exec: /usr/bin/php: cannot execute: そのようなファイルやディレクトリはありません
Erasing : perl-DBD-MySQL 26/27
Erasing : php-pear 27/27
Removed:
mysql.x86_64 0:5.0.77-4.el5_5.4 php.x86_64 0:5.1.6-27.el5_5.3 php-cli.x86_64 0:5.1.6-27.el5_5.3 php-common.x86_64 0:5.1.6-27.el5_5.3
php-devel.x86_64 0:5.1.6-27.el5_5.3 php-mbstring.x86_64 0:5.1.6-27.el5_5.3 php-mysql.x86_64 0:5.1.6-27.el5_5.3 php-pdo.x86_64 0:5.1.6-27.el5_5.3
php-pear.noarch 1:1.4.9-6.el5 php-pear-Auth-SASL.noarch 0:1.0.2-4.el5.centos php-pear-Date.noarch 0:1.4.7-2.el5.centos php-pear-File.noarch 0:1.2.2-1.el5.centos
php-pear-HTTP-Request.noarch 0:1.4.2-1.el5.centos php-pear-Log.noarch 0:1.9.13-1.el5.centos php-pear-MDB2.noarch 0:2.4.1-2.el5.centos php-pear-MDB2-Driver-mysql.noarch 0:1.4.1-3.el5.centos
php-pear-Mail.noarch 0:1.1.14-1.el5.centos php-pear-Mail-Mime.noarch 0:1.4.0-1.el5.centos php-pear-Net-SMTP.noarch 0:1.2.10-1.el5.centos php-pear-Net-Sieve.noarch 0:1.1.5-2.el5.centos
php-pear-Net-Socket.noarch 0:1.0.8-1.el5.centos php-pear-Net-URL.noarch 0:1.0.15-1.el5.centos php-pear-db.noarch 0:1.7.13-2.el5.rf php-tidy.x86_64 0:5.1.6-15.el5.centos.1
Dependency Removed:
dovecot.x86_64 0:1.0.7-7.el5 mysql-server.x86_64 0:5.0.77-4.el5_5.4 perl-DBD-MySQL.x86_64 0:3.0007-2.el5
Complete!
[/shell]
アンインストールしたパッケージを全て入れ直します。
[shell]
# yum install php-pear-Net-Sieve php-common php-mbstring php-pdo php-pear-Mail php-tidy php-mysql php-pear-Net-SMTP php-devel php-pear-MDB2 php php-pear-MDB2-Driver-mysql php-pear-Net-URL mysql mysql-server php-pear-Mail-Mime php-cli dovecot php-pear-File php-pear-db php-pear-Auth-SASL php-pear-Net-Socket php-pear-HTTP-Request php-pear-Log perl-DBD-MySQL php-pear … –enablerepo=remi
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: ftp.nara.wide.ad.jp
* base: ftp.nara.wide.ad.jp
* epel: ftp.iij.ad.jp
* extras: ftp.nara.wide.ad.jp
* remi: rpms.famillecollet.com
* rpmforge: fr2.rpmfind.net
* updates: ftp.nara.wide.ad.jp
addons | 951 B 00:00
base | 2.1 kB 00:00
epel | 3.7 kB 00:00
epel/primary_db | 3.4 MB 00:00
extras | 2.1 kB 00:00
remi | 2.6 kB 00:00
remi/primary_db | 237 kB 00:01
rpmforge | 1.1 kB 00:00
updates | 1.9 kB 00:00
updates/primary_db | 1.0 MB 00:00
Setting up Install Process
No package … available.
Resolving Dependencies
–> Running transaction check
—> Package dovecot.x86_64 0:1.0.7-7.el5 set to be updated
–> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) for package: dovecot
–> Processing Dependency: libmysqlclient.so.15()(64bit) for package: dovecot
—> Package mysql.i386 0:5.0.77-4.el5_5.4 set to be updated
—> Package mysql.x86_64 0:5.1.53-1.el5.remi set to be updated
–> Processing Dependency: mysql-libs = 5.1.53-1.el5.remi for package: mysql
–> Processing Dependency: libmysqlclient_r.so.16(libmysqlclient_16)(64bit) for package: mysql
–> Processing Dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit) for package: mysql
–> Processing Dependency: libmysqlclient.so.16()(64bit) for package: mysql
–> Processing Dependency: libmysqlclient_r.so.16()(64bit) for package: mysql
—> Package mysql-server.x86_64 0:5.1.53-1.el5.remi set to be updated
—> Package perl-DBD-MySQL.x86_64 0:3.0007-2.el5 set to be updated
—> Package php.x86_64 0:5.3.4-1.el5.remi set to be updated
—> Package php-cli.x86_64 0:5.3.4-1.el5.remi set to be updated
–> Processing Dependency: libedit.so.0()(64bit) for package: php-cli
—> Package php-common.x86_64 0:5.3.4-1.el5.remi set to be updated
—> Package php-devel.x86_64 0:5.3.4-1.el5.remi set to be updated
—> Package php-mbstring.x86_64 0:5.3.4-1.el5.remi set to be updated
—> Package php-mysql.x86_64 0:5.3.4-1.el5.remi set to be updated
—> Package php-pdo.x86_64 0:5.3.4-1.el5.remi set to be updated
—> Package php-pear.noarch 1:1.9.1-6.el5.remi set to be updated
—> Package php-pear-Auth-SASL.noarch 0:1.0.4-1.el5.remi set to be updated
—> Package php-pear-File.noarch 0:1.3.0-2.el5.remi set to be updated
—> Package php-pear-HTTP-Request.noarch 0:1.4.4-1.el5.remi set to be updated
—> Package php-pear-Log.noarch 0:1.12.4-1.el5.remi.1 set to be updated
—> Package php-pear-MDB2.noarch 0:2.4.1-2.el5.centos set to be updated
—> Package php-pear-MDB2-Driver-mysql.noarch 0:1.4.1-3.el5.centos set to be updated
—> Package php-pear-Mail.noarch 0:1.2.0-1.el5.remi set to be updated
—> Package php-pear-Mail-Mime.noarch 0:1.8.1-1.el5.remi set to be updated
—> Package php-pear-Net-SMTP.noarch 0:1.4.4-1.el5.remi set to be updated
—> Package php-pear-Net-Sieve.noarch 0:1.3.0-1.el5.remi set to be updated
—> Package php-pear-Net-Socket.noarch 0:1.0.10-1.el5.remi set to be updated
—> Package php-pear-Net-URL.noarch 0:1.0.15-1.el5.centos set to be updated
—> Package php-pear-db.noarch 0:1.7.13-2.el5.rf set to be updated
—> Package php-tidy.x86_64 0:5.3.4-1.el5.remi set to be updated
–> Running transaction check
—> Package libedit.x86_64 0:20090923-3.0_1.el5.rf set to be updated
—> Package mysql-libs.x86_64 0:5.1.53-1.el5.remi set to be updated
—> Package mysqlclient15.x86_64 0:5.0.67-1.el5.remi set to be updated
–> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================================================================
Installing:
dovecot x86_64 1.0.7-7.el5 base 1.7 M
mysql i386 5.0.77-4.el5_5.4 updates 4.8 M
mysql x86_64 5.1.53-1.el5.remi remi 1.1 M
mysql-server x86_64 5.1.53-1.el5.remi remi 11 M
perl-DBD-MySQL x86_64 3.0007-2.el5 base 148 k
php x86_64 5.3.4-1.el5.remi remi 1.4 M
php-cli x86_64 5.3.4-1.el5.remi remi 2.6 M
php-common x86_64 5.3.4-1.el5.remi remi 968 k
php-devel x86_64 5.3.4-1.el5.remi remi 622 k
php-mbstring x86_64 5.3.4-1.el5.remi remi 2.3 M
php-mysql x86_64 5.3.4-1.el5.remi remi 157 k
php-pdo x86_64 5.3.4-1.el5.remi remi 116 k
php-pear noarch 1:1.9.1-6.el5.remi remi 433 k
php-pear-Auth-SASL noarch 1.0.4-1.el5.remi remi 11 k
php-pear-File noarch 1.3.0-2.el5.remi remi 37 k
php-pear-HTTP-Request noarch 1.4.4-1.el5.remi remi 22 k
php-pear-Log noarch 1.12.4-1.el5.remi.1 remi 60 k
php-pear-MDB2 noarch 2.4.1-2.el5.centos extras 132 k
php-pear-MDB2-Driver-mysql noarch 1.4.1-3.el5.centos extras 41 k
php-pear-Mail noarch 1.2.0-1.el5.remi remi 29 k
php-pear-Mail-Mime noarch 1.8.1-1.el5.remi remi 42 k
php-pear-Net-SMTP noarch 1.4.4-1.el5.remi remi 19 k
php-pear-Net-Sieve noarch 1.3.0-1.el5.remi remi 20 k
php-pear-Net-Socket noarch 1.0.10-1.el5.remi remi 11 k
php-pear-Net-URL noarch 1.0.15-1.el5.centos extras 9.7 k
php-pear-db noarch 1.7.13-2.el5.rf rpmforge 139 k
php-tidy x86_64 5.3.4-1.el5.remi remi 51 k
Installing for dependencies:
libedit x86_64 20090923-3.0_1.el5.rf rpmforge 272 k
mysql-libs x86_64 5.1.53-1.el5.remi remi 1.7 M
mysqlclient15 x86_64 5.0.67-1.el5.remi remi 1.3 M
Transaction Summary
==================================================================================================================================================================================================================
Install 30 Package(s)
Upgrade 0 Package(s)
Total download size: 31 M
Is this ok [y/N]: y
Downloading Packages:
(1/30): php-pear-Net-URL-1.0.15-1.el5.centos.noarch.rpm | 9.7 kB 00:00
(2/30): php-pear-Net-Socket-1.0.10-1.el5.remi.noarch.rpm | 11 kB 00:00
(3/30): php-pear-Auth-SASL-1.0.4-1.el5.remi.noarch.rpm | 11 kB 00:00
(4/30): php-pear-Net-SMTP-1.4.4-1.el5.remi.noarch.rpm | 19 kB 00:00
(5/30): php-pear-Net-Sieve-1.3.0-1.el5.remi.noarch.rpm | 20 kB 00:00
(6/30): php-pear-HTTP-Request-1.4.4-1.el5.remi.noarch.rpm | 22 kB 00:00
(7/30): php-pear-Mail-1.2.0-1.el5.remi.noarch.rpm | 29 kB 00:00
(8/30): php-pear-File-1.3.0-2.el5.remi.noarch.rpm | 37 kB 00:00
(9/30): php-pear-MDB2-Driver-mysql-1.4.1-3.el5.centos.noarch.rpm | 41 kB 00:00
(10/30): php-pear-Mail-Mime-1.8.1-1.el5.remi.noarch.rpm | 42 kB 00:00
(11/30): php-tidy-5.3.4-1.el5.remi.x86_64.rpm | 51 kB 00:00
(12/30): php-pear-Log-1.12.4-1.el5.remi.1.noarch.rpm | 60 kB 00:00
(13/30): php-pdo-5.3.4-1.el5.remi.x86_64.rpm | 116 kB 00:01
(14/30): php-pear-MDB2-2.4.1-2.el5.centos.noarch.rpm | 132 kB 00:00
(15/30): php-pear-db-1.7.13-2.el5.rf.noarch.rpm | 139 kB 00:01
(16/30): perl-DBD-MySQL-3.0007-2.el5.x86_64.rpm | 148 kB 00:00
(17/30): php-mysql-5.3.4-1.el5.remi.x86_64.rpm | 157 kB 00:01
(18/30): libedit-20090923-3.0_1.el5.rf.x86_64.rpm | 272 kB 00:02
(19/30): php-pear-1.9.1-6.el5.remi.noarch.rpm | 433 kB 00:02
(20/30): php-devel-5.3.4-1.el5.remi.x86_64.rpm | 622 kB 00:02
(21/30): php-common-5.3.4-1.el5.remi.x86_64.rpm | 968 kB 00:03
(22/30): mysql-5.1.53-1.el5.remi.x86_64.rpm | 1.1 MB 00:03
(23/30): mysqlclient15-5.0.67-1.el5.remi.x86_64.rpm | 1.3 MB 00:03
(24/30): php-5.3.4-1.el5.remi.x86_64.rpm | 1.4 MB 00:03
(25/30): dovecot-1.0.7-7.el5.x86_64.rpm | 1.7 MB 00:00
(26/30): mysql-libs-5.1.53-1.el5.remi.x86_64.rpm | 1.7 MB 00:04
(27/30): php-mbstring-5.3.4-1.el5.remi.x86_64.rpm | 2.3 MB 00:04
(28/30): php-cli-5.3.4-1.el5.remi.x86_64.rpm | 2.6 MB 00:04
(29/30): mysql-5.0.77-4.el5_5.4.i386.rpm | 4.8 MB 00:00
(30/30): mysql-server-5.1.53-1.el5.remi.x86_64.rpm | 11 MB 00:09
——————————————————————————————————————————————————————————————————————
Total 464 kB/s | 31 MB 01:07
警告: rpmts_HdrFromFdno: ヘッダ V3 DSA signature: NOKEY, key ID 00f97f56
remi/gpgkey | 1.3 kB 00:00
Importing GPG key 0x00F97F56 “Remi Collet <RPMS@FamilleCollet.com>” from /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Is this ok [y/N]:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
WARNING : This php-* RPM are not official Fedora/Redhat build and
overrides the official ones. Don’t file bugs on Fedora Project nor Redhat.
Use dedicated forums http://forums.famillecollet.com/
Installing : php-common 1/30
WARNING : This MySQL RPM is not an official Fedora/Redhat build and it
overrides the official one. Don’t file bugs on Fedora Project nor Redhat.
Use dedicated forums http://forums.famillecollet.com/
Installing : mysql-libs 2/30
Installing : mysqlclient15 3/30
Installing : perl-DBD-MySQL 4/30
Installing : mysql 5/30
Installing : php-mbstring 6/30
Installing : php-pdo 7/30
Installing : libedit 8/30
Installing : php-cli 9/30
Installing : php 10/30
Installing : php-mysql 11/30
Installing : mysql-server 12/30
Installing : dovecot 13/30
Installing : php-tidy 14/30
Installing : mysql 15/30
Installing : php-pear 16/30
Installing : php-pear-Net-Socket 17/30
Installing : php-pear-MDB2 18/30
Installing : php-pear-Auth-SASL 19/30
Installing : php-pear-Net-SMTP 20/30
Installing : php-pear-Mail 21/30
Installing : php-pear-Net-URL 22/30
Installing : php-pear-db 23/30
Installing : php-pear-File 24/30
Installing : php-pear-Log 25/30
Installing : php-devel 26/30
Installing : php-pear-HTTP-Request 27/30
Installing : php-pear-Net-Sieve 28/30
Installing : php-pear-MDB2-Driver-mysql 29/30
Installing : php-pear-Mail-Mime 30/30
Installed:
dovecot.x86_64 0:1.0.7-7.el5 mysql.i386 0:5.0.77-4.el5_5.4 mysql.x86_64 0:5.1.53-1.el5.remi mysql-server.x86_64 0:5.1.53-1.el5.remi
perl-DBD-MySQL.x86_64 0:3.0007-2.el5 php.x86_64 0:5.3.4-1.el5.remi php-cli.x86_64 0:5.3.4-1.el5.remi php-common.x86_64 0:5.3.4-1.el5.remi
php-devel.x86_64 0:5.3.4-1.el5.remi php-mbstring.x86_64 0:5.3.4-1.el5.remi php-mysql.x86_64 0:5.3.4-1.el5.remi php-pdo.x86_64 0:5.3.4-1.el5.remi
php-pear.noarch 1:1.9.1-6.el5.remi php-pear-Auth-SASL.noarch 0:1.0.4-1.el5.remi php-pear-File.noarch 0:1.3.0-2.el5.remi php-pear-HTTP-Request.noarch 0:1.4.4-1.el5.remi
php-pear-Log.noarch 0:1.12.4-1.el5.remi.1 php-pear-MDB2.noarch 0:2.4.1-2.el5.centos php-pear-MDB2-Driver-mysql.noarch 0:1.4.1-3.el5.centos php-pear-Mail.noarch 0:1.2.0-1.el5.remi
php-pear-Mail-Mime.noarch 0:1.8.1-1.el5.remi php-pear-Net-SMTP.noarch 0:1.4.4-1.el5.remi php-pear-Net-Sieve.noarch 0:1.3.0-1.el5.remi php-pear-Net-Socket.noarch 0:1.0.10-1.el5.remi
php-pear-Net-URL.noarch 0:1.0.15-1.el5.centos php-pear-db.noarch 0:1.7.13-2.el5.rf php-tidy.x86_64 0:5.3.4-1.el5.remi
Dependency Installed:
libedit.x86_64 0:20090923-3.0_1.el5.rf mysql-libs.x86_64 0:5.1.53-1.el5.remi mysqlclient15.x86_64 0:5.0.67-1.el5.remi
Complete!
[/shell]
これで完了。ひとまずPHPとMySQLのバージョンを確認してみる。
この時点ではまだWEB上で稼動しているPHPとMySQLには新バージョンは適用されていない。
[shell]
# php -v
PHP 5.3.4 (cli) (built: Dec 11 2010 18:28:50)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
# rpm -qa | grep php | sort
php-5.3.4-1.el5.remi
php-cli-5.3.4-1.el5.remi
php-common-5.3.4-1.el5.remi
php-devel-5.3.4-1.el5.remi
php-mbstring-5.3.4-1.el5.remi
php-mysql-5.3.4-1.el5.remi
php-pdo-5.3.4-1.el5.remi
php-pear-1.9.1-6.el5.remi
php-pear-Auth-SASL-1.0.4-1.el5.remi
php-pear-File-1.3.0-2.el5.remi
php-pear-HTTP-Request-1.4.4-1.el5.remi
php-pear-Log-1.12.4-1.el5.remi.1
php-pear-MDB2-2.4.1-2.el5.centos
php-pear-MDB2-Driver-mysql-1.4.1-3.el5.centos
php-pear-Mail-1.2.0-1.el5.remi
php-pear-Mail-Mime-1.8.1-1.el5.remi
php-pear-Net-SMTP-1.4.4-1.el5.remi
php-pear-Net-Sieve-1.3.0-1.el5.remi
php-pear-Net-Socket-1.0.10-1.el5.remi
php-pear-Net-URL-1.0.15-1.el5.centos
php-pear-db-1.7.13-2.el5.rf
php-tidy-5.3.4-1.el5.remi
# mysql –version
mysql Ver 14.14 Distrib 5.1.53, for redhat-linux-gnu (x86_64) using readline 5.1
# rpm -qa | grep mysql | sort
mysql-5.0.77-4.el5_5.4
mysql-5.1.53-1.el5.remi
mysql-libs-5.1.53-1.el5.remi
mysql-server-5.1.53-1.el5.remi
mysqlclient15-5.0.67-1.el5.remi
php-mysql-5.3.4-1.el5.remi
php-pear-MDB2-Driver-mysql-1.4.1-3.el5.centos
[/shell]
例によってphp.iniを編集します。
[shell]
$ cp /etc/php.ini /etc/php.ini.rpmnew
$ vi /etc/php.ini
[/shell]
[shell]
;; Disable Output Buffering
output_buffering = Off
;; Set HTTP header charset
; default_charset = EUC-JP
;; Set default language to Japanese
mbstring.language = Japanese
;; HTTP input encoding translation is enabled.
mbstring.encoding_translation = off
;; Set HTTP input encoding conversion to auto
mbstring.http_input = pass
;; Convert HTTP output to EUC-JP
mbstring.http_output = pass
;; Set internal encoding to EUC-JP
mbstring.internal_encoding = EUC-JP
;; Do not print invalid characters
mbstring.substitute_character = none
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
date.timezone =”Asia/Tokyo”
[/shell]
その他、こまごま修正。
保存して、Apacheを再起動。
[shell]
# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [Mon Dec 13 04:05:29 2010] [warn] module php5_module is already loaded, skipping
[ OK ]
[/shell]

再起動後に、phpinfoで確認すると、しっかりとバージョンが反映されていることが確認できました。
Wordpress 3.03にも今のところ影響ゼロ。
次回はSymfonyをインストールしてみましょう。

参考サイト:
【CentOS 5.5にPHP 5.3.3とMySQL 5.1.51を入れる】
http://d.hatena.ne.jp/water-moon/20101102/1288691756

【PHPの文字化けを本気で解決する】
http://hain.jp/index.php/tech-j/2007/02/13/%EF%BC%B0%EF%BC%A8%EF%BC%B0%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91

radikoをCentOSで録音して、Dropboxを使ってiPhoneにも同期。

さて、前回のブログで書いた「さくらのVPSを使って、rtmpdumpでradikoを録音する」の続きです。

さくらのVPS上で録音できたはいいものの、flvでdumpしてきていたのでiPhoneで聴けないしファイルサイズも大きいし、というところが個人的にはとてもネックでした。

flvをmp3に変換するのはいいとして、どのように同期させるか悩んでいたところにDropboxではどうだろうと思いました。

もし、さくらのVPSにDropboxをインストール出来るのなら、あらゆる問題が一気に解決しそうです。
ということで、やってみました。

DropboxのCLI版のインストールにはPython 2.5以上が必要なので、まずはそちらをインストール。

[shell]

$ wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
$ tar xvzf Python-2.7.1.tgz
$ cd Python-2.7.1
$ ./configure –prefix=/usr/local/Python-2.7.1
$ make
$ su make install

[/shell]

Dropboxのダウンロードを行います。
さくらのVPS標準OSはCentOS 5.5 x86_64なので、間違えないように。

[shell]

$ cd
$ wget -O dropbox.tar.gz “http://www.dropbox.com/download/?plat=lnx.x86_64”
$ tar -tzf dropbox.tar.gz
$ tar -xvzf dropbox.tar.gz
$ wget http://dl.getdropbox.com/u/6995/dbmakefakelib.py
$ wget http://dl.getdropbox.com/u/6995/dbreadconfig.py
$ wget http://www.getdropbox.com/download?dl=packages/dropbox.py

[/shell]

これで起動します。

[shell]

$ ~/.dropbox-dist/dropboxd &

This client is not linked to any account…

Please visit https://www.dropbox.com/cli_link?host_id=7d44a557aa58f285f2da0x67334d02c1 to link this machine.
[/shell]

すると、初回起動時は上記のようにこちらにアクセス!のようなリンクが表示されるので、ブラウザからアクセスしてください。
ログインすることでユーザを判断するようです。

[shell]

$ /usr/local/Python-2.7.1/bin/python ~/dropbox.py status
Downloading 1 file (754.9 KB/sec, 14 min left)

[/shell]

上記のコマンドで、ステータスを確認すると、同期中であることが分かります。

試しに~/Dropboxの中にファイルを作ってみました。

[shell]

vi ~/Dropbox/Public/test.txt

[/shell]

保存とほぼ同じタイミングで、Windowsクライアントでの同期が確認されました。

参考:
http://www.hyk-home.com/blog/infra/archives/2009/05/05-202601-137.html
http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall

次は、録音終了と共にFLVをmp3に変換します。こうしないとiPhoneで聴くことができません。

まずはテスト。

[shell]

$ ffmpeg -y -i TBS_BAKUSHO_20101201T010001.flv -acodec libmp3lame TBS_BAKUSHO_20101201T010001.mp3

[/shell]

このままだと何故かファイルサイズが1.4倍くらいになってしまった。
2時間番組を録音するとFLV形式でも40MB以上になるので、mp3にしたらせめて2/3にはなってほしい。

ビットレートやサンプリング周波数を変更してみる。

[shell]

$ ffmpeg -y -i TBS_BAKUSHO_20101201T010001.flv -ab 16 -acodec libmp3lame TBS_BAKUSHO_20101201T010001.mp3

[/shell]

できたファイルは変わらず55MB。出来上がったmp3ファイルを調べてみるとビットレートに変化がない。
オプションが効いていない。。

もっと小さいファイルで実験しよう。下記のようにオプションの指定方法を変更。

[shell]

$  ffmpeg -y -i TBS_radiko_20101211T155501.flv -ab 32000 -ar 24000 -acodec libmp3lame TBS_radiko_20101211T155501.mp3

[/shell]

こうすると見事にファイルサイズは小さくなりました。
試しにこのタイミングでDropboxにファイルをつっこみ、iPhoneで再生を確認できました。

先ほどの爆笑問題の2時間番組をこの方法でmp3にしてみる。どのくらいのファイルサイズになるだろうか。

[shell]

$ ffmpeg -y -i TBS_BAKUSHO_20101201T010001.flv -ab 32000 -ar 24000 -acodec libmp3lame TBS_BAKUSHO_20101201T010001.mp3

[/shell]

結果は28MBほどに。音質の劣化もそこまで酷くないので、ひとまずはこれでいきますか。

これを、cronが実行するファイルにも書き加え、元ファイルのflvを削除するように変更。

1分間の動作テストを行う。

[shell]

$ ~/bin/radiko TBS 1 radiko >>$HOME/radio/radiko.log 2>&1 &

[/shell]

mp3の空のファイルが作成されるだけで、うまくいかない。。
試行錯誤のすえ、標準出力をログファイルに吐き出すと何故かmp3の部分で止まってしまっていた。
ので、標準出力はすべて破棄するように変更。

[shell]

$ ~/bin/radiko TBS 1 radiko > /dev/null 2>&1

[/shell]

併せてcrontabも変更。

[shell]

$ crontab -e

[/shell]

[shell]

# JUNK 伊集院光 深夜の馬鹿力 (TBS RADIO Mon. 1:00-3:00)
0 1 * * Tue   $HOME/bin/radiko TBS 120 IJYUIN > /dev/null  2>&1
# JUNK 爆笑問題カーボーイ (TBS RADIO Tue. 1:00-3:00)
0 1 * * Wed   $HOME/bin/radiko TBS 120 BAKUSHO > /dev/null 2>&1
# JUNK 山里亮太の不毛な議論 (TBS RADIO Wed. 1:00-3:00)
0 1 * * Thu   $HOME/bin/radiko TBS 120 YAMASATO > /dev/null 2>&1
# JUNK おぎやはぎのメガネびいき (TBS RADIO Thu. 1:00-3:00)
0 1 * * Fri   $HOME/bin/radiko TBS 120 OGIYAHAGI > /dev/null 2>&1
# JUNK バナナマンのバナナムーンGOLD (TBS RADIO Fri. 1:00-3:00)
0 1 * * Sat   $HOME/bin/radiko TBS 120 BANANAMAN > /dev/null 2>&1
# recording test
53 16 * * Sat   $HOME/bin/radiko TBS 1 radiko > /dev/null 2>&1

[/shell]

実際に1分間の録音の動作確認ができた。ファイルサイズも小さくなったのでめでたし。
次は、Dropboxにもコピーする。できればシンボリックリンクがいい。そこで、テスト。

[shell]

$ ln -s TBS_radiko_20101211T164412.mp3 ~/Dropbox/Public/link.mp3

[/shell]

シンボリックリンクを作成してみるも、Dropboxには認識されない。
そこで、ハードリンクに切り替えてみる。

[shell]

$ ln TBS_radiko_20101211T164412.mp3 ~/Dropbox/Public/link.mp3

[/shell]

こちらだと問題なさそうなので、録音終了後にDropboxにハードリンクを追加する作業をするようにする。

これで、録音が完了するとmp3へ変換→元ファイル削除→Dropboxのフォルダへハードリンク追加まで完了。
これによりiPhone同期、Windows同期まで完成。

■WEB上でmp3を再生できるようにする

これを利用。超簡単にシンプルなmp3プレーヤーがくっつけられる。

http://1bit.markwheeler.net/

ファイルが増えても更新が不要なので、非常に便利。

■mysqlで録音したものを管理するためにテーブルを作成

[sql]

CREATE TABLE radio_list (
uid int(5) auto_increment PRIMARY KEY,
pid int(5) DEFAULT ‘0’ NOT NULL,
filename varchar(100),
time int(5),
recorded_on DATETIME
);

CREATE TABLE radio_program (
pid int(5) auto_increment PRIMARY KEY,
program varchar(100)
);

insert into radio_program (program) values(‘伊集院光の深夜の馬鹿力’);
insert into radio_program (program) values(‘爆笑問題カーボーイ’);
insert into radio_program (program) values(‘山里亮太の不毛な議論’);
insert into radio_program (program) values(‘おぎやはぎのメガネびいき’);
insert into radio_program (program) values(‘バナナマンのバナナムーンGOLD’);
insert into radio_program (program) values(‘テスト用録音’);

[/sql]

こんな感じです。
他にもお気に入りの番組があれば、そちらも登録していきますが、今のところはJUNKだけで十分です。

あとは、ひたすらラジオのコンテンツが降ってくるのを待つだけ!やったね!
本心としては公開したいですが著作権が絡むため、そんなことはやっちゃいけません。
完全に個人利用です。

なので、URLは載せられませんがサイトのイメージとしてはこんな感じですよ。

今後は、大阪のラジオを聴くためにどうにかしたいのと、エラーを極力なくしていくことですね。
radiko側の問題もありますが、万が一エラーになった場合に、自動でリトライする仕組みを作っていきたいと思います。

ラジオ業界が、radiko.jpによってさらに盛り上がっていくことを願っています。
「○○しながら」視聴できるメディアの強みを活かして、面白いことをどんどんやってください!
前のエントリーでも書きましたが、radikoには是非ともオープン化の道へ進んでいって欲しいと思います。

TBSラジオのJUNKの大ファンとして、まずは一度生で聴いてみることをおすすめします!

TBS RADIO JUNK

それでは!

※これは第1回8maki開発合宿中に作ったもののレポートでもあります。

@8maki
@twitbn
@hyshhryk
@pggm
@twginriki
@pandeiro245
@shinout
@chicken800

みなさん、お疲れさまでした。
そして、諸々取り仕切ってくれた@8makiくん、本当にありがとうございました!

さくらのVPSを使って、rtmpdumpでradikoを録音する

インターネットでAM/FMラジオが聴けるradikoが長い実験期間を経て、法人化することになりました。

■「ラジオ復活を」 好調radikoが会社化、名古屋などエリア拡大
http://www.itmedia.co.jp/news/articles/1011/25/news077.html

これまで関東の番組は東京都、神奈川県、千葉県、埼玉県で、関西の番組は大阪府、京都府、兵庫県、奈良県で聴取できたが、12月1日からエリアを拡大。関東の番組は茨城県、群馬県、栃木県でも、関西の番組は滋賀県、和歌山県でも聴けるようになる。

ラジオファンとしてはとても嬉しいです。

かくいう僕もインターネットで聴けるようになってから、ヘビーリスナーになりました。

特にTBSラジオのJUNKは毎週録音して聴くのはもちろん、ポッドキャストも欠かさず聴いています。

この機会にさくらのVPSサーバ(CentOS)を使って、radikoを録音できるか試してみました。
サーバは関東エリアにあるのか不安でしたが、幸いにも東京エリアの聴取範囲だったみたいです。
大阪エリアのさくらのVPSのユーザさんもいるようでしたので、調べてみてください。
幸いにも、rtmpdumpを使用してradikoを録音するということは既にたくさんチャレンジしている方がいたので、とても助かりました。

まず、rtmpdumpをダウンロード。

[shell]

$ mkdir ~/tmp
$ cd ~/tmp
$ wget http://rtmpdump.mplayerhq.hu/download/rtmpdump-2.3.tgz
$ tar -xzf rtmpdump-2.3.tgz

[/shell]

解凍したディレクトリに移動し、makeします。

[shell]
$ cd rtmpdump-2.3
$ make SYS=posix
[/shell]

最新バージョンでは、SYS=posixとしないとダメっぽいです。
しかし、エラー。
調べてみるとopenssl-develが必要らしい。
なので、

[shell]
$ sudo yum install openssl-devel
[/shell]

もう一度makeします。

[shell]
$ make SYS=posix
[/shell]

これでできたっぽいので、実行ファイルを/usr/local/binへインストール。

[shell]
$ sudo cp -p rtmpdump rtmpgw rtmpsrv rtmpsuck /usr/local/bin
[/shell]

以下のコマンドを実行して、ヘルプメッセージが出れば成功。

[shell]
$ rtmpdump -h
[/shell]

以下のコマンドでテスト録音。
この場合は、TBSラジオを30秒間録音(出力ファイルはoutput.flv)します。
radiko側の仕様変更が頻繁にあるようで、うまくいかなくなってしまうようです。

[shell]
$ rtmpdump –rtmp rtmpe://radiko.smartstream.ne.jp/ –port 1935 –app TBS/_defInst_ –playpath simul-stream –swfUrl http://radiko-dl.ssdl1.smartstream.ne.jp/radiko-dl/1.1/player/player_0.1.2.swf –pageUrl http://radiko.jp/player/player.html#TBS –flashVer “LNX 10,0,45,2” –live –stop 30 –flv output.flv
[/shell]

出来上がったファイルを、一度Windowsへダウンロードして聴いてみる。
うまくいったっぽいので、flvをmp3へエンコードするためffmpegを入れることにする。

[shell]
$ cd ~/tmp
$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
$ rpm -Uhv rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
$ yum update
$ yum -y install automake libtool libogg-devel livtheora-devel
$ yum -y install ffmpeg
[/shell]

さきほど録音したoutput.flvをエンコード。

[shell]
$ ffmpeg -y -i output.flv -ac 1 -ab 32 output.mp3
[/shell]

これを実行すると、、

[shell]
[aac @ 0x12520230]SBR not implemented. Update your FFmpeg version to the newest one from SVN. If the problem still occurs, it means that your file has a feature which has not been implemented.
[/shell]

このようなメッセージがドバーっと出てきますが、mp3ファイルは無事に生成されています。

参考サイト:
radikoで録音
radikoを録音して後で聞くためのプログラムを作ってみた

ラジオ好きとしては、せっかくなので是非ともradikoもオープン化して頂きたいです。
テレビのように私的利用目的以外に使われる事を恐れて、ガチガチに縛るのは好ましくないと思っています。
radikoには、録音を阻止するという方向には進んで欲しくありません。新たなビジネスに乗り出してください。