CentOS7を触ってみた感想

centOS7を触ったのでメモ。基本的にserviceコマンドやchkconfigコマンドがsystemctlに置き換わった感じ。
デフォルトのDBがMariaDBになってるみたい。MariaDBmysqlのフォークしたものだから基本は同じでmysqlをベースとして独自機能が追加されてる。
まだDBまわりはよくわかってないので、今は基本的な操作のコマンドを見てる。

大きく変わったのは以下の2つのコマンド

・service
・chkconfig

これがsystemctlになった。たぶん普段からサーバを触ってる人にはここが一番の変更点じゃないだろうか。
topとかpsとかはそのままなのでミドルウェアとかサービスの起動、停止、再起動まわりが全部変わった印象。
あとはiptablesがデフォルトでは入っていない。LAMP環境の構築でおなじみのiptablesを無効にする設定が要らなくなった。
もうひとつ。ifconfigがipコマンドに変更された。普段は使わないけどネットワークの設定変更やサーバの初期設定時に使用するので意外と重要かもしれない。
あと、気になったのはサーバの起動時間を表示するコマンドが追加された。
systemd-analyze

Startup finished in 378ms (kernel) + 2.219s (initrd) + 27.887s (userspace) = 30.485s

こんな感じで表示してくれる。
詳細を見ることもできる。systemd-analyze blameとすると各サービスやデーモンの起動にどれくらい時間がかかったかを確認できる。

systemd-analyze blame | head -20

とすると上位20件が見れて便利。

         13.278s td-agent.service
          9.694s mariadb.service
          8.555s postfix.service

上位3件はこの方達でした。postfixは使わないので停止します。

vagrant upできない

vagrantのboxファイルから環境を作ってvagrant upとやると以下のようなエラーが出た。

Progress state: E_FAIL
VBoxManage.exe: error: Appliance import failed
VBoxManage.exe: error: Details: code VBOX_E_OBJECT_IN_USE (0x80bb000c), component Medium, interface IMedium
VBoxManage.exe: error: Context: "int __cdecl handleImportAppliance(struct HandlerArg *)" at line 779 of file VBoxManageAppliance.cpp

virtualboxのバージョンを最新にしたけど直らなくて困っていたらvirtualboxのidファイルがないことが原因だった。terurou.hateblo.jp
を参考にして以下にidだけを書いたidというファイル名のファイルを作ってvagrant upしたらちゃんと動いた。

C:\cygwin64\home\hoi\.vagrant\machines\default\virtualbox\

boxファイルから環境を作ったのにidファイルは自動で作られなくて、どのvmを見ればいいのかがわからなくなっていた様子。
idの表示方法はwindowsの場合はコマンドプロンプトで以下に移動して

cd C:\Program Files\Oracle\VirtualBox
VBoxManage list vms

とする。表示される{}の部分はいらないのでidだけを書く。

Cent OS6.3でpecl_httpが動かない

Cent OS6.3でpecl_httpが動かない。インストールはうまくいって
extension=http.soで読み込むモジュールも指定してapacheも再起動したのにうまくいかない。

pecl list
=========================================
Package   Version State
pecl_http 2.0.3   stable

と出るのでちゃんと入ってるはず。ところがphpのエラーログを見ると、

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/http.so' - /usr/lib64/php/modules/http.so: undefined symbol: php_persistent_handle_abandon in Unknown on line 0

と表示される。
ここによると最新のpecl_httpはうまく動かないので一旦削除して古いのを入れると動くとのこと。
2系ではなく1.7系のを入れなおすとうまく動いた。

pecl uninstall pecl_http
pecl install pecl_http-1.7.6

新しければいいってものでもないのね。

これを書いた一年後に気づいたけど、これは別にcentOSpecl_httpが動かないわけではなくて、アプリで使っているpecl_httpが1.7系の関数を使ってて2系にしたら動かなかったって話し。なのでこの記事はなんの参考にもなりません。

windows8でRubyのパスが通らない

Vagrantを使ってみようと思ってVirtualBoxを準備してインストールしてみた。さっそく公式サイトを参考に

vagrant init precise32 http://files.vagrantup.com/precise32.box

としてみる。なんかずらーと表示されて途中で止まってるぽい。Rubyがどうとか言っている。事前にRubyがいるとは書いてなかったんだけど、とりあえずRubyも入れる。RubyInstaller for Windowsからダウンロードしてきてインストール。ちゃんと入ったか見るのにコマンドプロンプト

ruby -v

とやるとpathが通ってないといわれる。インストール時にパスを通す設定にしたのになんでだろうと、と思いつつpathを確認。通ってない。pathを通して、

path

と入力するもさっき通したはずのパスが表示されない。何度
確認しても環境変数にはちゃんとパスが書いてあるのにコマンドプロンプトではパスがないとのこと。
ダメもとで再起動したら無事に表示された。
パスって再起動しないと反映されなかったっけ?再起動をしてくださいのメッセージもなかったし。これで一日無駄にしたよ!

206SHでUSBデバッグをする

しばらくぶりのandroid情報。勉強がてらにSHARPの206SHをUSBでつないでEclipseからデバッグしてみる。android SDKやアプリのプロジェクトはもう作ってあることを前提で、それ以降の手順。

USBドライバを準備する

SH Developers Square - ドライバからUSBドライバをダウンロード。機種によっては事前に別のドライバも入れておかなくてはいけないみたい。詳しくはリンク先を見てね。それが必要なければusb_driver_SHARP_r8.2.zipというのをダウンロードして解凍する。

USBデバッグを有効化

端末の設定からUSBデバッグができるように設定を変更する。android4.2以降は端末のビルド番号という部分を7回タップすると開発者用の設定メニューが表示されるようになる。開発者用の画面が表示されたらUSBデバッグにチェックを入れて有効化。

USBドライバをインストール

USBケーブルでPCと接続。その後、コンピューターを右クリックしてプロパティからデバイスマネージャーを選択する。android deviceというのがあればそれを選択。そこからドライバをインストールするウィザードを表示して
、先ほどダウンロードしたフォルダの中のusb_driver_SHARPというのを選択。これでドライバのインストールが完了。

アプリを転送

Eclipseのプロジェクト画面から実行を選択すると、現在接続されてるデバイスが表示されるので、それを選択してOKを押すとアプリが転送されて自動で起動する。

参考:Galaxy Nexus(SC-04D)のCWM Recovery起動時のドライバ(Android Composite ADB Interface)インストール方法。

grepでディレクトリ内のファイルを検索

ディレクトリの中から探したい文字列を含むファイルを表示する。

grep -rli 'work' ./

この場合はカレントディレクトリ内でworkを含むファイルを表示する。
その一覧をファイルに出力したいときは、

grep -rli 'work' ./ >> /home/pon/list.txt

とする。

Ubuntu12.04のphp5.3を最新のものにアップグレードする方法

php5.3が古くなってきてそろそろ移行期間かなと思ったのでアップグレードしてみた。

sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5

リポジトリを追加して最新の内容にアップデート。その後にアップグレードしてphpをインストールする。ppa:ondrej/php5というのは最新のphpを管理しているリポジトリらしい
途中でphp.iniを置き換えるか聞かれたので新しいのに置き換えたらSymfonyでエラー。Symfony 2 - Fatal error: Cannot redeclare class SessionHandlerInterfacesymfony2 : failed to write cache fileをみたら直し方が書いてあった。あとはphp.iniのdate.timezoneが指定されてないというエラーもでた。その辺を修正してapacheを再起動して終了。php5.5.6になりました。ところがphpredisが動かなくなって困った。