CakeInfo for CakePHP 2.3.x

May 17th, 2013 by naoya | No Comments | Filed in day

最近、とある案件で CakePHP を使っていますが、CakePHP 1.2beta対応-CakeInfo-0.1.2リリース – Shin x blog という phpinfo() ライクな cakeinfo() が便利そうだったので、CakePHP 2.3 で動作するように改良してみました。

元の CakeInfo だと、app/webroot に配置するだけで手軽に動作して便利なのですが、認証されている必要が必要だったので、組み込み版として改良してみました。

ソースコードは、github においてあります。

使い方は、次のとおりです。

1. cakeinfo.php を、app/Vendor ディレクトリにコピーします
2. cakeinfo.ctp を app/View/Foo など View にコピーします
3. 対象のコントローラーで、次のような変更をします


App::import('Vendor', 'cakeinfo');

class FooController extends AppController {

public function foo() {
$info = new CakeInfo();
$info->execute();
if (!defined('DATABASE_CONFIG_FLAG')) {
unset($info->values['Database']);
}

$this->layout = null;
$this->set('info', $info);
}

こんな感じで、あとは Foo/cakeinfo にアクセスすれば、こんな感じの画面が表示されるはずです。

手元の環境では、最新の CakePHP 2.3.4 で動作確認済みです。

Tags:

NFS 上のファイルパーミッション問題

March 31st, 2013 by naoya | No Comments | Filed in day

昔昔、ウェブサーバから autofs 経由で NFS を使ったことがあったときのお話です。

ウェブサーバから、NFS に対して書き込むユーザが違うとき、よくよくパーミションが問題になるとは思います。あとは、ファイルが読めなかったりとか。
そんなときは、NFS 側の /etc/exports に、次のような感じで uid と gid を設定すればうまくいくはずです。

/var/hoge *(rw,sync,all_squash,anonuid=500,anongid=10)

上の例だと、/var/hoge 上は、すべて uid 500 gid 10 の権限で実行されるようなイメージになります。厳密に言うと、nobody として実行されるんですが、そのときの uid / gid を設定するという意味だと思っています。

なので、ウェブサーバから、例えば uid 1000 なユーザ権限で NFS にファイルを書き込んだ場合、NFS 上では uid 500 gid 10 のファイルとして作成されます。
ウェブサーバ上からみると、uid 1000 で書き込んだような見えます。

もしかすると今時でもそんなシステムがあるのかもしれませんが。。。

それでは!

Tags:

cobbler web を nginx 経由で使う方法

March 30th, 2013 by naoya | No Comments | Filed in day

かなり久しぶりのブログになりました。

cobbler web 便利なんですが、最近は apache より nginx を使う機会が多いので、その設定をしてみました。
次のような設定を /etc/nginx/conf.d/cobbler.conf として作成すればいいでしょう。

server {
    listen 80;
    server_name _;
    charset utf-8;

    location ~ ^/cblr(?!/svc/)(.*)?$ {
        alias /var/www/cobbler/$1;
    }

    location ~ ^/cobbler_track/(.*)?$ {
        alias /var/www/cobbler/$1;
    }

    location /cobbler$ {
        alias /var/www/cobbler;
    }

    #location /cobbler_webui_content {
    #    alias /var/www/cobbler_webui_content;
    #}

    location /cblr/svc/ {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9090;
    }

    location /cobbler_api {
        rewrite ^/cobbler_api/?(.*) /$1 break;
        proxy_pass http://127.0.0.1:25151;
    }

    location /cobbler_web {
        rewrite ^/cobbler_web/?(.*) /$1 break;
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9091;
    }

    access_log /var/log/nginx/cobbler.log;
}

簡単で便利ですね!

Tags: ,

Ubuntu で正しく Ruby 1.9.3 をインストールする方法

February 21st, 2013 by naoya | No Comments | Filed in day

Ubuntu Server 12.10 で Ruby 1.9.3 を System Ruby として使いたい場合 ruby1.9.3 というパッケージをインストールするだけです。


$ sudo apt-get install -y ruby1.9.3

しかし、/etc/alternatives 以下が 1.9.1 のままとなってしまいますので、ruby1.9.3 をインストールしたあとで、次のコマンドを実行すると正しくなります。
なお、このコマンドを実行しなくても、見た目上は正しく Ruby 1.9.3 に上書きされているので問題ないかと思います。


$ sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.3 500 \
--slave /usr/bin/ri ri /usr/bin/ri1.9.3 \
--slave /usr/bin/irb irb /usr/bin/irb1.9.3 \
--slave /usr/bin/erb erb /usr/bin/erb1.9.3 \
--slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.3
$ sudo ln -sf /usr/bin/gem1.9.3 /etc/alternatives/gem
$ sudo ln -sf /usr/share/man/man1/gem1.9.3.1.gz /usr/bin/gem.1.gz

参考
Ruby 1.9.3 on Ubuntu 11.04

Tags: ,

LVM で、論理ボリュームを拡張する方法

February 13th, 2013 by naoya | No Comments | Filed in day

最近、LVM でディスクパーティションを作成していたりしています。

今まで 論理ボリュームを拡張するとき具体的なサイズを指定したのですが、VG の空き領域をすべて拡張したいときが多かったのですが、次のように指定すればいいことが分かりました。

$ lvextend -L +100%FREE /dev/mapper/vg/root

これは、かなり覚えにくい記述方法ですが、便利ですね。

あとは、ext3 なら resize2fs、ext4 なら resize4fs すれば完了ですね。

$ resize4fs /dev/vg/root

Tags:

LVS DSR で、リアルサーバの設定を見直したお話

February 12th, 2013 by naoya | No Comments | Filed in day

今までずっと LVS DSR で、リアルサーバでは iptables に、次のようなルールを追加した REDIRECT していましたが、iptables のオーバーヘッドが気になったので、lo:0 を定義するように変更してみました。


*nat
: PREROUTING ACCEPT [0:0]
: OUTPUT ACCEPT [0:0]
: POSTROUTING ACCEPT [0:0]
-A PREROUTING -d VIP -j REDIRECT
COMMIT

1.lo:0 を定義する

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=VIP
NETMASK=255.255.255.255
ONBOOT=yes

2. lo:0 を起動する

$ sudo ifup lo:0

3. sysctl を変更する、net.ipv4.netfilter.ip_conntrack_max の設定は不要なのであわせて削除する

$ sudo vi /etc/sysctl
# Ignore ARP
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

4. sysctl の設定を再読み込みする

$ sudo sysctl -p

5. iptables を停止する

$ sudo service iptables stop
$ sudo chkconfig iptables off

# 負荷的には、ほとんど変わらずといった印象、iptables を無効にすることで SSL の場合とかにリアルサーバ側で REDIRECT できないことが唯一の欠点かと思いますが、リアルサーバ側で ip_conntrack の設定に悩まなくて済むのはいいことだと思いますねぇ。

Tags: ,

Ubuntu 12.10 で、svn 1.6 をインストールする方法

January 30th, 2013 by naoya | No Comments | Filed in day

ご存じのとおり、Ubuntu 12.10 は svn 1.7 系なのですが、どうしても svn 1.6 系をインストールしたいことがあったので、設定してみました。

まず、/etc/apt/sources.list.d に precise のリポジトリを追加します。

precise-archive-source.list
deb http://us.archive.ubuntu.com/ubuntu precise main universe

あとは、ざっくりとインストールスだけですね。ポイントは、subversion パッケージは libsvn1 に依存しているところですね。
あと、バージョン指定をする必要がありますね。

$ sudo apt-get update
$ sudo apt-get install libsvn1=1.6.17dfsg-3ubuntu3 subversion=1.6.17dfsg-3ubuntu3
$ svn –help
usage: svn [options] [args]
Subversion command-line client, version 1.6.17.

Ubuntu のパッケージを確認するには、このサイトがかなり便利ですね。

Tags: ,

ある期間に作成されたファイルを、同じディレクトリ階層を保ったままコピーする方法

January 16th, 2013 by naoya | No Comments | Filed in day

とある事情で、ある期間内に作成されたファイルを同じディレクトリ階層を保ったままコピーする方法を試してみました。

結果からというと、次のような find + rsync のあわせ技で可能です!


$ cd /naoya/test
$ find ./ -type f -mmin -30 -print | rsync -auz --files-from=- /naoya/test /naoya/test_latest/

ポイントは、最初に cd して、find の対象パスを ./ としているところです。
そうでないと、例えば /naoya/test/1/2/3 というディレクトリ階層だった場合に、/naoya/test_latest/naoya/test/1/2/3 となってしまいます。このときは、/naoya/test_latest/1/2/3 というディレクトリ階層にしたいので、上のような find + rsync、技となりました。

Tags:

謹賀新年 2013年

January 1st, 2013 by naoya | No Comments | Filed in day

あけまして、おめでとうございます!!!

昨年はめっきり更新頻度が減った、このブログですが、今年は恥ずかしい・微妙なアウトプットでも思い切って出していきたいですね。

今年の一番の大きな目標は、「徹底的にシンプルな人生にする」をさらに追求していきます。

仕事、エンジニア、プライベートの抱負は、次のとおりです。

仕事に対する抱負

  • 個人的な仕事の目標は、「プロとして圧倒的な価値を相手に提供する」をモットーに活動していますが、昨年はほとんど圧倒的な価値を提供できなかったので、今年こそは金銭的な報酬には関係なく「プロとして圧倒的な価値を相手に提供する」ことを実践します
  • 現在、とてもありがたいことに大きな 2 つの仕事に携わっているのですが、この 2 つの仕事にさらに大きくコミットして、どちらも仕事に対しても大きな貢献をしていきます
  • 今年は、今の予定だと春くらいに転職するか、起業するか、あるいは旅立つか、の決断が迫っている瀬戸際の年なので決断したいと実行したいと思います

エンジニアとしての抱負

  • 気がついてみれば、エンジニア定年説の 35 歳になっていたわけですが、生涯エンジニアとして活躍できるように精進していきます
  • そのために、業務とはまったく関係ない技術も習得して個人的な活動で実践していこうと考えています。手始めは Haskell に決めました
  • エンジニアとして、コードを書けない・読めない・レビューできないことは致命的なので、今年は1日も欠かさずにほんの少しでも仕事用でも趣味用のコードを書く・読む・ことをは欠かさずやっていきたいと思います
  • いわゆるインフラエンジニアとしても活動も今年も力を入れていく予定で、本来のサーバリソースを最大限に引き出せるように Linux やネットワークやプログラムやコンピュータの基礎にもう一度立ち返ってみたいと思います

プライベート

  • 健康でなければ、何事も最後まで成すことができません(年齢的も健康について考える歳になったのかもしれませんね)
  • 健康第一
  • 今年は、風邪や体調不良などで、2013年365日、1日たりとも体調不良などで休まないことをここに誓います
  • 健康であるために、必要な体作りはもちろんのこと、一度人間ドッグをやってみようかと思います(もうかれこれ2年くらい健康診断していないので・・・)
  • そして、人生の約 1/3 だと言われている睡眠に対してさっそく投資しました(寝具をフルリニューアルすることにしました)、質の良い睡眠をしっかりととってあまり長い時間の質の悪い睡眠しないしたいです(さまざまな情報を参考にすると、睡眠時間は 6 – 7時間程度がもっとも良いようですので、時間と質がポイントです)
  • あと睡眠の他に重要な食事、食事も非常に大切で、できるかぎり余計なものを使っていないもので自炊して、体に気を使った食事をしていきます(コストが安いものはできる限り摂取しないように気をつけていきたいと思います)

そんな感じで今年も自分の夢が叶うように頑張っていきたいと思います!!!

さぁ、いくぞぉー、2013年!!!

Tags:

Rescue モードで LVM なパーティションをマウントする方法

December 31st, 2012 by naoya | No Comments | Filed in day

LVM な / パーティションがディスクあふれを起こした影響で、ファイルシステムがおかしくなったので、Rescue モードで起動しました。
しかし、LVM なパーティションは自動的に認識していなかったので、そのときのマウントする方法をメモしておきます。


# lvm vgscan -v
# lvm vgchange -a y
# lvm lvs –all
# mount /dev/mappger/ < マウントポイント>

な感じで マウントができます。

ただ、今回ファイルシステムがおかしくなってしまったので、マウントする前に fsck したところ、ちゃんとマウントできるようになりました。


# fsck -n /dev/mapper/

それでは、皆様良いお年を!!!

Tags: