結構前から使っては居るのだけれど、
なんとなくメモっておこうと思ったので、φ(..)メモメモ

perl使いの方はご存知のCPANで ack で検索すると出てくるack。

コレをダウンロードとかではなく、

[Browse]

の方をクリック。

現時点では、
http://cpansearch.perl.org/src/PETDANCE/ack-1.94/
これ。

ここの、ack ってやつをサーバに置いて、実行権限付けてあげると、
いい感じにgrep出来ます。

ぜひお試しあれ。

% wget http://cpansearch.perl.org/src/PETDANCE/ack-1.94/ack
% chmod 755 ./ack
% ./ack -a hoge ./

実行結果は色もついていい感じ!

メモ。

mysqlbinlog というコマンドで、どんなクエリを実行しているか確認できます。

例: mysqlbinlog /usr/local/mysql/var/mysql-bin.000123

とか。

で、そのコマンドを叩いたときに、

% mysqlbinlog: unknown variable 'default-character-set=utf8'

とかでたら、

% mysqlbinlog --no-defaults /usr/local/mysql/var/mysql-bin.000123

とかしましょう。

では、本題。

日時指定で binlog の取得

% mysqlbinlog mysql-bin.000123 --start-datetime="2010-12-21 15:50:00" --stop-datetime="2010-12-21 16:00:00" > /tmp/2010-12-21.log

これでOK。

さっきの続き。

せっかくの daemontools をインストールだけではなく、memcached も一緒に運用します。

まず、daemontools を常駐させるために /etc/inittab に以下の行を追記。

SV:123456:respawn:/usr/local/bin/svscanboot

そして、この設定を有効にするために、

# kill -HUP 1

とします。

続いて、memcached のインストール。

memcached のインストールには libevent なるものが必要です。

なので、まずは libevent のインストール

% wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
% tar zxf libevent-1.4.12-stable.tar.gz
% cd libevent-1.4.12-stable
% ./configure
% make 
# make install

完了。

memcached のインストール

% wget http://www.danga.com/memcached/dist/memcached-1.2.8.tar.gz
% tar zxf memcached-1.2.8.tar.gz
% cd memcached-1.2.8
% ./configure --prefix=/usr/local
% make
# make install

これで memcached のインストールは完了。

あとは、daemontools の設定です。

まだ daemontools のインストール、memcached のインストールをしただけなので、
daemontools が監視している /service の下にはまだ何もありません。

つまり、、全く意味がありませんw

まずは、daemontools で監視するサービスを置くディレクトリを作ります。

# mkdir -p /etc/daemon/memcached

そのディレクトリに、起動スクリプトを run という名前のファイルで設置します。

# vi /etc/daemon/memcached/run
========================================
#!/bin/sh

exec /usr/local/bin/memcached -m 64 -u memcached  2>&1
========================================

これだけ書いていれば十分です。
64というのは、キャッシュサイズです。

後は、

# chmod 755 /etc/daemon/memcached/run
# ln -s /etc/daemon/memcached/ /service/

とすれば、daemontools が監視して、memcached を起動してくれます。

確認方法

# svstat /service/memcached

このコマンドを叩いて、

/service/memcached: up (pid 18732) 24 seconds

とか出ればOK。

何度叩いても、pid が変わり、 

0 seconds とか、 1 seconds とかで memcached が再起動し続ける場合は、
・スクリプトが間違っている
・実行権限がない
等が考えられますので、確認しましょう。

以上!

あ・・qmail も入れなきゃ。。
何度かインストールしてるくせに、あまりにも覚えて無さ過ぎるので、メモ。

まずはソースをダウンロード。

% wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz

展開

% tar zxf daemontools-0.76.tar.gz

展開すると、普通 daemontools-0.76 とかいうディレクトリが出来そうだけど、
daemontools は、admin ってディレクトリが出来る。

展開したら、

% cd admin/daemontools-0.76
% ./package/compile

コンパイルまでしちゃいましょう。

ってすると、エラーが出ちゃうんですねぇ。

>cp: cannot stat `compile/svscan': そのようなファイルやディレクトリはありません

こんな感じで・・・

なので、パッチを当てます。

% wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
% patch -s -p1 <./daemontools-0.76.errno.patch

ってして、リトライ。

% ./package/compile

うまくいく。

・・・ハズ。


デフォルトだと、 /command 以下にコマンドがインストールされて、
/usr/local/bin/ 以下にシンボリックリンクが作られ・・

なんか気持ち悪いので、直接 /usr/local/bin の下にインストールします。

・・・の、前に。

/command ってディレクトリは無いので、

% vi svscanboot

/command を /usr/local/bin へ変更する。

で、インストール。

% cd command/
% su
# install -o root -g root -m 755 -s envdir /usr/local/bin
# install -o root -g root -m 755 -s envuidgid /usr/local/bin 
# install -o root -g root -m 755 svscanboot /usr/local/bin
↑この svscanboot だけは -s を付けない。


てな感じで、インストール。

最後に /service ディレクトリを作成。

以上で、インストールは、完了。


いろいろググりながら、Git のApache経由での環境構築中。

まず、とりあえず Apache の入ってるサーバにGit のbereリポジトリを、ゴッソリコピーします。

% scp /home/git/hoge.git/* 192.168.1.101:/home/git/hoge.git/

■リモートリポジトリ側
apache 経由で push 出来るように、apache のユーザに権限を与えます。

% chown -R www:www /home/git/hoge.git

で、apache の設定

<VirtualHost *:80>
  ServerName repos.hogehoge.com
  DocumentRoot /home/git
  <Location />
    DAV on
    AuthType Basic
    AuthName "Git"
    AuthUserFile /usr/local/apache2/conf/htpasswd
    Require valid-user
  </Location>
</VirtualHost>

これで、作業したいサーバで、

% git clone http://repos.hogehoge.com/hoge.git/  hoge.git/

ってすると、clone 出来ました。



・・・clone までは出来たんだけど push が出来ない。。

% vim test.html   (じつはemacs派です)

って編集した後に、

% git commit test.html

まではうまく行くんだけど、

% git push

ってすると・・・

fatal: git-push is not available for http/https repository when not compiled with USE_CURL_MULTI
fatal: git-http-push failed

なんてエラーが・・・

どうやら僕のインストールした Git さんが http-push をサポートしていない模様。。

USE_CURL_MULTI でググっても何だかよく分からんし。。

またいろいろ調べなければ。。

mod_perl 下のプログラムちゃんたちの遅い処理を丸裸にしちゃうモジュール。


書き方は、Apache の設定ファイルに

PerlPassEnv NYTPROF
PerlModule Devel::NYTProf::Apache
を追記。

それと、

MaxClients 1
も追記。


こうすることで、nytprofhtmlでの解析が出来ます。

nytprofhtml -f /tmp/nytprof.xxx.out.yyy
xxxが親プロセスの ID、yyyが子プロセスの ID。


そして、最後に結果の表示

less /tmp/nytprof/index.html
なんだかGitを使ってみたくなったので、使ってみる。

環境は、

CentOS 5 (レポジトリ)
CentOS 5 (クライアント)

まずはソースコードをダウンロード(レポジトリ,クライアントどちらも)

% wget http://kernel.org/pub/software/scm/git/git-1.7.2.1.tar.gz
(現時点ではこの辺)

解凍~インストール

% tar zxfv git-1.7.2.1.tar.gz
% cd git-1.7.2.1
% ./configure prefix=/usr/local
% make
% sudo make install

これでGitのインストールは完了

次にレポジトリを作る(ローカル)

% cd ~
%mkdir app
% cd app
% git init

いよいよファイルをリポジトリに追加&コミットします

% touch hoge.txt
% git add hoge.txt
% git commit
↑この後はコメントを書く画面に切り替わりますので、適当に・・

次はレポジトリサーバにレポジトリを作成

% mkdir /home/git/app
% cd /home/git/app
% git --bare init

これで準備は整ったので、レポジトリサーバにpush します。

% cd ~/myapp
% git remote add origin ssh://jon@hogehoge.com/home/git/app
% git push origin master

あとはサブバージョンでいうチェックアウトは

% git clone ssh://jon@hogehoge.com/home/git/app

でOKです。

とりあえず設定はこんなもんですね。


ココ最近までは一つのサーバに複数のmysqlをインストールして使ってたんですが、

mysqld_multi というものを知りました。

どんなものかというと、

・一つのmysql で複数のmysqld を、起動・停止・起動確認 などが出来る
・mysql を複数インストールするより、mysqld_multi で複数管理した方が断然軽い

こんなものです。

それだけで十分理由になりそうだったので、導入することになりました。

ざっくり説明すると、

/etc/my.cnf にmysqld_multi の設定をする。
↑これはググってください。

/hoge/hogehoge/mysql/var ←mysql のデータDIR を複数作る

例) sudo -u mysql mkdir /hoge/hogehoge/mysql/var1
ココはパーミッションの変更も忘れずに。

インストールしたときに展開した mysql-5.** のディレクトリの下にある mysqlinstall-db を実行する

./scripts/mysql_install_db --user=mysql --datadir=/hoge/hogehoge/mysql/var1

 ↑ これが他のサイトには書いてないんで・・はまりましたorz

な・・なんと、これでおしまい!

後は、mysqld の起動をしちゃいましょうか。

# mysqld_multi start

これで起動します。

停止するときは、

# mysqld_multi stop

これでOKです。

起動している mysqld を確認するときは、

# mysqld_multi report

これで確認できます。

複数のmysqld を導入するときは是非ご利用ください。



mysql で検索するときに、

select * from table where column like '%word%';

なんてしたいことありますよね。

さらに、

select * from table where (column like '%word%' or column2 like '%word%')
 AND (column like '%word%' or column2 like '%word%');

なんてことになったり・・

それに半角カナ、全角カナとかなると、


あーーーーーもう!!めんどくせーーーー!!!!

ってなると思います。(僕はなりました)

そこでいろいろググりまくっていると、


ってのを見つけて、そこのキーワードを参考にいろいろ検索してると、

collate utf8_unicode_ci 

こんなのにたどり着きました。

何かというと、UTF-8環境のMySQLで、ひらがな、カタカナ(半角・全角)気にせずに、検索できます。

SQLは、まずUTF-8環境のDBと仮定した上で、

alter table table_name collate utf8_unicode_ci;

これで、 collate utf8_unicode_ci が使えるようになりました。

あとは、 where 検索したいカラム  collate utf8_unicode_ci(これはこのまま) like '%検索したいワード%' を叩く。

select * from table where 
(column1 collate utf8_unicode_ci LIKE '%わーど%' OR column2 collate utf8_unicode_ci LIKE '%わーど%');

このクエリを叩くと、

「わーど」 ひらがな
「ワード」 カタカナ(全角)
「ワード」 カタカナ(半角)

がHITしてくれます。


いや~便利ですねぇ。
今日、新しくサーバをセットアップしないといけなくて、会社のサーバ室へ。

HDを入れ替えて、ごそごそやって、電源をON!

いろいろやらないとなぁ~。なんて思ってると、起動前に、

ピー・・・ピー・・・ピー

なんだ!?なんか嫌なビープ音が・・・

いろいろ試行錯誤しながら、BIOSの設定とかをいじっていると、
一つ分かったことがあった。

BIOSの設定の日時とか、他の設定変えても、一回電源ケーブルを抜くと、
全部消えてる。。

ボタン電池の電池切れです。

休憩ついでに近くのローソンまで電池を買いにお出かけして、
これで直るといいなぁ~なんて思っていながら電池を換えて、

ON!!

ピー・・・ピー・・・ピー・・・

だめですか・・・。

あきらめていろいろググって居ると、
まさにこれだ!!

って記事が、

【DELL サーバ RAID ピーピー】

でHitしたw

参考にさせていただいたサイト↓


今回の修復方法は、
まずピーピーうるさいので、
起動時に<F10>を押して、グレーの画面に行ったら、
Objects⇒Adapter⇒Alarm Control⇒Disable Alarmを選択。
よし。これで静かになった。

続いて、復旧作業。
Objects⇒Physical Drive
ここを見ると一つがFAILEDになっている。
FAILEDになっているところにカーソルを合わせてここでENTERキーを押し、Rebuild(再構築)を選択。
進行状態が%表示で現れるので、しばらく放置。

再構築が終了し、FAILED表示がONLINEに変わったら完了。

再構築完了後に、Alarm ControlをEnable Alarmに戻すのをお忘れなく。

最近のコメント

  • 通りすがりのド素人: ありがとうございます 続きを読む

ウェブページ