カテゴリー「[ヘンジニア魂]」の43件の記事

2008/10/03

sendmail メールヘッダ From: のドメイン名を書き換える

host.domain でメールが送られてしまうのがいやだったので、、、

cd /etc/mail/

FreeBSD # cp freebsd.submit.mc freebsd.submit.mc.bk
CentOS # cp submit.mc submit.mc.bk

# cp submit.cf submit.cf.bk

FreeBSD # vi freebsd.submit.mc
CentOS # vi submit.mc

 FEATURE(`masquerade_envelope')dnl
 MASQUERADE_AS(`hogehoge.jp')dnl

FreeBSD # make install
CentOS # make submit.cf

| | コメント (0)

2008/08/20

nagios check_http

普通の HTML を監視する場合にはあまり意識していなかったんだけど、ファイルダウンロードサイトとかのコンテンツ監視を check_http で設定するとファイルのダウンロードが始まってしまう始末。。。

そんな馬鹿なことはあるまいとヘルプを見るとちゃんと載ってました。

 $ ./check_http -h
 
 〜略〜

 -N, --no-body
 Don't wait for document body: stop reading after headers.
 (Note that this still does an HTTP GET or POST, not a HEAD.)

こういうふうに使うといいみたい。

 $ ./check_http -N -H example.downloadsite.jp -u /hoge/huga.zip

ファイルが存在する場合にはちゃんとステータスコード 200 を返してくれるようです。


| | コメント (0)

2008/08/15

mysql モメ。

show variables
http://dev.mysql.com/doc/refman/4.1/ja/show-variables.html

show status
http://dev.mysql.com/doc/refman/4.1/ja/show-status.html

| | コメント (0)

2008/08/13

linux askmethod

ホスト ftp.riken.jp
パス  /Linux/centos/5/os/i386/

デス。

| | コメント (0)

2008/06/19

BASIC認証

AuthUserFile /path/to/passwordfile
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

めも。

| | コメント (0)

2008/05/13

テーブルタイプの変更はレプリケーションされるか実験

MySQL でデータベースをレプリケーションしている環境で、マスターのテーブルのテーブルタイプを、MyISAM から InnoDB に変更した場合にどうなるか実験君。

マスターの状態。

mysql> show table status\G
*************************** 1. row ***************************
Name: kappa_aho
Engine: MyISAM
Version: 9
Row_format: Fixed
Rows: 4192
Avg_row_length: 5
Data_length: 20960
Max_data_length: 21474836479
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2008-05-13 20:21:19
Update_time: 2008-05-13 20:21:19
Check_time: NULL
Collation: ujis_japanese_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)

スレーブの状態。

mysql> show table status\G
*************************** 1. row ***************************
Name: kappa_aho
Engine: MyISAM
Version: 9
Row_format: Fixed
Rows: 4192
Avg_row_length: 5
Data_length: 20960
Max_data_length: 21474836479
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2008-05-13 20:21:19
Update_time: 2008-05-13 20:21:19
Check_time: NULL
Collation: ujis_japanese_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)

早速、マスター側でテーブルタイプの変更。

mysql> alter table kappa_aho type=INNODB;

変更後のマスターの状態。

mysql> show table status\G
*************************** 1. row ***************************
Name: kappa_aho
Engine: InnoDB
Version: 9
Row_format: Fixed
Rows: 3973
Avg_row_length: 45
Data_length: 180224
Max_data_length: NULL
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: 2008-05-13 20:26:19
Update_time: NULL
Check_time: NULL
Collation: ujis_japanese_ci
Checksum: NULL
Create_options:
Comment: InnoDB free: 5120 kB
1 row in set (0.00 sec)

変更後のスレーブの状態。

mysql> show table status\G
*************************** 1. row ***************************
Name: kappa_aho
Engine: InnoDB
Version: 9
Row_format: Fixed
Rows: 3973
Avg_row_length: 45
Data_length: 180224
Max_data_length: NULL
Index_length: 0
Data_free: 0
Auto_increment: NULL
Create_time: 2008-05-13 20:26:19
Update_time: NULL
Check_time: NULL
Collation: ujis_japanese_ci
Checksum: NULL
Create_options:
Comment: InnoDB free: 5120 kB
1 row in set (0.00 sec)

ってな感じでちゃんとスレーブ側にもテーブルタイプの変更が反映されてイルゾ。ちなみに、試してみたら、元に(MyISAM)に戻すこともできた。

やるなー、MySQL。

| | コメント (0)

2008/04/17

awk好き好き

awkってすげーなーと思う。

出力結果のセパレーターを指定したいと思ったら、「printf」を使う。
例えば、出力結果のそれぞれのレコードをタブ区切りで出力する場合には、、、

 awk '{printf ("%s\t%s\t%s\n",$1,$4,$5)}'

「%s」は結果を文字列として扱う。ちなみに数値の場合には「%d」。
「\t」がタブ、「\n」が改行を意味する。

| | コメント (0)

2008/02/29

続・ムトウさん

複数のファイルを添付したい場合って、、、。

 echo "hore" | mutt -a hoge.txt -a aho.txt -a baka.txt kappa@ahoahoaho.jp

要は、option、「-a」をつけるだけつける。。。

| | コメント (0)

2008/02/27

https→httpsへのリダイレクト

https://hoge.jpにアクセスがあった場合、https://www.hoge.jp/に飛ばしたい(ロケーションバーの表記をwwwつきにしたい)というニーズ(がどれほどあるかは疑問だけど。)がある場合、さあ、どうしよう、、、ということで、結論、mod_rewriteを使うことにした。

 RewriteCond %{HTTP_HOST} ^hoge.jp$
 RewriteRule ^/(.*) https://www.hoge.jp/$1 [L,R]

こんな感じにしたら、うまくいったらしい。

| | コメント (0)

2008/02/26

postfixのmailboxの容量制限

/var/log/maillogに、、、

  cannot access mailbox /var/mail/hoge for user hoge error writing message: File too large

こげなメッセージが出てメールが受信出来ない状況になる。

どうやら、postfixのデフォルトではmailboxの制限が50Mになっている模様。
main.cfの一番下に、、、

 mailbox_size_limit = 102400000

を追記して、

 sudo /sbin/service postfix reload

で、、、とりあえず、、、解決。

| | コメント (0)

2008/02/25

自分のユーザーエージェントを知る

アドレスバーに以下を入力する。

javascript:alert(navigator.userAgent)

MSの文書。

 ユーザー エージェント文字列を理解する
 http://www.microsoft.com/japan/msdn/ie/ie7/aboutuseragent.aspx

勉強しよう。

| | コメント (0)

FreeBSDでCDを焼く

FreeBSDでisoイメージをCDに焼く場合には、、、

 burncd -f /dev/acd0 data hoge.iso fixate

/dev/acd0は適時読み替える。

CD-ROMをマウントするには、、、

 mount -t cd9660 /dev/acd0 /mnt/cdrom/

/mnt/cdromは適時読み替える。

| | コメント (0)

2008/02/22

Open Tech Press

Open Tech Press 特集
http://opentechpress.jp/special/

暇な時に読もう。

もう一回、勉強や。

| | コメント (0)

2008/02/20

mysqlレプリケーションの監視

mysqlでユーザーを作成するときにGRANT構文を使ってユーザー作成をするんだけど、レプリケーションのステータス(show slave status)だけしかできない権限のユーザーって作成できるのかなーと探していたら、、、ちゃーんとあるぢゃないですか!

 mysql> GRANT REPLICATION CLIENT ON *.* TO replchk@localhost;

「REPLICATION CLIENT」をつけてユーザーを作ればいいようだ。

以下、実験。

$ mysql -ureplchk
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 31 to server version: 4.1.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+----------+
| Database |
+----------+
| test |
+----------+
1 row in set (0.00 sec)

他のデータベースは見えないけど、、、。

mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: xxx.xxx.x.xxx
Master_User: hogehoge
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: hoge01-bin.********
Read_Master_Log_Pos:********
Relay_Log_File: hoge02-relay-bin.********
Relay_Log_Pos: ********
Relay_Master_Log_File: hoge01-bin.********
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: ********
Relay_Log_Space: ********
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)

ってな感じで、show slave status;の出力結果だけはちゃんと見える。

ここをちゃんと読もうぜ。自分。

 4.4.1. GRANT および REVOKE の構文
 http://dev.mysql.com/doc/refman/4.1/ja/grant.html

| | コメント (0)

hobbit管理コマンド

「サービス」のステータスを消す。

~/server/bin/bb 127.0.0.1 "drop ホスト名 サービス名"
※bb-hostsの方も修正してね。

「ホスト」を削除する。

~/server/bin/bb 127.0.0.1 "drop ホスト名"
※bb-hostsの方も修正してね。

「ホスト」の名前を変更する。

~/server/bin/bb 127.0.0.1 "rename 古いホスト名 新しいホスト名"
※bb-hostsの方も修正してね。

| | コメント (0)

サンバを踊れない。。。

新規でsambaのユーザーを作るぞー。

 % sudo useradd -s /sbin/nologin hoge
 % sudo smbpasswd -a hoge
 New SMB password:[パスワード入力]
 Retype new SMB password:[パスワード入力]
 Added user hoge.

ってな感じ。

| | コメント (0)

ムトウさん

cronでログを解析してそれを自動でメール送信とかするとき、単純にmailコマンド使ってたけど、解析結果が長くなってしまって、いっそのこと添付ファイルにできないか、、、と考えたら、muttというコマンド(MUA)を使えば良いことに気付く。

 echo -e "hoge" | mutt -a hoge.txt -s "hoge" hage@example.jp

とすればいい。
echoで本文、mutt -aで添付ファイルの指定、mutt -sでサブジェクト。最後にメアド。

「最後にメアド」って。。。

で、「mutt」ってなんと読めばいいんだろうか、、、「ムトウ」?


なんでもいいや。

| | コメント (0)

2008/02/18

mysqldumpでテーブル属性のみを取得する

mysqldump -uroot --all-databases --no-data > hogehoge.sql

| | コメント (0)

2008/02/12

scpコマンド

scp [オプション][転送したいファイル名][転送先のパス]

hoge.txtをリモートホストのahoディレクトリ以下へ転送する場合、、、

scp hoge.txt kappa@192.168.100.10:~/aho/

で。

| | コメント (0)

2008/02/06

awkのセパレータ文字を変更してみよう

コマンドラインからawkを使うことが多いけど、普通に使うと、、、

 # cat hoge.txt | awk '{print $1}'

とかで使う。この時のセパレータ文字としては、「(半角空白文字)」が使われる。

もし、hoge.txt内の「&」という文字列をセパレータ文字として使いたい場合には、下記のように実行する。

 # cat hoge.txt | awk --field-separator="&" '{print $1}'

いやー、これで、作業がずいぶん楽になったナリ。

| | コメント (0)

httpready

FreeBSDに載ってるApache 2.2系をいじっていてapachectl restartする度に、

 [warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter

なワーニングが出ていたので、その回避策として、

 # kldload accf_http.ko

accf_http.koというカーネルモジュールを読み込んであげればいいらしい。
再起動後も読み込まれるようにするには、/etc/rc.localに、

 /sbin/kldload accf_http.ko

と書いてあげればいいのかな、、、。

ちなみに、accf_http.koでググルと下記のような内容のものらしい。

accf_http カーネルモジュールというのはFreeBSD4.0より追加されたもので、詳細についてはmanページを参照してください。ごくごく簡単に説明すると、このカーネルモジュールの仕事は完全なGET/HEADリクエストが来るまでApacheにHTTPリクエストを渡さないで内部バッファにとどめておくということです。このことにより不要なコンテキストスイッチが発生するのを防止し、結果としてCPUの利用率を減少させることに貢献するということです。

なるほど、、、有益なものなんですな。

| | コメント (1)

skip-grant-tables

MySQLサーバーへのログインが出来ずにイラッと来たときには、my.cnfに「skip-grant-tables」を追加してMySQLを再起動する。

[mysqld]
skip-grant-tables

ちなみに、利用後は元に戻すことを忘れずに。

| | コメント (0)

2008/02/03

apache設定

今更次郎だけど、、、

Apacheをインストールした後に行う最低限のセキュリティ設定。

グローバルな設定は以下、、、。

ServerTokens ProductOnly ・・・クライアントに返信するサーバ応答ヘッダに含める情報を「Apache」のみにする。
ServerSignature Off ・・・エラーページのフッタを非表示にする。

バーチャルホストが設定されている場合には、バーチャルホストの設定に、、、。

FileETag None ・・・ETagの情報をサーバー応答ヘッダに含めない。

あと、アプリケーションにPHPを使っている場合には、「php.ini」に、、、。

expose_php=Off ・・・サーバー応答ヘッダ内でphpのバージョンを表示させない。

| | コメント (2)

2008/01/28

ユーザーエージェント

apacheアクセスログのユーザーエージェントにOSの識別情報ってどんな感じで載るのかなって調べてみた。
以下のような感じ。

 Microsoft Windows 2000
 ↓
 Windows NT 5.0

 Microsoft Windows XP
 ↓
 Windows NT 5.1

 Microsoft Windows Server 2003
 ↓
 Windows NT 5.2

 Microsoft Windows Vista
 ↓
 Windows NT 6.0

ふーん。

| | コメント (0)

2007/12/29

リモートデスクトップにて、、、

操作している「Windows のセキュリティ」のダイアログボックスを出したいと思ったら、、、操作しているクライアントPC上にて、、、

 Ctrl+Alt+End

キーでオッケー。

| | コメント (0)

2007/12/20

kernel: arp:192.168.1.1 is onbge0 but got reply from xx:xx:xx:xx:xx:xx on bge1

なんだかしらないけど以下のようなメッセージが、/var/log/messagesに出力されていることに気付く。

 kernel: arp:192.168.1.1 is onbge0 but got reply from xx:xx:xx:xx:xx:xx on bge1

arpの返答がおかしなところが届いているよー。という内容らしい。
上記の出力を止めるには、

 sysctl -w net.link.ether.inet.log_arp_wrong_iface=0

とすれば良い。

| | コメント (0)

2007/12/14

awkで足し算

たまには技術的なことも。。。(っていっつも言っているし、、、)

lsで出力されたファイルサイズの合計を知りたいと思って、、、試行錯誤。
電卓を取り出そうとしたところ、同僚にヘルプを求める。

結局、こうすればいいらしい。

% ls -l hoge.*
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071112.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071113.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071114.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071115.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071116.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071117.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071118.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071119.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071120.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071121.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071122.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071123.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071124.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071125.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071126.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071127.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071128.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071129.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071130.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071201.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071202.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071203.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071204.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071205.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071206.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071207.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071208.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071209.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071210.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071211.txt
-rw-r--r-- 1 kappa wheel 4 Dec 14 10:48 hoge.20071212.txt

% ls -l hoge.* | awk '{S=(S+$5)}END{print S}'
124

ちゃんと4バイトのファイルが31個で124バイトになってる。。。

| | コメント (0)

2007/11/29

Apache MPM

ApacheのMPM(マルチプロセッシングモジュール)について、ちゃんと理解していなかったので、、、簡単にメモ。

MPMには以下の種類がある。

prefork
Apache1.3の動作モデルと同様に、クライアントからのリクエストに対して子プロセスを起動して対応する。

worker
クライアントからのリクエストに対してスレッドで対応する。プロセスで応答するpreforkよりも処理が高速になるが、1つのスレッドで発生した不具合がプロセス全体のスレッドに影響を及ぼすため、安定性の面ではpreforkに劣る。

| | コメント (0)

2007/11/13

なんでやねん、、、apxs

新規でセットアップした素のFreeBSD 6.2にApacheをインスコ(インストールのことらしい)して、インストール完了!!と思いきや、apxsを使って動的にモジュールを組み込もうとして、

 # /usr/local/apache2/bin/apxs -i -c -a hogehoge.c

としても、「/usr/local/apache2/bin/apxs: Command not found.」と言いやがる、、、。一晩考えて、さらに、ご飯も喉に通らない位に考えて、ふと、駆け出しの頃(今でも駆け出しだけど)に、Apacheをインストールしようとして「Perlを先にインストールしろや!」と怒られたことがあったことを思い出したので早速、PortsからPerlを導入。

 # cd /usr/ports/lang/perl5.8/
 # make install

気を取り直して、、、もう一度、、、。

 $ ./configure --prefix=/usr/local/apache2 --enable-mods-shared="all" --enable-ssl --enable-proxy
 $ make
 # make install

 # /usr/local/apache2/bin/apxs -i -c -a hogehoge.c

でキター!!

| | コメント (0)

2007/11/10

DBIx::DWIWを使いたい。

一応、技術者の端くれとして記事を書いてみよう、、、。

とある場所のとある理由でPerlからMySQLを操作するプログラムを移行しなければならなくなり、そのプログラムで、「DBIx::DWIW」が使われていたので、無論、「DBIx::DWIW」を使えるようにせにゃならん、、、。以下、簡素な手順。

tar zxvf Time-HiRes-1.9708.tar.gz
cd Time-HiRes-1.9708
perl Makefile.PL
make
make test
su
make install

tar zxvf DBI-1.601.tar.gz
cd DBI-1.601
perl Makefile.PL
make
make test
su
make install

tar zxvf DBD-mysql-2.9008.tar.gz
cd DBD-mysql-2.9008
perl Makefile.PL
make
su
make install

cd DBIx-DWIW-0.48
perl Makefile.PL
make
su
make install

インストール完了後にそのプログラムを走らせたところ、、、

install_driver(mysql) failed: Can't load '/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.14: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません at /usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm line 230.
at (eval 6) line 3
Compilation failed in require at (eval 6) line 3.
Perhaps a required shared library or dll isn't installed where expected
at /usr/lib/perl5/site_perl/5.8.5/DBIx/DWIW.pm line 793

こんなエラーが出るので、/etc/ld.so.confに以下を追加して、/sbin/ldconfig

/usr/lib/
/usr/local/lib/
/usr/local/mysql/lib/mysql/


ふう、、、疲れた。

| | コメント (0)

2007/07/17

dirコマンドdir(ぢゃー)

dirコマンドでサブフォルダのファイルリストを取得するのってどうすんの?ってことで、、、。

 dir /s

/sスイッチを付ければ良いらしい。

| | コメント (0)

2007/07/11

MySQL レプリケーション

ちゃんと分かってなかったので、、、

 現場指向のレプリケーション詳説
 http://www.irori.org/doc/mysql-rep.html

しかし、参照系クエリを負荷分散したい場合、アプリケーション側でどんな風に判断するんだろうか、、、。実装するのが難しそう、、、。

| | コメント (0)

2007/06/29

ちょっと役立つかも

日付が付いた空ファイルを生成してみよう。

#!/bin/sh

count=1
while [ $count -le 31 ];
do
echo "$count"
count=`expr $count + 1`
touch "hoge."`date -v-"$count"d +%Y%m%d`".txt"
done

過去、31日分のhoge.YYYYMMDD.txtというファイルを作成できる。

| | コメント (0)

2007/06/24

innodbもろもろ(1)

MySQLのストレージエンジンの一つにinnodbってがある。
MySQLのストレージンエンジンで有名なのはMyISAMってがある。
うんで、一応、以下、MyISAMとinnodbの特徴をサラリと、、、。(サーラリとした梅酒)

 MyISAM・・・読みが速い。運用は簡単。
 InnoDB・・・MyISAMより読みは遅いけが並行性が高い 。運用が面倒。

ってな感じ。詳細はこことかが非常に興味深いことが書いてあって面白かったので是非読んでみて下さい。

っで、MyISAMのことはちょっと置いておいて、innodbのお話。
とあるサーバーのinnodbデータベースを他のサーバーへ移動することを考えているのであるが、これがMyISAMの場合にはデータベースディレクトリをtarして移動して展開してオッケーなんだが、

 例)MyISAMのhogeデータベースを移動する
  ahoserver# cd /usr/local/mysql/var/
  ahoserver# tar zcvf hoge hoge.tar.gz
  ahoserver# sftp kappa@hogeserver

  hogeserver# cd /usr/local/mysql/var/
  hogeserver# tar zcvf hoge hoge.tar.gz
  hogeserver# chown mysql:mysql hoge
  hogeserver# /usr/local/mysql/share/mysql/mysql.server restart

ってな感じでオッケーなんだが、innodbの場合にはそうともいかず、、、いろいろと調べていたらココに辿り着いた、、、

 7.5.8. InnoDB データベースを別のマシンに移動する
 http://mysql.biz.net.id/doc/refman/4.1/ja/moving.html

え、関連ファイルだけのコピーでいいの??って感じ。で、関連ファイルってなに??

やべ、普段、書かないようなこと書いたら頭痛くなってきた。。。
しばし、お休み。

以下、データベース用語のメモ。

共有ロック
 トランザクションが SELECT 文によりデータを参照するものであるときのロックのモード。
 共有ロックによりデータがロックされている間は、
 他のトランザクションからデータを参照することはできるが、データの変更はできない。
 
排他ロック
 トランザクションが INSERT 文、UPDATE 文及び DELETE 文であるときのロックのモード。
 排他ロックされている間、他のトランザクションからデータの参照も変更もできない。

| | コメント (2)

2007/06/22

MySQLメモ

MySQLをソースコードからインストールしようとしたときにふと気づいた、、、。

 % ./configure --help | grep readline
 --without-readline Use system readline instead of bundled copy.

この--without-readlineってのはMySQLにバンドルされているreadlineを使わずにシステムのreadlineを使うように指定するオプションらしい。ちなみに、MySQLのreadlineには問題があるんだと、、、。

ちなみに、素Linuxに--without-readlineでインストールしようとすると「libeadlineが無いよ」って怒られることがあるので注意。そんな時には、、、

 # apt-get install readline-devel

とか、

 # yum install readline-devel

とかすれば良いようどす。うす。うす。

| | コメント (0)

2007/06/17

一行モノ

UNIXのコマンドラインから一行で書けるもろもろ。コピペして使おう。(ただし、間違っている場合もあるので要注意。)

1.ハードディスク内の一番デカイファイルを見つける

 # ls -lR | sort +4n

2.カレントディレクトリの一番デカイファイルを見つけるなら、、、

 # ls -l | sort +4n

3.カレントディレクトリのファイルサイズを計算させる

 # ls -l | awk '{t+=$5} END {print t}'

4.ディレクトリ内のファイルを大文字に変換する

 # for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[a-z]' '[A-Z]'` ; done

ついでに逆は、、、

 # for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'` ; done

5.ディレクトリ内の拡張子.htmlファイル名を拡張子.htmへ変換する

 # for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed 's/html/htm/'` ; done

ついでに逆は、、、

 # for i in * ; do [ -f $i ] && mv -i $i `echo $i | sed 's/htm/html/'` ; done

6.ディレクトリ内のファイル名に拡張子.txtをつける

 # for i in * ; do mv $i $i.txt ; done
 
ついでに逆は、、、(ファイル名から.txtを削除する)
 
 # for i in * ; do mv $i `echo $i | sed 's/\.txt$//'` ; done

7.ディレクトリ内の「m」が付いたファイルに拡張子.txtをつける

 # ls | awk '/^m/ { system("mv "$1" "$1".txt") }'
 
 /^m/ の m をいろいろ代えれば言い訳ね、、、

8.特定のプロセスの親プロセスのプロセスIDを取得する

 # ps -ef | grep httpd | awk '$3=="1" {print $2}'
 
 httpdの親プロセスのプロセスIDを取得している

9.特定のプロセスを停止する

8.の親プロセスのプロセスID取得の応用版

 # kill `ps -ef | grep httpd | awk '$3=="1" {print $2}'`
 「httpdのプロセスのうちでPPIDが1であるPIDを停止する」
 
 httpdプロセスを停止

又は、、、

 # kill `ps -ef | grep -m1 httpd | awk '{print $2}'`
 「httpdのプロセスのうちで一番最初にリストアップされるPID(親IDのPID)であるPIDを停止する」
 
 同様に、httpdプロセスを停止

| | コメント (0)

2007/06/13

Excel tips ~桁数での文字列取り出し~

5桁の文字列から右から3桁の文字列を取り出したくて悩みまくって見つけた関数。

 RIGHT(文字列,取り出す桁数)・・・文字列から右N桁を取り出す
 LEFT(文字列,取り出す桁数)・・・文字列から左N桁を取り出す

奥深いぜ、Excel。

| | コメント (0)

2006/11/20

小人との格闘、、、(1)

たまには技術的なことも書かねば、、、。(といつも言っている。)

以前からサーバーやネットワーク機器の提供するサービスやその機器のリソースを監視するツールに興味があってイロイロと探していたのであるが、ひとまず、BigBrother(http://www.bb4.org/)をいじっていたりしたのであるが、最近になってhobbitという何ともかわいい名前のツールに興味が湧いてきている。

このhobbitの特徴としては、なんと、BigBrotherの機能拡張版という位置付けでBigBrotherの設定がほぼそのまま使えるというところにあると、、、個人的には思う。

つーことで、、、インストールから、、、各種設定を、、、書いていこうと思ったけど止めた。それは、今月発売されたSoftwareDesign誌にガッツリと取り上げられていたから。そっちの方が正しい情報が記載されていると思うのでそっちを参考にして頂きたく、、、。

だが、個人的にいじってみていくつか気になった点を書いてみることにする。

1.FreeBSD 4.11でMakeするとコケる。
 自宅のFreeBSD 4.11で最新版のhobbit(hobbit-4.2.0)をMakeしようとするエラーでMakeが止まってしまう、、、。FreeBSD 6.2の環境ではすんなりMakeは通るのでFreeBSD 4.x系固有(?)の問題かなーなんて考えている。実際にhobbitのMLにも同様の問題が報告されているようだ。

 Hobbit 4.2.0/FreeBSD 4.10 build error
 http://www.hswn.dk/hobbiton/2006/09/msg00191.html

2.自分スクリプトでの監視結果がグラフに描かれない。
 自分で作ったスクリプトで監視している監視結果がグラフに描かれない、、、どうしても描かれない。それと格闘してこの時間、、、小人はなかなか手強い。自分スクリプトをグラフ化する手順はザックリと以下の通り。
 
  01.自分スクリプトを作成して$HOBBITHOME/client/ext/以下に設置。
  02.$HOBBITHOME/client/etc/clientlaunch.cfgに自分スクリプトを定義。
  03.$HOBBITHOME/server/etc/hobbitserver.cfgのTEST2RRDの設定。
  04.$HOBBITHOME/data/rrd/$hostname/hogehoge.rrdが出力されていることを確認。
  05.$HOBBITHOME/server/etc/hobbitgraph.cfgの設定。

ってな感じ(詳細は別途)なんだが、、、どうしてもグラフが現れてくれんのじゃい、、、。なんでやろう、、、。もうやだ。

一応、自分メモ。

 NCV grpah not displaying
 http://www.hswn.dk/hobbiton/2005/11/msg00278.html

 NCV help!
 http://www.hswn.dk/hobbiton/2006/09/msg00518.html

| | コメント (0)

2006/09/18

Ubuntu Linuxを試してみる(1)

デスクトップ環境で使えるLinux(個人的な解釈ではWindowsの代わりとなって日常生活の中でインターネットやメール、オフィスが使えるLinux)ということでイロイロと調べていたらUbuntu Linuxというのが人気があるらしいので試したみた。

 Linux for Human Beings — Ubuntu Japanese Team
 http://www.ubuntulinux.jp/

インストールはとても簡単で、上記のサイトからisoイメージをダウンロードしてCDに焼き、そのCDでブートすれば、そのCD自体がLiveCDとなっていてそのままCDブートされたUbuntu Linuxが体験出来るようになっている。うんで、インストールアイコンをダブルクリックするだけでインストーラーが起動して普通のLinuxをインストールするように最低限の設定項目を設定した上でパッケージのインストール、Xの設定まで終わってしまった、、、。あっけないと言っちゃあっけないのであるがそれくらい簡単ではないとデスクトップ環境としてWindowsに対抗出来ないのかなあなんて思ったり、、、。

早速、FirefoxやOpenOfficeなどいじってみたが動作も軽い。実はUbuntu Linuxを試す前にSUSE Linux Enterprise Desktop 10(あまりに長い名称なので以下、SLED10)を試したのであるがこれが重いのなんのって、、、。決して、SLED10が悪い訳ではなく2年ほど前のceleronのCPUに192MBの物理メモリが搭載されたPCであるからもしかするとハードウェア要件を満たしていなかったのかもしれない。しかし、SLED10は重かった。それにくらべるとUbuntu Linuxは明らかに軽く感じた。

現在、ソフトウェアのアップデート中であるが、まさにWindows Updateと同じようにタスクバーに警告みたいなものが出ていたのでそれをクリックするとウィザードが起動してそのままUpdateが開始された。非常に簡単、、、。

つーことで、しばらく自宅ではMacを使いつつ、このUbuntu Linuxも少し使って感想を書いていこうと考えている。

| | コメント (0)

2006/09/03

Xenを試してみる(2)

Xenを試してみる(1)でとりあえず、ドメイン0が動作するところまでは確認できたが、Xenカーネルで起動するとeth0がifupで、

 ifup: Device eth0 has different MAC address than expected, ignoring.

というメッセージを吐いてeth0が利用出来ない状況だった。
あらためて、起動ログ、ソースコードのアーカイブや、カーネルモジュールがインストールされているディレクトリ等を確認してみると、以下のような状態であることに気付いた。

 1.Xenカーネルではない通常のカーネルでは、
  NICのドライバはsis900というドライバであるようだ。
  ↓
  /lib/modules/eth0起動するカーネル/kernel/drivers/net以下に、
  sis900.koというカーネルモジュールが存在する。

 2.XenカーネルではNICのドライバはe100になっている。
  ↓
  ブートメッセージを眺めていると「e100.c」を読み込んでいるような、
  メッセージが見えた。
  また、/lib/modules/2.6.11.12-xen0/kernel/drivers/以下には、
  netというディレクトリが存在しない、、、。

という状況なので、、、
とりあえず、再度、Xenカーネルを再構築してみることにする。
今回は、src/xen-2.0/2.6.11.12-xen0/.configファイルに、

 CONFIG_SIS900=y

を記述して(コメントアウトされていたものを外して)、再度、

 # make linux26 && make install

を実行してみた。
実行後に、/lib/modules/2.6.11.12-xen0/kernel/drivers/以下を覗いてみたが、相変わらず、netディレクトリが作成されていない状況だった。時間も押し迫っていたので、eth0がちゃんと起動するカーネルのモジュールをコピーしたらどうだろうということで、、、

 # cp /lib/modules/eth0起動するカーネル/kernel/drivers/net* \
 > /lib/modules/2.6.11.12-xen0/kernel/drivers/

と強引にnetディレクトリをコピー。その後、

 # rm /boot/initrd-2.6.11.12-xen0
 # modprobe 2.6.11.12-xen0
 # mkinitrd /boot/initrd-2.6.11.12-xen0.img 2.6.11.12-xen0

としてみた。
その後、おもむろにサーバー再起動を実施したところ、、、

 やったー。

Xenカーネルで起動して、且つ、NICが認識されているバイ。
さっそく、xendを起動してみる。

 # services xend start

ついで、Xenの動作状況も確認してみる。

 # /usr/sbin/xm list
 Xen_20060903_1

とりあえず、ドメイン0も起動するし、NICも認識するようになったし、、、ということで、今後はドメインUの構築等ちまちまとやってこうと考えておりまする、、、。

| | コメント (1)

2006/08/26

Xenを試してみる(1)

ちょっと、ちょっと、たまには技術的な事も書きなさいよ(by おすぎとピーコ)ではないが、以前から興味があった仮想環境Xenを自宅で試してみた。

倉庫に入れておいた、過去に自宅サーバーとして活躍してくれたミニタワーPCと2002年の正月に初めてカードで購入した液晶モニタを引っ張りだしてきて、、、初めて、自宅にPS/2キーボードが無い事に気付くもMacminiのUSBキーボードをサクッと認識してくれたからそれを使うことにする。

尚、Xenの詳細については自分が語っても信憑性がないので下記のようなサイトを参考にして頂きたい。

 仮想化技術のアプローチと実装〜 VMwareから要注目技術Xenまで 〜
 http://www.atmarkit.co.jp/flinux/special/vm/vm02.html

 Xen
 http://pocketstudio.jp/linux/?Xen

ここでは、ワタシの手元にあった環境にてXenを試した時のやったことをコピペ感覚で書いただけなので全く参考にならないことをご容赦頂きたい。

早速、ドメイン0環境(VMwareとかで言うところのホストOS)の構築から、、、。
今回はCentOS 4.3(CentOS-4.3.ServerCD-i386.iso)を利用した。

 01.CentOSを最小インストール
 02.yum update-checkしてアップデート出来るパッケージを確認
 03.yum updateしてパッケージをアップデート

次に、Xen対応のカーネルを、、、。

 01.iprouteがインストールされているか確認する

  # rpm -qa | grep iproute

  インストールされていなければインストールする。

  # yum install iproute

 02.sysfsutilsとbridge-utils、python-devのインストール

  # yum install sysfsutils
  # yum install bridge-utils
  # yum install python-devel

 03.Xenのソースコードを取得する

  $ wget http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-2.0.7-src.tgz

 04.おもむろにmakeするが開発環境がインストールされていなかったのでこける。

  $ make linux26

 05.最小構成のCentOSに開発環境をインストールする

  # yum groupinstall "Development Tools"

 06.あらためてmakeする

  $ make linux26

 07.make installする

  $ su
  # make install

 08.Xenカーネルでドメイン0を起動するべくinitrdを作成する

  # /sbin/depmod 2.6.11.12-xen
  # /sbin/mkinitrd /boot/initrd-2.6.11.12-xen.img 2.6.11.12-xen

  ※initrd(イニシャルRAMディスク)とは、、、
   カーネル起動時に各種モジュールを読み込む処理などを行う為に、
   用いられる一時的なルートディスクのこと、、、らしい。

 09./etc/grub.confの設定

  Xenカーネル、モジュールとしてドメイン0が起動するように、
  ブートローダー(grub)の設定を行う。

  # vi /etc/grub.conf
  -------------------------------------------------------
  title CentOS 4.3 Xen
   root(hd0,0)
   kernel /xen.gz dom0_mem=128000
   module /vmlinz-2.6.11.12-xen root=/dev/hda3 ro console=tty0
   module /initrd-2.6.11.12-xen.img
  -------------------------------------------------------

 10.サーバーの再起動を行う

  # shutdown -r now

 11.grubが起動したらXenカーネルを選択する
 12.無事にログインプロンプトまで辿り付く
 13.おもむろにuname -aをしてみる

  $ uname -a

  060827204754

  Xenカーネルで起動している、、、やったー、、、。
  画像でごめんなさい。(理由は後述)

 14.早速、Xenを起動してみる

  # /sbin/services xend start

 15.xendが起動しないばい、、、

  # /sbin/services xend start

  エラーメッセージを見ると、どうやら、
  twisted.webがなんちゃらかんちゃらと言っているようだ、、、。
  そういえば、twistedって入れたっけなーと思い出してみる。
  うーん、CentOSの開発環境をインストールした際に、
  インストールしたとばかり思っていたのだが、、、

 16.twistedをインストールする

  $ wget http://tmrc.mit.edu/mirror/twisted/Twisted/2.4/Twisted-2.4.0.tar.bz2
  $ bunzip2 Twisted-2.4.0.tar.bz2
  $ cd Twisted-2.4.0
  $ cd TwistedWeb-0.6.0
  $ python setup.py build
  $ su
  # python setup.py install

 17.気を取り直してもう一度、、、

  # /sbin/services xend start

  これまでのエラーメッセージが出力されなくなった、、、。おお、もしかして。

 18.xm listで状況を確認すると、、、。

  # xm list
 
  060827205956

  おお、ちゃんと、ドメイン0が起動している、、、。
  また、また、画像でごめんなさい、、、。

ということで、ドメイン0の起動に無事成功したが下記の問題が未解決となっている、、、。

 ・eth0が立ち上がらないのでネットワークにつながらない、、、。

致命的な問題である。ネットワークに繋がらなければリモートからの設定が全く出来ない。原因は調査中なのであるが、/var/log/boot.logを見ると、、、

 ifup: Device eth0 has different MAC address than expected, ignoring.

というメッセージが残っていた、、、。MACアドレス、、、。うーむ、、、。

| | コメント (0)

2006/08/17

Mac OS XのApacheでhttpsを使う

自宅サーバーのApacheでhttpsを喋らせたい衝動にかられたので、情報収集をしているとすぐに以下のサイトを発見。非常にわかりやすく丁寧。コピペでオッケーだった、、、。

 Mac OS XでSSL/TLSサーバ
 http://homepage1.nifty.com/glass/tom_neko/web/web_ssl.html

ただし、ポイントが一点あって、、、
コントロールパネル>共有>ファイヤーウォールにてhttpsを許可する設定にしなければ、いつまでたってもhttps接続が出来ないので注意する必要があります。

とりあえず、要点だけかいつまんでまとめてみると、、、(実際の設定は↑のサイトを参考のこと)

 1.乱数の種となるデータファイルの作成する
 2.RSAの秘密鍵、公開鍵、CSRを生成する
 3.自分がCAになるようにCA証明書を作成する
 4.2.で作成したCSRを以て、CAとしてサーバー証明書を作成する
 5.httpd.confを設定する

という流れ。
これまで、なんどかCSRの生成して、公的なCAに送ったりしたことはあったが、初めて自分がCAになった上でサーバー証明書を作成したみた。初めての経験なので、とりあえず、やり方をメモっておこう。必要なものとしてはmod_sslが必要。

 kappa$ curl -O http://www.modssl.org/source/mod_ssl-2.8.28-1.3.37.tar.gz
 kappa$ tar zxvf mod_ssl-2.8.28-1.3.37.tar.gz
 kappa$ cd mod_ssl-2.8.28-1.3.37
 kappa$ cd pkg.contrib
 kappa$ ./sign.sh CSRを生成したディレクトリ/CSRファイル.csr

こんな感じでオッケー、、、もちろん事前になんちゃってCAになっておく必要はある。

| | コメント (0)

2006/08/02

お家でサーバー

勉強を兼ねて、自宅にサーバーを構築してみた。

 かっぱ、あほあほ。 
 http://www.inokara.org/kappa_ahoaho

コンテンツ、何もありません。お宝画像なんてありません。

| | コメント (0)