akishin999の日記

調べた事などを書いて行きます。

2013-01-01から1年間の記事一覧

Apache 2.4 + Ruby 2.0 + Passenger 4 環境を構築する

最新版の Ruby と Apache での環境構築手順を整理してまとめてみました。 それぞれ RPM を作成してインストールしています。 また、Passenger も最新の 4 系にしてみました。OS は Webサーバ、RPM作成用サーバ共に CentOS 6.4 x86_64 です。 rpm-build の準…

OMP_NUM_THREADS を指定した場合の負荷について

「ImageMagick の OpenMP が有効だとサーバが高負荷になってしまう」問題を回避するために環境変数 OMP_NUM_THREADS に 1 を設定したものの、Nginx の場合、何故か /proc/$pid/environ に表示されませんでした。これでは本当に環境変数が正しく設定できてい…

mod_dims で動的に画像リサイズ

Web サーバでの画像自動リサイズ方法をいろいろと調べていたところ、 Apache の mod_dims というモジュールを見つけたので試してみました。検証したのは以下の環境になります。 CentOS 6.3 x86_64 ImageMagick 6.8.5-10 依存ライブラリのインストール 依存ラ…

ngx_small_light で動的に画像リサイズ

この前インストールした mod_small_light の Nginx 版、ngx_small_light をインストールしてみました。cubicdaiya/ngx_small_light https://github.com/cubicdaiya/ngx_small_lightこのモジュールを使うと Nginx でも Apache + mod_small_light と同じ感じで…

apachebench-for-multi-url で複数 URL のベンチマーク

Apache 付属のベンチマークツール、Apache Bench(ab コマンド)は簡単に導入できて気軽に使えるのでお気に入りなんですが、残念ながら複数の URL を指定したベンチマークに対応していません。何とかする方法はないか調べてみたところ、独自のオプションを追加…

mod_small_light で動的に画像リサイズ

今更ですが、livedoor により提供されている mod_small_light をインストールしてみました。 mod_small_light は動的にサムネイル画像を生成したりできる Apache モジュールです。SMALL LIGHT 〜かんたん画像サムネイル作成モジュール〜 | livedoor labs EDG…

OpenMP 無効の ImageMagick の RPM を作成する

CentOS の Yum で ImageMagick を入れると、以下のようにデフォルトで OpenMP が有効になっています。 # yum install -y ImageMagick # convert --version Version: ImageMagick 6.5.4-7 2012-05-07 Q16 OpenMP http://www.imagemagick.org Copyright: Copyr…

Ruby で tar.gz を扱う

Ruby で tar.gz を扱う方法を調べたところ、archive-tar-minitar というライブラリと zlib の組合せが簡単そうでした。archive-tar-minitar | RubyGems.org | your community gem host http://rubygems.org/gems/archive-tar-minitarというわけで使ってみた…

Redis の永続化について調べた

Redis でのデータの永続化方法について調べたので、忘れないうちにまとめておきます。調べた時の Redis のバージョンは 2.6.13 です。 スナップショット(RDB) Redis のデフォルトの永続化の仕組み この設定が有効な場合、Redis は定期的にデータベースの内容…

Redis でお手軽に複数台構成の検証環境を作る

最近 Redis の Sharding 構成やレプリケーション構成を検証するために複数の Redis インスタンスを起ち上げる事が多いのですが、その度に一々設定を変更した redis.conf を用意するのが結構面倒でした。という事でちょっと調べてみると、どうやら redis-serv…

Vim で全角空白入力時に半角空白に置き換える

Vim

職場の人から「Vim で全角空白を入力した場合に、自動的に半角空白に置き換えたい」という話を聞いて、確かに便利そうだと思って調べてみました。 通常であれば inoremap とか使えば良さそうなんですが、どうやら全角空白には効かない模様。 " 普通の全角記…

Redis の仮想メモリはどうなったのか

一時期 Redis の特徴として良く挙げられていたものに、搭載している物理メモリ量以上のデータを扱える Virtual Memory という機能がありました。仮想メモリ技術仕様 ― redis 2.0.3 documentation http://redis.shibu.jp/hacker/virtualmemory.html個人的には…

Munin で Redis のリソース監視

Munin で Redis のリソースをモニタリングするためのプラグインをいくつか試してみたんですが、個人的には以下のものが気に入りました。bpineau/redis-munin · GitHub https://github.com/bpineau/redis-munin気に入った理由としては シェルスクリプト製なの…

ab コマンドで VirtualHost をテストする

Apache の ab コマンド(Apache Bench) ってリクエストヘッダ指定できたんですね。 これで Host ヘッダ送ってやると、DNS や /etc/hosts を設定してなくても VirtualHost に対して負荷テストをかけることができます。 $ ab -H 'Host: akishin.example.com' -n…

redis-rb で ConsistentHashing の仮想ノード数を指定する

redis-rb では Sharding のアルゴリズムとしてコンシステント・ハッシュ法が使われています。 コンシステント・ハッシュ法でサーバごとのキーの偏りを減らす為の仮想ノードという仕組みがあるのですが、redis-rb を使う場合に仮想ノードの数をどうやって指定…

Redis でダウンタイム無しの再起動

Apache でいうところの「graceful restart」的な機能が Redis には無いのかを調べてみたのですが、どうやらそういった機能そのものは無いようでした。 では Redis の場合はサービスを無停止でバージョンアップなどを行い、プロセスを再起動するにはどうした…

Redis で Sharding してみた

Redis の Sharding は現状クライアントサイド、つまりライブラリ依存で実現されています。 ここでは Ruby と Java のライブラリで実際に Sharding を試してみました。 redis-rb redis/redis-rb · GitHub https://github.com/redis/redis-rbRuby から Redis …

Redis 2.6 の RPM を作成する

ちょっと使う必要があったので、Redis の最新版の RPM を作成してみました。環境は CentOS 6.3 です。まずは RPM の作成に必要な rpmbuild、rpmdevtools をインストールします。 # yum install -y rpm-build rpmdevtools 次に RPM 作成用のユーザを作成して …

Ubuntu に rbenv で Ruby 1.8.6 系をインストールしようとしたらハマった

タイトル通りですが、ちょっと古いコードの検証環境が欲しかったので、開発環境として使用している Ubuntu に rbenv で Ruby の 1.8.6 系をインストールしようとしたところ、予想外にハマって時間を取られたのでまとめておきます。環境は Ubuntu 12.10(32bit…

elasticsearch で clustering を試してみる

elasticsearch だと簡単に clustering が出来るということなので、実際に試してみました。 環境は CentOS 6.3、elasticsearch 0.20.5 です。まずはダウンロードして展開します。 # wget https://download.elasticsearch.org/elasticsearch/elasticsearch/ela…

elasticsearch での Kuromoji の使い方

前回インストールした elasticsearch で日本語形態素解析器 Kuromoji を使ってみます。 環境は CentOS 6.3、elasticsearch 0.20.5 です。elasticsearch はプラグインで機能を拡張できるようです。 利用可能なプラグインは公式サイトの以下のページにまとめら…

CentOS に elasticsearch を入れてみた

elasticsearch は Apache Solr と同じく Apache Lucene を使用した全文検索エンジンです。 REST ベースの API を備え、curl コマンドだけで操作できるなどの使いやすさが特徴とのことです。 詳しくは こちら や こちら の資料を読んでみてください。今回は C…

tmux + tmuxinator + rbenv の環境で RBENV_VERSION が勝手に設定されてしまう件

tmux + tmuxinator + rbenv の環境で rbenv local を設定しても指定した Ruby が使われない、という現象が発生。 調べてみると環境変数 RBENV_VERSION が設定されているため、rbenv がそちらを見てしまう事が原因のようでした。しかし RBENV_VERSION を設定…

Ruby 2.0 で Passenger を動かしてみた

Ruby 2.0.0-p0 がリリースされましたね。 ということで、早速インストールして Passenger で Rails の簡単なサンプルアプリを動かすところまでやってみました。環境は CentOS 6.3 x86_64 です。 準備 まずは必要なパッケージをインストールします。 README …

64bit 版 CentOS での CheckInstall 導入方法

このところ CheckInstall の挙動についていろいろと調べていました。 検証に際して使用していた 64bit 版 CentOS での導入方法を整理しておきます。確認した環境は CentOS 5.9 x86_64 ですが、CentOS 6 系でもほぼ同じ方法でいけると思います。また、事前に …

restful-authentication から sorcery に乗り換える

今更といえば今更なのですが、Rails 2.x で作ったアプリケーションを Rails 3.2 に移行しました。ただ、該当アプリケーションでは認証プラグインとして restful-authentication を採用していたため、そのままでは 3.2 で動かす事はできません。 単純に Devis…

Linux サーバでの「Too many open files」対策について

Linux サーバでの「Too many open files」エラー対策について調べたのでまとめてみました。 確認した OS は CentOS 5.9 と CentOS 6.3 です。「Too many open files」は Linux でプロセスが開けるファイルディスクリプタの上限に達してしまうと発生するエラ…

iptables で他のサーバとの通信を禁止する

作業ミスの予防として手元の開発環境から本番環境の MySQL への接続を禁止したくなったのですが、他で使っていたりするのでサーバ側でポートを閉じたりは出来そうにありません。ということで、取りあえずクライアント側で iptables を使って本番サーバの特定…

Gistub をインストールしてみた

このところ「インストールしてみた」的な事ばかり書いていて、あまり深く突っ込んでない感じがなんだか情けないと自分でも思いますが、懲りずに今回もインストールしてみた系です。今回は こちら の記事で紹介されていた、Rails 製のオープンソースの Gist …

CentOS 6.3 に MySQL 5.6 をインストールしてみた

MySQLのインストール方法が進化していた! - sakaikの日々雑感〜(T)編 http://d.hatena.ne.jp/sakaik/20130205/mysql5_6_installこちらの記事を読んだら使ってみたくなったので、 MySQL 5.6 を CentOS 6.3(x86_64) にインストールしてみました。 手順もほぼ…