2009年8月20日木曜日

MySQL5.1でfederatedエンジンを有効にする

こんにちわ、俺@仕事中です。
MySQL5.1.3のFederatedエンジンでハマりました(汗

MySQL5.1でfederatedエンジンを有効にするには、configureオプションで
# ./configure --with-plugins=max
または
# ./configure --with-plugins=federated
または
# ./configure --with-plugin-federated
としなければなりません。
詳しくは
# ./configure --help
で。

上記でインストールしたのですが、
# mysql
mysql> show engines;
+------------+---------+--------------+------+------------+
| Engine | Support | Transactions | XA | Savepoints |
+------------+---------+--------------+------+------------+
| MRG_MYISAM | YES | NO | NO | NO |
| CSV | YES | NO | NO | NO |
| FEDERATED | NO | NULL | NULL | NULL |
| MyISAM | DEFAULT | NO | NO | NO |
| MEMORY | YES | NO | NO | NO |
+------------+---------+--------------+------+------------+
5 rows in set (0.00 sec)
あれ?
mysql> show plugins;
+------------+----------+----------------+---------+---------+
| Name | Status | Type | Library | License |
+------------+----------+----------------+---------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
+------------+----------+----------------+---------+---------+
7 rows in set (0.00 sec)
と、うんこな結果に。

configureオプションを色々と変えて試してみてもダメ。さらにMySQLはmakeに結構な時間がかかるので、いちいち試してもいられない。

という事で「ウンコー!」と叫びながら、mysqldを起動する際に
# service mysqld start --federated
とやると、federatedエンジンが有効になりました。

configureオプションは
# ./configure --with-plugins=max
または
# ./configure --with-plugins=federated
または
# ./configure --with-plugin-federated
でOKでし。

以上でええす。

2009年8月19日水曜日

opensslを使って秘密鍵と証明書の作成

どうも、俺@仕事中。今日3度目の投稿です。

linuxのopensslを使って秘密鍵とサーバ証明書を作成する場面に出くわしたのでメモります。

まず適当なディレクトリ作成
# mkdir /etc/ssl
# cd /etc/ssl


サーバの秘密鍵を作成
# openssl genrsa -out server.key 1024

署名要求書の作成
# openssl req -new -key server.key -out server.csr
----------
Country Name (2 letter code) [GB]:JP  // 国名
State or Province Name (full name) [Berkshire]:Osaka  // 県名
Locality Name (eg, city) [Newbury]:Osaka  // 市
Organization Name (eg, company) [My Company Ltd]:XX.company  // 会社名、所属組織名
Organizational Unit Name (eg, section) []:develop  // 会社の所属先
Common Name (eg, your name or your server's hostname) []:koexuka.blogspot.com  // サーバのホスト名 この値は超重要
Email Address []:info@koexuka.blogspot.com  // メアド
A challenge password []:  // パスワードいらなければそのままEnter
An optional company name []:  // これもEnter

通常はココで生成されたserver.csrをベリサインとかに送ってサイト証明書を発行してもらうのですが、今回はその処理も自サーバで行います。

では、自サーバが認証局となったつもりで認証局の秘密鍵を作成します。
# openssl genrsa -out ca.key 1024

認証局の証明書を作成します。
# openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
----------
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Osaka
Locality Name (eg, city) [Newbury]:Osaka
Organization Name (eg, company) [My Company Ltd]:XX.company
Organizational Unit Name (eg, section) []:develop
Common Name (eg, your name or your server's hostname) []:www.koexuka.blogspot.com
  // ココが上で要求証明書を作成したときのホスト名と違う必要があります
Email Address []:info@koexuka.blogsport.com

これで認証局側の鍵(ca.key)と証明書(ca.crt)ができました。

認証局となったつもりは終わって、通常のサーバに戻ります。
シリアルを作成します。
# echo 01 > serial.txt

認証局証明書付き自サーバ証明書の作成
# openssl x509 -CA ca.crt -CAkey ca.key -CAserial serial.txt -req -days 3650 -in server.scr -out server.crt
これで自サーバ証明書(server.crt)ができました。


めでたし、めでたし!

dovecotで'Support not compiled in for passdb drive 'pam''が出る

こんちわ、俺@また仕事中です。
dovecotを入れて起動させたら、タイトルの通り
Aug 19 17:02:01 dovecot: Info: Dovecot v1.2.4 starting up (core dumps disabled)
Aug 19 17:02:01 auth(default): Fatal: Support not compiled in for passdb driver 'pam'
Aug 19 17:02:01 dovecot: Fatal: Auth process died too early - shutting down
というエラーが発生しました。

OSはCentOS5.3
dovecotはdovecot-1.2.4です。

エラー内容は、適当和訳すると「passdbドライバーの'pam'は、コンパイルをサポートしていません?」みたいな感じか。

$ /usr/local/sbin/dovecot --build-options
と打ってみると
Build options: ioloop=epoll notify=inotify ipv6 openssl
Mail storages: cydir dbox maildir mbox raw shared
SQL drivers:
Passdb: checkpassword passwd passwd-file shadow
Userdb: nss passwd passwd-file prefetch static
とあったので、
$ vim /usr/local/etc/dovecot.conf
でdovecot.confを開き
#passdb pam {  // passdb pamの行をコメントアウト
passdb shadow {  // passdb shadowに書き換え
でちゃんと起動しました。
↑はコメントアウトだけでも良いですね。

英語力のなさを感じました。

`ls`コマンドでの色についてメモ

こんにちわ、俺@仕事中です。
今日はLinuxサーバのターミナルで
$ ls --color
した時の色の設定についてメモします。

色表示はデフォルトでは「/etc/DIR_COLORS」に書かれているものを読み込んで決めている(?)そうなのですが、たまにサーバによって「いつもと色がちゃうやないか!」て事があります。

気にしない人はそれでも良いのですが、
気になる人はログインユーザの~/.bashrc(または~/.tcshrc)に
$ vim ~/.bashrc
LS_COLORS='色の設定いろいろ'
export LS_COLORS
を書けばよかです。

LS_COLORSの内容は
$ dircolos -b
したものをコピペでOKです。
※-bオプションはBシェル用。-cオプションはCシェル用。

拡張子毎の色設定や、ファイルタイプ毎の色設定が可能です。
例えば、通常ファイルの色を白にする場合は
fi=00:
です。
ディレクトリの色を文字色黒、背景色緑にする場合は
di=30;42:
です。
拡張子tarの色を太い赤文字にする場合は
*.tar=01;31:
です。



以上でぇぇす。

2009年8月5日水曜日

sshでログインできない

俺@仕事中です。
今日はインストール直後のサーバにSSHログイン出来なかった場合の起こりうるミスについてメモります。
※実際おこりました、、。

サーバ側の/var/log/messagesに
# less /var/log/messages
Aug 5 11:14:17 data1 sshd(pam_unix)[15652]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx-xxx-xxx-x.yyy.yy-yyyyy.yy.jp user=foouser
Aug 5 11:14:30 data1 sshd(pam_unix)[15654]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx-xxx-xxx-x.yyy.yy-yyyyy.yy.jp user=foouser
Aug 5 11:14:56 data1 sshd(pam_unix)[15657]: authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx-xxx-xxx-x.yyy.yy-yyyyy.yy.jp user=foouser

/var/log/secureに
# less /var/log/secure
Aug 5 11:14:17 data1 sshd[15652]: User foouser not allowed because not listed in AllowUsers
が出てる時。

# vim /etc/ssh/sshd_config
AllowUsers allowedusername foouser # ←foouserを追加
して

# service sshd reload
したらログインできます。

以上どぇぇぇす。

2009年8月4日火曜日

rsyncの設定(rsyncd.confなど)

どうも、俺@仕事中です。
今日は超基本中の基本ですが、rsyncの設定・使い方についてメモります。

rsyncはほとんどのLinuxに標準でインストールされている、ファイル転送用?コマンドです。
オプションも色々用意されていて、バックアップやミラーリングなどに便利です。
http://www.infoscience.co.jp/technical/rsync/

僕の利用しているLinuxディストリはCentOs4.7です。
rsyncコマンドはインストールされているものとします。

rsyncデーモン側(rsyncd)で/etc/rsyncd.confという設定ファイルを作成します。
# vim /etc/rsyncd.conf
----------------
hosts allow = 127.0.0.1 192.168.1.0/24 // ←許可するrsyncクライアントIP
hosts deny = * // ←拒否するrsyncクライアントIP *は全て
use chroot = false // ←chrootするかどうか。trueの場合は `path = /PATH`で指定したパスでchrootする
read only = false // ←read-onlyにするかどうか。trueの場合はクライアント側からのアップロードができない
[my_module_name] // ←モジュール名 モジュール毎に細かい設定をする場合
uid = nobody // ←モジュールでのユーザ名
gid = nobody // ←モジュールでのグループ名
path = / // ←デフォルトのパス
comment = this is comment. // ←コメント
で、rsyncdを再起動します。
# service xinetd restart


では、実際にrsyncコマンドを使う場合は
<サーバA>クライアントIP(192.168.1.1)
<サーバB>デーモンIP(192.168.1.2)

サーバA
$ rsync -avz /home/from/data/ 192.168.1.2::my_module_name/home/to/data/

でサーバA(/home/from/data)からサーバB(/home/to/data)へファイルが転送されます。
書式は
$ rsync [OPTION] 転送元PATH 転送先IP:[:モジュール名]転送先PATH
です。
ちなみにサーバAで
/home/from/data/とするのと/home/from/dataとするので動作が違うので要注意です。

/home/from/data/(スラッシュあり)の場合は、/data内のファイルだけが
/home/from/data(スラッシュなし)の場合は、/data内のファイルと/dataディレクトリ自体が
転送の対象となります。

以上どぇぇ~す。